LUDWIG Posté(e) le 4 avril 2007 Posté(e) le 4 avril 2007 Bonjour, J'ai un lisp qui permet de supprimer toutes les hachures d'un dessin, même dans les blocs : (defun c:effhatch () (vl-load-com) (setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for bl a (vlax-for ent bl (if (= (vla-get-objectname ent) "AcDbHatch") (vla-delete ent) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport) Je voudrais l'adapter pour qu'il ne sélectionne que les hachures "solides", qu'il les passe en couleur ducalque et qu'il les mette sur un calque "hachure". Quelqu'un pourrait m'aider ? [Edité le 4/4/2007 par LUDWIG] Autocad 2021 - Revit 2022 - Windows 10
(gile) Posté(e) le 4 avril 2007 Posté(e) le 4 avril 2007 Salut, Ton LISP ne devait fonctionner que pour les hachures dans les blocs.En voici un autre qui, pour toutes les hachures "SOLID" du dessin (y compris dans des blocs), met les hachures sur le calque "hachures" en couleur "DuCalque". Edit : ajout d'un groupe d'annulation. (defun c:layhatch (/ doc ss n ent a bl) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vl-load-com) (if (tblsearch "LAYER" "hachure") (progn (vla-StartUndoMark doc) (setq a (vla-get-blocks doc) ) (vlax-for bl a (vlax-for ent bl (if (and (= (vla-get-objectname ent) "AcDbHatch") (= (vla-get-PatternName ent) "SOLID") ) (progn (vla-put-Layer ent "hachure") (vla-put-color ent acByLayer) ) ) ) ) (vla-regen doc acActiveViewport) (vla-EndUndoMark doc) ) (alert "Le calque \"hachure\" n'existe pas.") ) (princ) ) [Edité le 4/4/2007 par (gile)] [Edité le 4/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 4 avril 2007 Posté(e) le 4 avril 2007 Ton LISP ne devait fonctionner que pour les hachures dans les blocs.Et non (gile)Fait un(vla-get-name (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) 0))Et c'est l'espace objet :o Maintenant, si tu prends l'item 1, tu trouveras le premier onglet de présentation ;) Pour répondre à Ludwig, le lisp devra aussi modifier les blocs ou seulement ce qui est sur le dessin ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 4 avril 2007 Posté(e) le 4 avril 2007 Hé oui, bien sûr !Les espaces objet et papier sont considérés comme des blocs. :calim: J'ai modifié le code en conséquence, merci encore. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
LUDWIG Posté(e) le 4 avril 2007 Auteur Posté(e) le 4 avril 2007 merci les pros ! J'avais cherché de mon côté et trouvé le vla-get-patternName, mais je ne savais pas quelles étaient les méthodes pour changer la couleur et le calque. Patrick_35, c'est bien ça que je cherchais : que les hachures solides, qu'elles soient dans un bloc ou non, soient affectées par le lisp. Merci encore Autocad 2021 - Revit 2022 - Windows 10
BIM G CO Posté(e) le 16 mai 2007 Posté(e) le 16 mai 2007 Voici une version du programme qui permet de gérer les hachures créé avec ALLPLAN (expérience avec un architecte) (defun c:LayerSolidHathInBlocks (/ doc ss n ent a bl) ;http://www.cadxp.com/sujetXForum-14601.htm (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vl-load-com) (if (not (tblsearch "LAYER" "Hachures à cacher")) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 "Hachures à cacher") '(70 . 3) '(62 . -7) (cons 6 "Continuous") '(290 . 0) ))) (vla-StartUndoMark doc) (setq a (vla-get-blocks doc) ) (vlax-for bl a (vlax-for ent bl (if (and (= (vla-get-objectname ent) "AcDbHatch") (or (= (vla-get-PatternName ent) "SOLID,_I") (= (vla-get-PatternName ent) "SOLID")) ) (progn (vla-put-Layer ent "Hachures à cacher") (vla-put-color ent acByLayer) ) ) ) ) (vla-regen doc acActiveViewport) (vla-EndUndoMark doc) (princ) ) Le programme suivant liste tous les noms des hachures. (defun c:QuiSOLID (/ doc ss n ent a bl) ;http://www.cadxp.com/sujetXForum-14601.htm (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vl-load-com) (vla-StartUndoMark doc) (setq a (vla-get-blocks doc) ) (vlax-for bl a (vlax-for ent bl (if (= (vla-get-objectname ent) "AcDbHatch") (print (vla-get-PatternName ent) ) ) ) ) (vla-EndUndoMark doc) (princ) ) [Edité le 19/5/2007 par Maximilien] Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
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