Aller au contenu

modification de la définition d'un bloc dynamique non répercutée


Messages recommandés

Posté(e)

Salut à toutes et a tous,

meilleurs voeux pour 2025.

Toujours dans mes blocs dynamiques, j'essaye de comprendre comment Autocad gère la définition et la représentation des blocs dynamiques.

je voudrais pourvoir changer à la demande la taille d'une flèche de ligne repère contenue dans un bloc dynamique.

En principe, sauf pour les attributs, il faut changer la définition du bloc pour que ça se répercute dans les occurrences du bloc.

je le fait via ce code exemple pour le bloc "gen_sup"

(defun foundef ()
(setq blks (vla-get-Blocks (vla-get-ActiveDocument(vlax-get-acad-object))))
  (setq blk (vla-item blks "gen_sup"))
  (vlax-for ent blk
    (if (= (vla-get-ObjectName ent) "AcDbMLeader")
      (vla-put-ArrowheadSize ent 9.87654321)
     )
  )
)

le changement de la définition se fait bien, mais elle n'est pas répercutée sur les occurences du bloc existantes.

dans le dwg joint, on voit que les blocs "gen_inf", qui ont été modifiés après qu'une occurence du bloc a été insérée dans le dessin gardent une taille de flèche de 0.4, et non pas 9.8765

si vous éditez ce bloc, vous verrez pourtant que sa définition à une valeur de 9.8765

le bloc gen_sup, qui a été redéfini avant l'insertion d'une occurence à bien une taille de flèche de 9.8755 au lieu des 0.4 initiaux.

 

Si j’utilise l'édition de bloc d'Autocad, la mise à jour est instantanée.

 

En faisant un "handle_explorer" j'ai vu que la taille de la flèche est stockée 2 fois, code 40 et 140 en dxf.

Je sais aussi que les blocs dyn créent une entrée personnalisée dans le dictionnaire irdDscDictionary, mais je n'ai rien trouvé dedans.

 

là je sèche !

a+

Gégé

 

 

 

 

Exemple_bdyn.dwg

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)
Il y a 3 heures, GEGEMATIC a dit :

pas logique

Effectivement, cela ne parait pas convenir aux circonstances, mais quand on réfléchi un peu, cela va chercher la définition du bloc.

Il y a aussi (vlax-release-object (vla-get-ActiveDocument(vlax-get-acad-object))) qui devrais fonctionner (en fin de programme).

Plus logique.

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é