Aller au contenu

Entmake de bloc avec hachure


LUDWIG

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité