SF.Designer Posté(e) le 3 décembre 2015 Posté(e) le 3 décembre 2015 Bonjour a tous, aujourd'hui je bloque sur la création et l'insertion d'un bloc seulement avec des lisp, sans dwg. Dans un premier temps j'ai des lisp crées grâce au lisp "drawing to lisp" (dwgtolsp), auquel j'ai ajouté les instructions "entmake" pour créer les blocs dans mon dessin. Block_SigneTorsade.lsp (defun EntmakeSigneTorsade nil (entmake '( (0 . "block") (2 . "SigneTorsade") (10 0.0 0.0 0.0) (70 . 2) ) ) (entmakex '( (0 . "LINE") (5 . "163") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 0.0 1.42875 0.0) (11 0.0 2.95013 0.0) (210 0.0 0.0 1.0) ) ) (entmakex '( (0 . "ELLIPSE") (5 . "164") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbEllipse") (10 0.0 0.0 0.0) (11 0.0 1.42875 0.0) (210 0.0 0.0 1.0) (40 . 0.6) (41 . 4.85944) (42 . 7.70693) ) ) (entmakex '( (0 . "POINT") (5 . "186") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPoint") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (50 . 0.0) ) ) (entmakex '( (0 . "POINT") (5 . "188") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbPoint") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (50 . 0.0) ) ) (entmake '((0 . "endblk"))) (princ) ) Dans un second temps, je crée un lisp pour insérer les blocs précédemment crées. BlockInsert.lsp (defun c:InsertSigneTorsade () (progn (cond ((findfile "Block_SigneTorsade.lsp") (SetToDraw) (load "Block_SigneTorsade.lsp") ) ) (vl-cmdf "._-INSERT" "SigneTorsade" pause "1" "1" "0" "") (princ "\n--- Signe Torsade inséré ---\n") (princ) ) ) PS: (SetToDraw) = (setvar "SNAPMODE" 1) + (setvar "SNAPUNIT" '(1 1) + (setvar "OSMODE" 1024) Le 1er problème est que le bloc ne se crée pas dans mon dessin a l'action du lisp entmake.Le 2eme probleme est que l'instruction d'insertion cherche un fichier dwg et non pas dans la bibliotheque de bloc du dessin. Message d'erreur d'autocad : Commande: InsertSigneTorsadeInitialisation..."SigneTorsade.dwg": Impossible de trouver le fichier dans le chemin de recherche Un immense merci d'avance a la personne qui m'aidera a débloquer la situation, j'ai enormement de blocs a créer ainsi
(gile) Posté(e) le 3 décembre 2015 Posté(e) le 3 décembre 2015 Salut, Il me semble que tu charges le fichier LISP, mais que tu ne l'exécute pas. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
SF.Designer Posté(e) le 3 décembre 2015 Auteur Posté(e) le 3 décembre 2015 Et ben tous ça pour ça, je le voyais pas du tout !!! Merci oh grand maitre programmeur Gile ^^, dont je suis voisin ^^, de m'avoir ouvert les yeux !!! Le lisp modifié : (defun c:InsertSigneTorsade () (progn (cond ((findfile "Block_SigneTorsade.lsp") (SetToDraw) (load "Block_SigneTorsade.lsp") (EntmakeSigneTorsade) ) ) (vl-cmdf "._-INSERT" "SigneTorsade" pause "1" "1" "0" "") (princ "\n--- Signe Torsade inséré ---\n") (princ) ) )
(gile) Posté(e) le 3 décembre 2015 Posté(e) le 3 décembre 2015 Tu peux éviter de charger et exécuter systématiquement le LISP en vérifiant si le bloc n'est pas déjà présent dans la table des blocs. (defun c:InsertSigneTorsade () (if (or (tblsearch "BLOCK" "SigneTorsade") (and (findfile "Block_SigneTorsade.lsp") (load "Block_SigneTorsade.lsp") (EntmakeSigneTorsade) ) ) (progn (vl-cmdf "._-INSERT" "SigneTorsade" pause "1" "1" "0" "") (princ "\n--- Signe Torsade inséré ---\n") ) (princ "\n--- Le bloc'SigneTorsade' et le LISP 'Block_SigneTorsade.lsp' sont introuvables ---\n") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
SF.Designer Posté(e) le 3 décembre 2015 Auteur Posté(e) le 3 décembre 2015 Merci Gile pour ce complément !
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant