Aller au contenu

CadFrank

Membres
  • Compteur de contenus

    141
  • Inscription

  • Dernière visite

Tout ce qui a été posté par CadFrank

  1. J'était entrein de faire de la rechercher et je suis tomber sur une de tes anciens poste offre tu en se moment des cours ?
  2. C'est magic sa fonctionne !!!!!
  3. En effet, ce que je trouve domage c'est que je ne sais pas trop quoi faire comme petit program pour m'aider. Je n'est que eu un cour pour de l'introduction en lisp. les codes que tu ma fournie sont bien complexe pour ma mon degrée de lispeur mais je veux apprend si tu as des sites ou des livres a me reférer je suis prenant :D Le domaine dans lequel je travail n'a pas de porte facile hehe! Bon sur ce je vais faire les modifications. Merci !
  4. Désolé, pour le délai. La réponse est nil. Donc, si je lit bien les commentaire il na rien trouver. Par contre, je vien de voir qu'il faut i inscrit le chemin du fichier dans gc:GetAxDbDoc. Mais je ne suis pas sur de ou dans se code je dois le placer. A moin que l'argument retourner ici est la celle du code. Donc ce code retourne le chemin pour le donner a gc:ImportBlock. Est-ce que je me trompe? Je vien aussi d'essayer de changer : (gc:ImportBlock "ALUMA" "cadre.dwt") par : (gc:ImportBlock "ALUMA" "L:\TECHNIQUE (L2)\TEMPLATE\cadre.dwt") Aucun changement tourjour nil.
  5. Je vien d'importer le block a partir de mon autre dessin et sa fonctionne. Je crois que le program ne va pas chercher le block dans le fichier. Est-ce que je dois avoir le fichier d'ouvert ? mon emplacement pour les templates n'est pas a la meme place que celle fournie par autocad. j'ai modifier l'emplacement originale. Est-ce que cela pourrait causer problem.
  6. Bon c'est bizarre.. ya plus rien qui se passe maintenant.. mon block apparait pas et la command arret.
  7. Je l'ai essayer :(, Mais je vien de voir que j'avais pas bien placer une parenthèse ...
  8. bon maintenant j'ai un code d'erreur !! ; error: too many arguments ;;; gc:GetAxDbDoc ;;; Accéder à un dessin fermé. ;;; Version compatible A2013 utilise les fonctions de irneb @ TheSwamp ;;; DLLRegister, ProgID->ClassID et DBX-Register ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 ;;; ;;; Retourne : ;;; un objet IAxDbDocument si le document est trouve ;;; nil si le document n'a pu être trouvé ou s'il est ouvert. ;;; ;;; Argument : ;;; Le chemin complet du fichier ;;; ;;; Exemple d'utilisation : ;;; (if (setq doc (gc:GetAxDbDoc filename)) ;;; (progn ;;; ... ;;; ... ;;; (vlax-release-object doc) ;;; ) ;;; ) (defun gc:GetAxDbDoc (filename / classname axdbdoc) (vl-load-com) (if (and (setq classname (DBX-Register nil nil)) (setq axdbdoc (vlax-create-object className)) ) (if (vl-catch-all-apply 'vla-open (list axdbdoc filename) ) (not (vlax-release-object axdbdoc)) axdbdoc ) ) ) ;;; Calls REGSVR32 to Register a DLL silently ;;; irneb @ TheSwamp ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 (defun DLLRegister (dll) (startapp "regsvr32.exe" (strcat "/s \"" dll "\""))) ;;; Returns the ProgID for a given ClassID if found in registry ;;; irneb @ TheSwamp ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 (defun ProgID->ClassID (ProgID) (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID"))) ;;; Try to Register ObjectDBX if not done so already ;;; Returns the Class Name if already registered / sucessfully registered ;;; Else returns nil if failure ;;; irneb @ TheSwamp ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 (defun DBX-Register (classname filename / server acver) (cond ((not (and classname filename)) (DBX-Register (strcat "ObjectDBX.AxDbDocument." (itoa (setq acver (atoi (getvar 'ACadVer))))) (strcat "AxDb" (itoa acver) ".dll") ) ) ((ProgID->ClassID classname) classname) ((setq server (findfile filename)) (cond ((and (DLLRegister server) (ProgID->ClassID classname)) classname) (t nil) ) ) (t (DBX-Register "ObjectDBX.AxDbDocument" "AxDb.dll")) ) ) ;; GetItem ;; Retourne le vla-object de l'item s'il est présent dans la collection (ou nil). ;; ;; Arguments ;; col : la collection (vla-object) ;; name : le nom de l'objet (string) ou son indice (entier) (defun gc:GetItem (col name / obj) (vl-catch-all-apply (function (lambda () (setq obj (vla-Item col name)))) ) obj ) ;; gc:ImportBlock ;; Importe le bloc dans le dessin courant depuis le fichier. ;; ;; Retourne ;; T si l'opération a réussi, nil sinon. ;; ;; Arguments ;; blockName : le nom du bloc à importer ;; filename : le nom du fichier source ;; (le chemin complet si le fichier n'est pas dans les chemins de recherche) (defun gc:ImportBlock (blockName filename / file doc blk) (vl-load-com) (if (and (setq file (findfile filename)) (setq doc (gc:GetAxDbDoc filename)) ) (progn (if (setq blk (gc:GetItem (vla-get-Blocks doc) blockName)) (not (vlax-invoke doc 'CopyObjects (list blk) (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ) ) (vlax-release-object doc) ) ) ) ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ CE PROGRAM EST CONÇU POUR COFFRER ¦¦¦; ;¦¦¦ UNE DALLE DE BÉTON ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ AUTEUR : CadFrank, Copyright ® 2012 ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les calques ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun NouveauCalque(/ lay) (foreach lay '("-LU BOIS" "-LU CONTREPLAQUE") (if (not (tblsearch "LAYER" lay)) (progn (command "_layer" "_n" "-LU BOIS" "_C" "41" "-LU BOIS" "" "") (Command "_layer" "_n" "-LU CONTREPLAQUE" "_C" "40" "-LU CONTREPLAQUE" "" "") ) );if );foreach ); fin NouveauCalque ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametreinitial () (setq retour (list (cons "osmode" (getvar 'osmode)) (cons "clayer" (getvar 'clayer)) ) ) (setvar 'OSMODE 0) retour ; la dernière expression est retournée par la fonction ); fin parametreinitial ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program remet les ¦¦¦; ;¦¦¦ parametres initial ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Parametrefin (retour) (foreach p retour (setvar (car p) (cdr p)) ) );fin parametrefin ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ PROGRAM PRINCIPAL ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun c:cofd (/ pt1 pt2 p1 pt4 pt5 dist1 div1 div2 div3 div4 espac1 d-sol i) (NouveauCalque) (setq pt1 (getpoint "\n Selectionner le premier point : ")) (setq pt2 (getpoint pt1 "\n Sélectionner le deuxième point : ")) (setq init (Parametreinitial)) (setq pt3 (list (car pt2) (- (cadr pt2) 20) 0)) (setvar "clayer" "-LU CONTREPLAQUE") (command "_rectangle" pt1 pt3) (if (> (car pt1) (car pt2)) (progn (setq pt4 (list (- (car pt1) 65) (- (cadr pt1) 20))) (setq pt5 (list (+ (car pt2) 65) (- (cadr pt2) 20))) ) (progn (setq pt4 (list (+ (car pt1) 65) (- (cadr pt1) 20))) (setq pt5 (list (- (car pt2) 65) (- (cadr pt2) 20))) ) ) (setq dist1 (distance (list (car pt4) (cadr pt4)) (list (car pt5) (cadr pt5)))) (setq espac1 (getreal "\n Déterminer l'espacement maximale des solives [400] : ")) (or espac1 (setq espac1 400)) (initget 1 "4x4 A") (setq d-sol (getkword "\n Choisir le type de solive [4x4/Aluma] ")) (if (= d-sol "4x4") (progn (not (tblsearch "BLOCK" "4x4")) (entmake '((0 . "BLOCK") (2 . "*U") (10 45 90 0) (70 . 1))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 0 0) (11 90 0))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 90 0) (11 90 90))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 90 90) (11 0 90))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 0 90) (11 0 0))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 0 0) (11 90 90))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 90 0) (11 0 90))) (setq blkb (entmake '((0 . "ENDBLK") (8 . "-LU BOIS")))) ) (progn (setq blkb "ALUMA") (not (tblsearch "BLOCK" blkb) (gc:ImportBlock "ALUMA" "cadre.dwt") ) ) ) (setq div1 (/ dist1 espac1)) (setq div2 (1+ div1)) (setq div3 (fix div2)) (setq div4 (/ dist1 div3)) (setq i 1) (repeat (1- div3) (entmake (list (cons 0 "INSERT")(cons 2 blkb) (cons 10 (polar pt4 (angle pt4 pt5) (* div4 i))) (cons 41 1) (cons 42 1) (cons 43 1))) (setq i (1+ i))) (parametrefin init) (prin1) );fin je suis pas trop sur comment appliquer le code que tu m'a fourni pour qu'il fonctionne.
  9. Ah c'est une vrai joke!! pourquoi j'ai pas penser a 'osmode ... Je suis bête des fois
  10. AARRRGGG ! Je comprend pas pourquoi mon rectangle se fais au pt2 et non au pt3... ! On dirait que le code ne garde pas en mémoire le pt3 je ne sait pas trop.
  11. Bon et bien j'ai modifier mon code du début avec se que je pensais qui allais fonctionner. Maintenant, on m'affiche un code d'erreur. ; error: bad function: "cadre.dwt" Donc je ne suis par sur quoi faire rendu la ! p-e que la maniere dont j'ai ecrit la portion de code qui manquais.
  12. Bien Merci ! Je me demandais y a-t-il quelqu'un de québec sur ce forum :D
  13. Donc je peux l'utiliser... ?
  14. Je regarde le tout et sa me semble complexe. Est-ce que je dois Changer filename par le nom du fichier du genre "cadre.dwt" et BlockName par "Aluma" ? ou bien le programme le trouve?
  15. ;;; gc:GetAxDbDoc ;;; Accéder à un dessin fermé. ;;; Version compatible A2013 utilise les fonctions de irneb @ TheSwamp ;;; DLLRegister, ProgID->ClassID et DBX-Register ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 ;;; ;;; Retourne : ;;; un objet IAxDbDocument si le document est trouve ;;; nil si le document n'a pu être trouvé ou s'il est ouvert. ;;; ;;; Argument : ;;; Le chemin complet du fichier ;;; ;;; Exemple d'utilisation : ;;; (if (setq doc (gc:GetAxDbDoc filename)) ;;; (progn ;;; ... ;;; ... ;;; (vlax-release-object doc) ;;; ) ;;; ) (defun gc:GetAxDbDoc (filename / classname axdbdoc) (vl-load-com) (if (and (setq classname (DBX-Register nil nil)) (setq axdbdoc (vlax-create-object className)) ) (if (vl-catch-all-apply 'vla-open (list axdbdoc filename) ) (not (vlax-release-object axdbdoc)) axdbdoc ) ) ) ;;; Calls REGSVR32 to Register a DLL silently ;;; irneb @ TheSwamp ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 (defun DLLRegister (dll) (startapp "regsvr32.exe" (strcat "/s \"" dll "\""))) ;;; Returns the ProgID for a given ClassID if found in registry ;;; irneb @ TheSwamp ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 (defun ProgID->ClassID (ProgID) (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID"))) ;;; Try to Register ObjectDBX if not done so already ;;; Returns the Class Name if already registered / sucessfully registered ;;; Else returns nil if failure ;;; irneb @ TheSwamp ;;; http://www.theswamp.org/index.php?topic=40871.msg461180#msg461180 (defun DBX-Register (classname filename / server acver) (cond ((not (and classname filename)) (DBX-Register (strcat "ObjectDBX.AxDbDocument." (itoa (setq acver (atoi (getvar 'ACadVer))))) (strcat "AxDb" (itoa acver) ".dll") ) ) ((ProgID->ClassID classname) classname) ((setq server (findfile filename)) (cond ((and (DLLRegister server) (ProgID->ClassID classname)) classname) (t nil) ) ) (t (DBX-Register "ObjectDBX.AxDbDocument" "AxDb.dll")) ) ) ;; GetItem ;; Retourne le vla-object de l'item s'il est présent dans la collection (ou nil). ;; ;; Arguments ;; col : la collection (vla-object) ;; name : le nom de l'objet (string) ou son indice (entier) (defun gc:GetItem (col name / obj) (vl-catch-all-apply (function (lambda () (setq obj (vla-Item col name)))) ) obj ) ;; gc:ImportBlock ;; Importe le bloc dans le dessin courant depuis le fichier. ;; ;; Retourne ;; T si l'opération a réussi, nil sinon. ;; ;; Arguments ;; blockName : le nom du bloc à importer ;; filename : le nom du fichier source ;; (le chemin complet si le fichier n'est pas dans les chemins de recherche) (defun gc:ImportBlock (blockName filename / file doc blk) (vl-load-com) (if (and (setq file (findfile filename)) (setq doc (gc:GetAxDbDoc filename)) ) (progn (if (setq blk (gc:GetItem (vla-get-Blocks doc) blockName)) (not (vlax-invoke doc 'CopyObjects (list blk) (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ) ) (vlax-release-object doc) ) ) ) ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ CE PROGRAM EST CONÇU POUR COFFRER ¦¦¦; ;¦¦¦ UNE DALLE DE BÉTON ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ AUTEUR : CadFrank, Copyright ® 2012 ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ PROGRAM PRINCIPAL ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun c:cofd (/ pt1 pt2 pt3 pt4 pt5 dist1 div1 div2 div3 div4 espac1 d-sol i) (setq pt1 (getpoint "\n Selectionner le premier point : ")) (setq pt2 (getpoint pt1 "\n Sélectionner le deuxième point : ")) (setq pt3 (list (car pt2) (- (cadr pt2) 20))) (if (> (car pt1) (car pt2)) (progn (setq pt4 (list (- (car pt1) 65) (- (cadr pt1) 20))) (setq pt5 (list (+ (car pt2) 65) (- (cadr pt2) 20))) ) (progn (setq pt4 (list (+ (car pt1) 65) (- (cadr pt1) 20))) (setq pt5 (list (- (car pt2) 65) (- (cadr pt2) 20))) ) ) (setq dist1 (distance (list (car pt4) (cadr pt4)) (list (car pt5) (cadr pt5)))) (setq espac1 (getreal "\n Déterminer l'espacement maximale des solives [400] : ")) (or espac1 (setq espac1 400)) (initget 1 "4x4 A") (setq d-sol (getkword "\n Choisir le type de solive [4x4/Aluma] ")) (if (= d-sol "4x4") (progn (not (tblsearch "BLOCK" "4x4")) (entmake '((0 . "BLOCK") (2 . "*U") (10 45 90 0) (70 . 1))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 0 0) (11 90 0))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 90 0) (11 90 90))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 90 90) (11 0 90))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 0 90) (11 0 0))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 0 0) (11 90 90))) (entmake '((0 . "LINE") (8 . "-LU BOIS") (10 90 0) (11 0 90))) (setq blkb (entmake '((0 . "ENDBLK") (8 . "-LU BOIS")))) ) (progn ;(not (tblsearch "BLOCK" "ALUMA") ;(gc:ImportBlock "ALUMA" "cadre.dwt")) (setq blkb "ALUMA") ) ) (setq div1 (/ dist1 espac1)) (setq div2 (1+ div1)) (setq div3 (fix div2)) (setq div4 (/ dist1 div3)) (setq i 1) (setvar "clayer" "-LU CONTREPLAQUE") (command "_rectangle" pt1 pt3) (repeat (1- div3) (entmake (list (cons 0 "INSERT")(cons 2 blkb) (cons 10 (polar pt3 (angle pt3 pt4) (* div4 i))) (cons 41 1) (cons 42 1) (cons 43 1))) (setq i (1+ i))) (prin1) );fin
  16. CadFrank

    redefinir un block

    Un gros MERCI Gile. Je vais tanté d'améliorer ma routine avec d'autre option. un jour va falloir que j'y rajoute un DCL hehe mais je dois pour le moment me concentrer sur le Lisp. Bon sur ce je vais analysé le tout et essayer de mieux comprendre. Par contre, tes explications sont clair. Merci encore.
  17. CadFrank

    redefinir un block

    Autrement dit faire le moin de sous program possible ?
  18. CadFrank

    redefinir un block

    Bonjour Patrick, mon problem n'est pas exactement cela. Je sais comment faire la commande pour redéfinir. Je me suis p-e mal exprimé. En prenant compte que la premiere fois qu'on utilise le program "routine" le block n'existe pas. La commande ci-haut fonctionne. Mais plutard dans le meme dessins si je veux le recréer avec ma routine on me demande de redéfénir. Voila ou sa bloque. Donc, j'ai essayer avec tblsearch et if sa ne marche pas ainsi j'ai essayé Not et Or. Pas plus ! Toujour un message d'erreur qui apparait hehe! Donc je cherche juste a savoir si j'aurais d'autre chemin a utilisé pour m'y rendre ! Voici voila mon problem ! Fin !
  19. CadFrank

    redefinir un block

    Merci Olivier pour ton information. Je vais modifier le tout. Par contre, pour le question principale aurait tu une idee de se que je devrais faire ? Bon Matin !
  20. Bonjour, J'ai encore besoin d'un peu d'aide avec un petite routine que je fais. La voici : ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ CE PROGRAM EST CONÇU POUR FAIRE ¦¦¦; ;¦¦¦ LA COUPE DE BOIS ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ AUTEUR : CadFrank, Copyright ® 2012 ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les calques ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun NouveauCalque () (if (not (tblsearch "LAYER" "-LU BOIS")) (Command "_layer" "_n" "-LU BOIS" "_C" "41" "-LU BOIS" "" "") ) ); fin NouveauCalque ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les dimensions ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun parametre () (setq dist1 20) (setq dist2 38) (setq dist3 64) (setq dist4 90) (setq dist6 140) (setq dist8 190) (setq dist10 241) ); fin parametre ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les questions ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun question ( / val d1 d2) (initget 1 "2x3 2x4 2x6 2x8 2x10 4x4 4x6") (setq val (getkword "\n choisir la dimension du bois [2x3/2x4/2x6/2x8/2x10/4x4/4x6] ")) (if (= val "2x3") (list(setq di1 dist3) (setq di2 dist2))) (if (= val "2x4") (list(setq di1 dist4) (setq di2 dist2))) (if (= val "2x6") (list(setq di1 dist6) (setq di2 dist2))) (if (= val "2x8") (list(setq di1 dist8) (setq di2 dist2))) (if (= val "2x10") (list(setq di1 dist10) (setq di2 dist2))) (if (= val "4x4") (list(setq di1 dist4) (setq di2 dist4))) (if (= val "4x6") (list(setq di1 dist6) (setq di2 dist4))) (setq pt-i (getpoint "\n Déterminer le point d'insertion. ")) (setq p2 (list (+(car pt-i) di1) (+(cadr pt-i) di2))) (setq p3 (list (car pt-i) (+(cadr pt-i) di2))) (setq p4 (list (+(car pt-i) di1) (cadr pt-i))) ); fin question ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ Ce sous-program défini les questions ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun Block (/ bent1 bent2 bent3) (setvar "clayer" "-LU BOIS") (command "_rectangle" pt-i "d" di1 di2 pt-i) (setq bent1 (entlast)) (command "_line" pt-i p2 "") (setq bent2 (entlast)) (command "_line" p3 p4 "") (setq bent3 (entlast)) (command "_block" val pt-i bent1 bent2 bent3 "") ; mon problem est ici !!! ); fin block ;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦; ;¦¦¦ PROGRAM PRINCIPAL ¦¦¦; ;¦¦¦ _______________________________________________________________________ ¦¦¦; (defun c:bois () (NouveauCalque) (Parametre) (Question) (Block) (princ) );fin bois le problem survien quand je refais le meme block. j'ai essayé avec tblsearch mais sa ne fonctionne pas Donc, y-aurait-il d'autre moyen pour y parvenir. Merci !
  21. Encore une fois gile je te remercie de tes conseille. Très apprécié ! Donc, d'après ce que tu as dit des petits programme serait le début de tout. Merci encore Salutations !
  22. Bon j'apprécie tout les commentaires.. bref tout l'info... Comme je suis une peu nouveau à la programmation lisp ou Visual Lisp.. je ne saisit pas toujours ce que les codes dise bien. Je m'explique, je lis les fonction utilisé mais je ne sais pas pourquoi le programmeur les a utilisé. J'aimerais savoir si il y a une approche particulier a utiliser quand je lis un code que je n'ai pas ecrit. Car souvent les codes code on quelque peu de ligne. Je réussi bien a utilisé le Vlide. De plus il y a tellement de fonction différente dans le language que ce n'est pas toujour facile de savoir si c'est le bon. Merci encore !
  23. Re bonjour Bon Bien je savais bien que quelqu'un me comprendrais bien :D Merci X_all. et pour revenir au program je jvoudrais etre capable de le faire par moi meme. Je veux juste etre pointé dans la bonne direction si possible. Le type de fonction que je devrais prendre ou si il est mieu que je le fasse en lisp standard ou bien avec les vla, vlax etc (genre safearray ou variant le genre de tralala!) Et voila!
  24. Umm ben je sais pas comment etre plus clair mais je vais essayer. De un j'ai une bibliothèque de blockdynamic. chaque block a des visibility states. Je veux etre capable de faire le decompte de ses visibilitystate ainsi que des look up. Par contre ce ne sont pas chaque item que je veux compter mais seulement un certaine quantité. Celui de Lee Mac compte tout les blocks du dessin. Ce que je ne veux pas faire. mon but est de faire le décompte des items sur une vue en plan et non sur mes élévations et coupes. Dsl pour l'écrit.
  25. Ce que j'aimerais avoir c'est pas mal la meme chose mais que la liste des blocs choisi pour etre compté sois déterminé
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité