Steven Posté(e) le 30 juin 2011 Posté(e) le 30 juin 2011 salut à tous. Le lisp RB de Patrick_35 est déjà très efficace car il met toutes les entités d'un bloc sur les calque 0 et tout en DUBLOC en une seul commande. Toutefois, y a-t-il moyen de créer un lisp qui fasse la même chose mais qui en plus supprime toutes sortes de hachures, image, wipeout qu'il peut y avoir dans les blocs?En effet, je doit redéfinir tout un tas de bloc. J'utilise RB mais le soucis est que je dois ensuite éditer les blocs manuellement pour supprimer les hachures à l'intérieur de ceux-ci.lorsqu'il y en a un ou deux, ça ne pose pas de problème mais lorsqu'il y a une centaine de blocs différents, ça devient tout suite moins amusant. [Edité le 30/6/2011 par Steven] Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
lecrabe Posté(e) le 30 juin 2011 Posté(e) le 30 juin 2011 Hello Voici une routine de Gilles + micro-modif de Fraid un peu similaire a ta demande :je pense qu'il faut mofifier la ligne "AcDb..." et traiter les hachures par exemple Le Decapode >> ;; Supprimer (Kill) les cotations (DIMension) dans les blocs (BLOCK);; Par GC le 11/03/2011 - Passage en DEFUN par Fraid (defun c:KDIM_BLOCK (/ b o)(vl-load-com)(vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (or (= (vla-get-IsLayout b) :vlax-true) (= (vla-get-IsXref b) :vlax-true) (vlax-for o b (if (wcmatch (vla-get-ObjectName o) "AcDb*Dimension") (vla-delete o) ) ) ))) >> Autodesk Expert Elite Team
BIM G CO Posté(e) le 1 juillet 2011 Posté(e) le 1 juillet 2011 Toutefois, y a-t-il moyen de créer un lisp qui fasse la même chose mais qui en plus supprime ... image, wipeout... (DEFUN c:deletewipeoutinblocks (/ acdoc) ;;; http://www.cadxp.com/sujetXForum-12798.htm (SETQ acdoc (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT))) (VLA-STARTUNDOMARK acdoc) (VLAX-FOR b (VLA-GET-BLOCKS acdoc) (VLAX-FOR e b (IF (= "AcDbWipeout" (VLA-GET-OBJECTNAME e)) (VLA-DELETE e) ) ) ) (VLA-ENDUNDOMARK acdoc) (VLA-REGEN acdoc ACACTIVEVIEWPORT) (PRINC) ) et pour le Fun : Hachures (solid) et WipeOut(DEFUN c:deletesolid (/ acdoc) ;;; http://www.cadxp.com/sujetXForum-12798.htm (SETQ acdoc (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT))) (VLA-STARTUNDOMARK acdoc) (VLAX-FOR b (VLA-GET-BLOCKS acdoc) (VLAX-FOR e b ;; (if (member (vla-get-ObjectName (list "AcDbHatch" "AcDbWipeout" "AcDbSolid"))) (IF (AND (= "AcDbSolid" (VLA-GET-OBJECTNAME e)) (= 255 (VLA-GET-COLOR e)) ) (VLA-DELETE e) ) ) ) (VLA-ENDUNDOMARK acdoc) (VLA-REGEN acdoc ACACTIVEVIEWPORT) (PRINC) ) Ya qu'à demander ! [Edité le 1/7/2011 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
Steven Posté(e) le 4 juillet 2011 Auteur Posté(e) le 4 juillet 2011 Salut à tous. A chaque fois, j'hallucine :D j'essaye tout ça cet après-midi ;) merci à vous :) Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Steven Posté(e) le 4 juillet 2011 Auteur Posté(e) le 4 juillet 2011 Salut Maximilien Le premier qui ne supprime que les wipeaout fonctionne très bien par contre, le second, qui supprime les wipeout et les hachures ne fonctionne pas :( Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
lecrabe Posté(e) le 4 juillet 2011 Posté(e) le 4 juillet 2011 Hello Tu peux essayer ceci pour les Hachures : ;; Supprimer (Kill) les hachuress (HATCH) dans les blocs (BLOCK) ;; Par GC le 11/03/2011 - Passage en DEFUN par Fraid ;; Micro-Modification par LeCrabe DIM -->HATCH (defun c:KHATCH_BLOCK (/ b o) (vl-load-com) (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (or (= (vla-get-IsLayout b) :vlax-true) (= (vla-get-IsXref b) :vlax-true) (vlax-for o b (if (wcmatch (vla-get-ObjectName o) "AcDb*Hatch") (vla-delete o) ) ) ) ) ) C'est une micro-modification de la routine de Gilles - Merci !Je viens de la tester avec des hachures ANSI31 et SOLID tant en mode DUCALQUE que en mode Couleur Forcee, donc ca devrait faire !Ne pas oublier un RG ou REGEN apres l'execution ! Le Decapode Autodesk Expert Elite Team
Steven Posté(e) le 4 juillet 2011 Auteur Posté(e) le 4 juillet 2011 Hello Tu peux essayer ceci pour les Hachures : ;; Supprimer (Kill) les hachuress (HATCH) dans les blocs (BLOCK) ;; Par GC le 11/03/2011 - Passage en DEFUN par Fraid ;; Micro-Modification par LeCrabe DIM -->HATCH (defun c:KHATCH_BLOCK (/ b o) (vl-load-com) (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (or (= (vla-get-IsLayout b) :vlax-true) (= (vla-get-IsXref b) :vlax-true) (vlax-for o b (if (wcmatch (vla-get-ObjectName o) "AcDb*Hatch") (vla-delete o) ) ) ) ) ) C'est une micro-modification de la routine de Gilles - Merci !Je viens de la tester avec des hachures ANSI31 et SOLID tant en mode DUCALQUE que en mode Couleur Forcee, donc ca devrait faire !Ne pas oublier un RG ou REGEN apres l'execution ! Le Decapode Je ne dirais qu'une seule chose.............. Super :D Merci à tous :) Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
lecrabe Posté(e) le 4 juillet 2011 Posté(e) le 4 juillet 2011 Hello Et toujours avec la meme micro-modification du programme de Gilles voici la routine qui traite les WIPEOUTs ;; Supprimer (Kill) les WIPEOUTs (WIPEOUT) dans les blocs (BLOCK) ;; Par GC le 11/03/2011 - Passage en DEFUN par Fraid (defun c:KWIPEOUT_BLOCK (/ b o) (vl-load-com) (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (or (= (vla-get-IsLayout b) :vlax-true) (= (vla-get-IsXref b) :vlax-true) (vlax-for o b (if (wcmatch (vla-get-ObjectName o) "AcDb*Wipeout") (vla-delete o) ) ) ) ) ) Le Decapode Autodesk Expert Elite Team
Steven Posté(e) le 4 juillet 2011 Auteur Posté(e) le 4 juillet 2011 Hello Et toujours avec la meme micro-modification du programme de Gilles voici la routine qui traite les WIPEOUTs ;; Supprimer (Kill) les WIPEOUTs (WIPEOUT) dans les blocs (BLOCK) ;; Par GC le 11/03/2011 - Passage en DEFUN par Fraid (defun c:KWIPEOUT_BLOCK (/ b o) (vl-load-com) (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (or (= (vla-get-IsLayout b) :vlax-true) (= (vla-get-IsXref b) :vlax-true) (vlax-for o b (if (wcmatch (vla-get-ObjectName o) "AcDb*Wipeout") (vla-delete o) ) ) ) ) ) Le Decapode J'l'avais pas vu celui-là. Trop fort :D Merci pour tout. Voilà le gain de temps gagné :D Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
lecrabe Posté(e) le 4 juillet 2011 Posté(e) le 4 juillet 2011 Hello Heureux d'avoir pu t'aider ... Par contre SVP si Gilles ou Fraid ou Bonuscad ou autre "Super Pro en Lisp / VLisp" pouvait nous faire la petite modification qui permettrait de traiter une selection AutoCAD classique et non pas TOUT le DWG, cela pourrait m'aider (et sans doute d'autres personnes aussi) pour certains nettoyages ! Merci d'avance, Le Decapode Autodesk Expert Elite Team
touvenant Posté(e) le 15 septembre 2011 Posté(e) le 15 septembre 2011 Bonjour,Je cherche en rond la susnommée routine RB de Patrick_35.Quelqu'un aurait un lien svp.
Raph_38 Posté(e) le 15 septembre 2011 Posté(e) le 15 septembre 2011 Salut, Tu trouveras tout les lisp de patrick_35 sur son blog : ICI Le lisp que tu recherche : RB voilà ;) Raph. Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !
(gile) Posté(e) le 15 septembre 2011 Posté(e) le 15 septembre 2011 Hello Heureux d'avoir pu t'aider ... Par contre SVP si Gilles ou Fraid ou Bonuscad ou autre "Super Pro en Lisp / VLisp" pouvait nous faire la petite modification qui permettrait de traiter une selection AutoCAD classique et non pas TOUT le DWG, cela pourrait m'aider (et sans doute d'autres personnes aussi) pour certains nettoyages ! Merci d'avance, Le Decapode Il serait temps de mettre la pince à la patte... Faire une sélection filtrée, parcourir la sélection pour effacer tous les objets (en l'état, la routine traite wipeouts et hachures SOLID, commenter/décommenter les expressions de filtre suivant les besoins) : (defun c:lecrabe (/ ss ent) (if (setq ss (ssget ;; uniquement les wipeouts ;'((0 . "WIPEOUT")) ;; uniquement les hachures SOLID ;'((0 . "HATCH") (2 . "SOLID")) ;; wipeouts et hachures SOLID '((-4 . "<OR")(0 . "WIPEOUT")(-4 . "<AND")(0 . "HATCH")(2 . "SOLID")(-4 . "AND>")(-4 . "OR>")) ) ) (repeat (setq n (sslength ss)) (entdel (ssname ss (setq n (1- n)))) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 15 septembre 2011 Posté(e) le 15 septembre 2011 Hello Gilles Magnifique comme d'habitude ! Encore Merci, Le Decapode (lecrabe) Autodesk Expert Elite Team
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