Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

j'ai un bloc qui contient plusieurs attributs.

avec la fonction "entget" j'arrive à récupéré une seule valeur de mes attributs en plus de toute une liste qui ne m’intéresse pas, y aurait-il une fonction qui me pemettrait de récupéré toutes les valeurs de tout les attributs ? (je pense que les vla... peuvent m'aider, mais je ne trouve pas de documentation à ce sujet)

Posté(e)

Salut,

 

y aurait-il une fonction qui me pemettrait de récupéré toutes les valeurs de tout les attributs ?

 

Oui comme ceci et sans vla

(mapcar 'cdr (GetAttribs (car (entsel))))

 

Je t’invite à consulter ce post tu y trouveras notamment le code de la fonction GetAttribs pour faire tourner l’exemple..

 

A+

Apprendre => Prendre => Rendre

Posté(e)

Re,

 

(je pense que les vla... peuvent m'aider, mais je ne trouve pas de documentation à ce sujet)

 

Pour les codes en vla-, mes propositions :

Dans ce cas la méthode la plus direct, avec vlax-invoke

(vl-load-com)
((lambda (/ obj)  
 (if (vlax-method-applicable-p (setq obj (vlax-ename->vla-object (car (entsel)))) 'GetAttributes)
   (mapcar 'vla-get-TextString (vlax-invoke obj 'GetAttributes))
 )
))

 

Sinon avec vlax-invoke-method

((lambda (/ obj)  
 (if (vlax-method-applicable-p (setq obj (vlax-ename->vla-object (car (entsel)))) 'GetAttributes)
   (mapcar 'vla-get-TextString (vlax-safearray->list (vlax-variant-value (vlax-invoke-method obj 'GetAttributes))))    
 )
))

 

Ou alors avec vla-method

((lambda (/ obj)  
 (if (vlax-method-applicable-p (setq obj (vlax-ename->vla-object (car (entsel)))) 'GetAttributes)
   (mapcar 'vla-get-TextString (vlax-safearray->list (vlax-variant-value (vla-GetAttributes obj ))))    
 )
))

 

Pour les fichiers d’aide sur ActiveX, en faisant une rapide recherche sur le forum tu devrais rapidement trouver ton bonheur.

 

A+

Apprendre => Prendre => Rendre

Posté(e)
(vlax-method-applicable-p (setq obj (vlax-ename->vla-object (car (entsel)))) 'GetAttributes)

Salut

 

Pas besoin de tester si la fonction existe, elle a toujours été présente

Et une précision

(mapcar 'vla-get-TextString (vlax-invoke obj 'GetAttributes))

Fonctionne aussi avec des blocs sans attributs avec comme résultat nil (logique)

 

@+

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

Posté(e)

Salut Patrick_35,

 

Fonctionne aussi avec des blocs sans attributs avec comme résultat nil (logique)

Oui, mais pas sur une ligne, un cercle etc.., en fait dans ce cas je me suis servi de vlax-method-applicable-p comme d’un filtre de sélection pour la fonction entsel.

 

Mais merci pour l’observation cela aurait pu… Car je ne suis pas complétement à l’aise avec l'Automation ActiveX, je m’exerce donc un peu sur le forum dans l’espoir que d’autres Lispeurs (plus aguerri) comme toi me reprennent en cas d’errements.

 

A+ et merci,

(Ps: Comme je te l'ai déjà dit, j'aime bien lorsque l'on ajoute son grain de sel, ça fait avancer..)

Apprendre => Prendre => Rendre

Posté(e)
Oui, mais pas sur une ligne, un cercle etc.., en fait dans ce cas je me suis servi de vlax-method-applicable-p comme d’un filtre de sélection pour la fonction entsel.

Ah oui, tu as raison, je n'y avais pas songé :rolleyes:

Mais cela me parait tellement logique par rapport à la demande de ne traiter que les blocs.

 

Mais merci pour l’observation cela aurait pu… Car je ne suis pas complétement à l’aise avec l'Automation ActiveX, je m’exerce donc un peu sur le forum dans l’espoir que d’autres Lispeurs (plus aguerri) comme toi me reprennent en cas d’errements.

Cela va venir.

C'est juste une logique à comprendre.

A la limite, le lisp est plus complexe à saisir que le visual.

Intégrer les mapcar, apply, les codes dxf et j'en passe n'est pas une chose aisé pour un débutant.

 

(Ps: Comme je te l'ai déjà dit, j'aime bien lorsque l'on ajoute son grain de sel, ça fait avancer..)

Je te rejoins complètement B)

 

@+

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

Posté(e) (modifié)

Re,

 

(Ps: Comme je te l'ai déjà dit, j'aime bien lorsque l'on ajoute son grain de sel, ça fait avancer..)

La preuve que cela fait avancer, car si j’avais été cohérent avec moi-même, j’aurais dû en toute logique tester, s’il y a un objet de sélectionné..

 

((lambda (/ obj res)
  (while
    (not
      (if
 (and (setq obj (car (entsel)))
      (vlax-method-applicable-p
	(setq obj (vlax-ename->vla-object obj))
	'GetAttributes
      )
 )
  (setq	res (mapcar 'vla-get-TextString
		    (vlax-invoke obj 'GetAttributes)
	    )
  )
      )
    )
     (prompt "Sélection non valable... ")
  )
  res
)
)

 

A+

 

Edit : code corrigé oubli sur la valeur en retour..

Modifié par VDH-Bruno

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é