LUDWIG Posté(e) le 4 janvier 2006 Posté(e) le 4 janvier 2006 Bonjour et bonne année à tous ! Je duplique des blocs (qui ont des attributs) en faisant utilisant :- entget pour copier les propriétés- substr et vla-remove pour modifier la liste obtenue (notament changer le nom et supprimer les clés uniques)- entmake pour créer le bloc- puis je fais de même (entget, substr, vla-remove et enmake) pour les entités qui constituent le bloc- et je place un endblk à la fin Tout se passe correctement, sauf quand le bloc d'origine possède des hachures : le nouveau bloc n'est pas créé et et les attributs du bloc d'origine sont copiés dans le dessin (et aucune autre entité). Quelqu'un comprend t'il se comportement ? S'il faut je mettrais le code. En attendant, je vais décomposer les hachurs dès que je les rencontre... Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 4 janvier 2006 Auteur Posté(e) le 4 janvier 2006 Pour décomposer les hachures, j'ai ce code : (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-explode ent) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport) ) Qui décompose toute les hachures du dessin, mais je ne sais pas l'adapter pour qu'il décompose les hachures d'un bloc (pas insert) dont j'ai fait un tblsearch... Autocad 2021 - Revit 2022 - Windows 10
bonuscad Posté(e) le 4 janvier 2006 Posté(e) le 4 janvier 2006 Ma 1ère réflexion sans aucun test me ferait pencher sur un problème de l'interpretation du code 66 des entité INSERT.Si zero faire un ENDBLK autrement une serie de ENDSEQ (autant que necessaire) [surligneur] AVANT[/surligneur] de faire un ENDBLK Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
LUDWIG Posté(e) le 4 janvier 2006 Auteur Posté(e) le 4 janvier 2006 Bon, je laisse tomber la décomposition des hachures, ça ne marche pas... Par contre bonuscad, je ne fais pas des duplication d'INSERT mais de BLOCK. Je n'ai pas de code 66 quand je fais un (tblsearch "block" "toto"). JE COPIE LA DEFINITION DU BLOC EN CHANGEANT LE NOM: (setq NEW_BLK_DEF (subst (cons 2 NEW_BLK_NAME)(assoc 2 BLK_2B_COPIED) BLK_2B_COPIED)) JE SUPPRIME LA CLE UNIQUE -2 (setq NEW_BLK_DEF (vl-remove (assoc -2 NEW_BLK_DEF) NEW_BLK_DEF)) ;JE CREE LE DEBUT DE LA DEFINITION (entmake NEW_BLK_DEF) ;les constituants de l'ancien bloc sont dupliqués dans le nouveau bloc en supprimant les clés uniques -1, 5 et 330 (setq constituant_id (cdr (assoc -2 BLK_2B_COPIED))) (while constituant_id (setq constituant (entget constituant_id)) (setq constituant (vl-remove(assoc -1 constituant)constituant)) (setq constituant (vl-remove(assoc 5 constituant)constituant)) (setq constituant (vl-remove(assoc 330 constituant)constituant)) ;JE CREE LE CONSTITUANT (entmake constituant) (setq constituant_id (entnext constituant_id)) ) ;JE DEFINI LA FIN DU BLOC (entmake '((0 . "endblk"))) Autocad 2021 - Revit 2022 - Windows 10
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