Aller au contenu

Trouver directement entname d\'un attribut ?


Messages recommandés

Posté(e)

Bonjour !

 

Je cherche une solution pour trouver rapidement le nom d'une entité type "ATTDEF" sans balayer toute la base de donnée de définition du bloc.

 

Ma solution actuelle :

Je fais un SSGET sur le nom du bloc,

puis je scrute toutes les entités qui suivent par entnext ,

jusqu'au SEQEND.

 

Mon problème c'est que j'ai environ 1000 attributs dans mon bloc, et quand je dois tous les remplir, ça met du temps .... 1000x1000 scrutations.

 

 

Merci

 

 

PS : Vivement une bonne issue pour CAD XP

Posté(e)

Salut

Dans l'exemple de (gile), tu récupères le handle des attributs dans la table des blocs, qui ne sont pas les mêmes que ceux qui sont inséré dans le dessin

De plus, l'ordre des attributs dans un bloc, peut ne pas correspondre avec ceux défini dans la table des blocs (avec une utilisation de battman sans synchro par exemple)

 

Un exemple

Je choisis mon bloc avec attributs

(setq bl (vlax-ename->vla-object (car (entsel))))

 

Je créé par exemple une liste d'attributs contenant l'étiquette, la valeur de l'étiquette ainsi que son objet mais en vl afin de pouvoir le modifier

(setq lst (mapcar '(lambda(x) (list (vla-get-tagstring x) (vla-get-textstring x) x)) (vlax-invoke bl 'getattributes)))

 

Si le bloc ne comporte pas de doublon comme nom d'étiquette

Un (assoc "une_Eti" lst) me retourne par exemple ("une_Eti" "Test" #<VLA-OBJECT IAcadAttributeReference2 13dc58a4>)

 

Sinon, un (nth 45 lst) me retourne par exemple ("une_Eti_autre" "Test_Suivant" #<VLA-OBJECT IAcadAttributeReference2 13dc5484>)

 

@+

 

[Edité le 11/2/2008 par Patrick_35]

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

  • 1 mois après...

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é