x_all Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 bonjour il me semble que ce sujet a déjà été traité, mais je ne retrouve pas le fil... un dessin m'arrive ou la plupart des bloc se nomment *U + un nombre le problème c'est que je ne peu pas éditer ou modifier les blocs et dans la plupart il y a des aplats qui me cache le dessin... bref le dessin est inexploitable... existe il un lisp pour renommer en masse ces blocs en supprimant l'* ou en leur donnant un nom avec un numéro incrémental par exemple... merci quelques trucs sur autocad
Patrick_35 Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 Salut Regarde ce sujet @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 27 novembre 2012 Auteur Posté(e) le 27 novembre 2012 merci pour ton lien, mais j'ai ce message au lancementCommande: RDYN*Annuler*erreur: Erreur Automation Problème lors du chargement de VBA serait ce un pb du à la 2013 ou à W7 64? quelques trucs sur autocad
(gile) Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 Salut, Si je comprends bien ce que tu veux faire, il n'est pas nécessaire de renommer ces blocs. Il s'agit de références de bloc dynamique.Petite explication, quand on insère un bloc dynamique, il conserve son nom originel tant qu'on ne modifie aucune propriété dynamique de ce bloc, mais à la moindre modification AutoCAD crée une nouvelle définition de bloc avec un nom incrémenté préfixé avec *U. Tu devrais pouvoir éditer la définition du bloc originel dans l'éditeur de bloc (Commande BEDIT ou sélection du bloc -> clic droit -> Editeur de bloc). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
x_all Posté(e) le 27 novembre 2012 Auteur Posté(e) le 27 novembre 2012 le pb est sur un fichier archicad... peut etre sur archicad ces blocs sont ils dynamique, mais à la conversion d'archicad à autocad les blocs arrivent avec ces noms innommables... et c'est abominable quelques trucs sur autocad
bryce Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 Bonjour, Essaie ça (écris vite fait, pas pu tester car je n'ai qu'une LT sous la main...):(defun c:TOTO ( / n ) (vlax-for b (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (setq n (vla-get-name B)) (if (= "*U" (substr n 1 2)) (vla-put-name b (substr n 2)) ) ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Patrick_35 Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 merci pour ton lien, mais j'ai ce message au lancement serait ce un pb du à la 2013 ou à W7 64?Dans RDYN, tu as une routine (inputbox) qui fait appel au vba (lequel n'est plus fournit en natif par autodesk, d'où l'erreur.)Dans les lisps de (gile) tu retrouves cette routine, compatible quelle que soit la version. Tu as aussi d'autres lisps en réponses 10&11 du message précité. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 27 novembre 2012 Auteur Posté(e) le 27 novembre 2012 ok pour l'imputbox... du cou c'est vrai que ça marche mieux, mais la routine toto de bryce marche aussi super bien... bref, problème résolu, et même deux fois ... merci merci ;) quelques trucs sur autocad
(gile) Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 Re, Pour résoudre ton problème d’aplats, je te propose un petit LISP vite fait qui supprime les objets hachure SOLID, solide 2d et wipeout dans tout le dessin et tous les blocs.Les objets sur les claques verrouillés sont épargnés.on spécifie les types d'objets à supprimer à l'aide de la somme des codes binaire suivant :- 1 -> hachures SOLID- 2 -> solides 2d- 4 -> wipeouts exemples :(RemoveSolids 1) ; ne supprime que les hachures SOLID(RemoveSolids 2) ; ne supprime que les solides 2d(RemoveSolids 3) ; supprime les hachures SOLID et les solides 2d(RemoveSolids 4) ; ne supprime que les wipeouts(RemoveSolids 5) ; supprime les hachures SOLID et les wipeouts(RemoveSolids 6) ; supprime les solides 2d et les wipeouts(RemoveSolids 7) ; supprime les hachures SOLID, les solides 2d et les wipeouts ;| RemoveSolid Supprime les applats dans le dessin et les blocs Arugument flag : la somme des codes binaires suivant : 1 Hachures SOLID 2 solides 2d 4 wipeouts |; (defun RemoveSolids (flag / *error*) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *block* (setq *blocks* (vla-get-Blocks *acdoc*))) (or *layers* (setq *layers* (vla-get-Layers *acdoc*))) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (vla-EndUndoMark *acdoc*) (princ) ) (vla-StartUndoMark *acdoc*) (vlax-for blk *blocks* (vlax-for obj blk (if (and (= (vla-get-Lock (vla-Item *layers* (vla-get-Layer obj))) :vlax-false ) (or (and (= (logand flag 1) 1) (= (vla-get-ObjectName obj) "AcDbHatch") (wcmatch (strcase (vla-get-PatternName obj)) "*SOLID") ) (and (= (logand flag 2) 2) (= (vla-get-ObjectName obj) "AcDbSolid") ) (and (= (logand flag 4) 4) (= (vla-get-ObjectName obj) "AcDbWipeout") ) ) ) (vla-delete obj) ) ) ) (*error* nil) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
x_all Posté(e) le 27 novembre 2012 Auteur Posté(e) le 27 novembre 2012 pwhaa n'en jetez plus !!! problème trois fois résolu !!!et même super le RemoveSolids :) en passant, je me demandais bien pourquoi il n'y avais pas le fameux C: après (defun c'est la première fois que je vois un lisp qui se lance avec une commande entre parenthèse... est ce ça les fameuses fonctions lambda? en tous cas merci ça marche super super super... quelques trucs sur autocad
(gile) Posté(e) le 27 novembre 2012 Posté(e) le 27 novembre 2012 en passant, je me demandais bien pourquoi il n'y acais pas le fameux C: après (defun c'est la première fois que je vois un lisp qui se lance avec une commande entre parenthèse... est ce ça les fameuses fonctions lambda? Non, les expressions lambda sont des fonctions anonymes (comme tes blocs). Celle-ci a un nom : RemoveSolids, et est une fonction LISP "standard". Les fonctions LISP dont le nom est préfixé avec c: sont un peu spéciales en ce sens qu'elles peuvent être appelées directement comme des commandes mais pour ce faire, elles ne peuvent pas utiliser d'arguments. Le fait d'utiliser une fonction avec argument permet plus de polyvalence : pour faire l'équivalent avec des commandes LISP et couvrir toutes les possibilités, il aurait fallu écrire 7 (defun c: ...) ou, une fois RemoveSolids défini, définir 7 commandes qui appellent RemoveSolids en lui passant les différentes combinaisons de codes binaires.Ceci est possible en une seule expression LISP utilisant une expression lambda (la boucle est bouclée) pour définir les commandes rs1, rs2, rs3, ...,rs7 correspondant aux différentes combinaisons :(mapcar '(lambda (s n) (eval (list 'defun s nil (list 'RemoveSolids n) '(princ)) ) ) '(c:rs1 c:rs2 c:rs3 c:rs4 c:rs5 c:rs6 c:rs7) '(1 2 3 4 5 6 7) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
x_all Posté(e) le 27 novembre 2012 Auteur Posté(e) le 27 novembre 2012 je me coucherai moins bête.... comme c'est pas la 1er fois et que je suis toujours aussi couillon, il doit y avoir un reset pendant mon sommeil.... mais merci pour les explications :) quelques trucs sur autocad
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