Aller au contenu

Entités graphique en références de Champs (Field).


Messages recommandés

Posté(e)

Bonsoir,

 

Une petite routine DIRFIELD pour identifier les entités graphique entrant dans la composition d’un champ dynamique, et comprendre rapidement qu’elles sont les entités qui sont liés (pratique lorsqu’un dwg fourmille de champs avec formules).

 

Fonctionne sur les champs (et formules de champs) des textes, textes multiples, des références d’attributs et des tableaux, avec toutes fois une limitation sur les champs des tableaux référençant des numéros de cellules..

 

;; VDH-Bruno                    DIRFIELD                         le: 12/11/2013
;; Highlight les entités graphique qui composent le champ dynamique se trouvant
;; sous le curseur.
(defun c:dirField (/ gr e l edict *error* mredraw foo)

 ;; Gestion des erreurs
 (defun *error* (msg) (if l (mredraw l 4)) (princ))

 ;; Fonction redraw sur une liste d'entités
 (defun mredraw (l code)  (foreach x l (redraw x code)))

 ;; Explore l'arborescence des codes 360 puis retourne les noms d'entités des codes 331
 (defun foo (l / x)
   (cond
     ((null l) nil)
     ((setq x (assoc 331 l)) (list (cdr x)))
     ((append ((lambda (p) (if p (foo (entget (cdr p))))) (setq x (assoc 360 l)))
       (foo (cdr (member x l)))
      )
     )
   )
 )

 (prompt "Positionnez le pointeur sur un champ dynamique pour voir les entités liés...")
 
 (while (= 5 (car (setq gr (grread t 13 2))))
   (if l (mredraw l 4))
   (and (setq e (car (nentselp (cadr gr))))
 (setq edict (cdadr (member '(102 . "{ACAD_XDICTIONARY") (entget e))))
 (mredraw (setq l (foo (dictsearch edict "ACAD_FIELD"))) 3)
   )
 )
 
 (*error* nil)
)

 

Bon test.

A+

Apprendre => Prendre => Rendre

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é