Aller au contenu

Messages recommandés

Posté(e)

Bonjour, est-il possible de récupérer la valeur d'un attribut connaissant son nom.

 

Je pensais pouvoir le faire avec un "tblsearch" ou "tblobjname" mais l'attribut ne fait pas partit (il me semble) des types d'objet qui sont utilisés par ses deux commandes

 

Merci

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Salut,

 

Précise un peu :

- "son nom" le nom du bloc ou l'étiquette de l'attribut

- "la valeur" : valeur par défaut dans la définition du bloc ou la valeur dans une référence insérée dans le dessin.

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

Posté(e)

Bonjour,

en fait je souhaiterai retrouver le cdr de assoc 1 connaissant le cdr assoc 2 des attributs de "UNBLOC"

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Salut,

 

Lovecraft,

Tu trouveras une piste ici.

 

Arcasdk,

Tu ne réponds pas complètement à ma question.

Cherches-tu la valeur (code dxf 1) de l'attribut suivant son étiquette (code dxf 2) dans une référence du bloc "UNBLOC" insérée dans le dessin, ou la valeur par défaut de cet attribut dans la définition du bloc "UNBLOC" ?

La démarche diffère suivant le cas.

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

Posté(e)

ouh là....Bon si je ne me trompe pas, c'est la première solution

 

la valeur (code dxf 1) de l'attribut suivant son étiquette (code dxf 2) dans une référence du bloc "UNBLOC" insérée dans le dessin

 

J'ai un bloc "Cartouche" dans un dessin avec des attributs.

Ces attributs ont une étiquette (code dxf 2 que je connais) par exemple "Échelle"

Et je voudrais récupérer la "Valeur" (et non la valeur par défaut) Qui sera par exemple "1/2"

 

Bien sur je vais en récupérer plusieurs et je pense que tous mes noms d'étiquette seront stockés dans un fichier texte

 

Merci beaucoup

 

[Edité le 22/1/2009 par Arcasdk]

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Re,

 

Une petite routine qui parcourt les attribut du bloc spécifié à la recherche de la valeur de l'attribut spécifié.

On accède aux attributs (sous entités) d'une référence de bloc avec la fonction entnext.

 

;;; GetAttValue
;;; Retourne la valeur de l'attribut
;;;
;;; Arguments
;;; blk : le nom d'entité du bloc
;;; tag : le nom de l'étiquette de l'attribut
;;;
;;; Retour : la valeur de l'attribut ou nil s'il n'a pas été trouvé

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

 

pour tester la routine (tag = étiquette de l'attribut) :

(getattvalue (car (entsel)) "echelle")

 

Pour le faire automatiquement on peut utiliser ssget, dans ce cas, il est préféranble d'utiliser une liste pour le retour des valeurs au cas où plusieurs références du bloc sont présentes dans le dessin.

(setq ss (ssget "_X" '((0 . "INSERT") (2 . "Cartouche"))))
(repeat	(setq n (sslength ss))
 (setq
   vals (cons (getattvalue (ssname ss (setq n (1- n))) "echelle") vals)
 )
)

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

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é