Aller au contenu

Messages recommandés

Posté(e)

avant j'utilisais un bloc avec 3 attributs

avait ma petite fonction pour récupérer la valeur de mes attributs

maintenant j'utilise ligne de repére multiple avec mon bloc

(pratique et conviviale a mon avis)

mais problème

je n'arrive pas a faire une fonction pour récupérer la valeur d'un attribut

 

 

si vous avez eu ce problème.....merci de m'aider

 

voila ma fonction pour la valeur d'un attibut

;; ;valeur d'un attribut : entité avant entget + etiquette 

 

(defun val_eti(enti eti / alt)

(setq ent_att (entnext enti))

(while (/= (cdr (assoc 0(entget ent_att))) "SEQEND")

(if (= (cdr(assoc 2(entget ent_att))) eti)

(setq alt (cdr(assoc 1(entget ent_att))))

)

(setq ent_att (entnext ent_att))

)

alt

)

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Posté(e)

Salut,

 

Pour récupérer la valeur d'un attribut

;;; GetAttValue
;;; Retourne la valeur d'un attribut (ou nil si l'étiquette n'est pas trouvée)
;;;
;;; Arguments
;;; blk : le nom d'entité du bloc
;;; tag : le nom de l'étiquette de l'attribut

(defun GetAttValue (blk tag / lst loop val)
 (setq	lst  (entget (entnext blk))
loop (= "ATTRIB" (cdr (assoc 0 lst)))
 )
 (while loop
   (if	(= (strcase tag) (cdr (assoc 2 lst)))
     (setq val	 (cdr (assoc 1 lst))
    loop nil
     )
     (setq lst	 (entget (entnext (cdr (assoc -1 lst))))
    loop (= "ATTRIB" (cdr (assoc 0 lst)))
     )
   )
 )
 val
)

 

Pour attribuer une valeur à un attribut

;;; GetAttValue
;;; Attribue une valeur de un attribut
;;; Retour : ENAME du bloc (ou nil si l'étiquette n'est pas trouvée)
;;;
;;; Arguments
;;; blk : le nom d'entité du bloc
;;; tag : le nom de l'étiquette de l'attribut
;;; val : la valeur à attribuer

(defun SetAttValue (blk tag val / lst loop)
 (setq	lst  (entget (entnext blk))
loop (= "ATTRIB" (cdr (assoc 0 lst)))
 )
 (while loop
   (if	(= (strcase tag) (cdr (assoc 2 lst)))
     (progn
(entmod (subst (cons 1 val) (assoc 1 lst) lst))
(setq loop nil)
(entupd blk)
     )
     (setq lst	 (entget (entnext (cdr (assoc -1 lst))))
    loop (= "ATTRIB" (cdr (assoc 0 lst)))
     )
   )
 )
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci Gile

ces fonctions marchent sur des blocs.

mais ne marche pas quand les blocs sont attaches a des ligne de repères multiples

on tombe la sur une entité complexe trop complexe pour moi

 

je voulais mettre une image mais je ne sais comment on fait

 

 

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

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é