Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous,

 

Lorsque l'on clic sur un bloc avec attribut, l'étiquette possède un handle particulier,

comment par programmation retrouver celle-ci ?

 

(J'ai poster ce même message sur le forum VBA.

Mais en lisp cette manip semble possible alors qu'en VBA les dictionnaires ne sont pas accessibles !)

 

Daniel OLIVES

Lyon-FRANCE

Posté(e)

C'est le code dxf 5 qui renferme le handle d'une entité.

 

Tu as plusieurs fonctions pour les handles :

(handent "5a") -> retourne le nom (ename) de l'entité

(getvar "handseed") -> retourne le prochain handle disponible

(cdr (assoc 5 (entget (car (nentsel))))) -> retourne le handle de la sub entité sélectionnée

(cdr (assoc 5 (entget (car (entsel))))) -> retourne le handle de l'entité sélectionnée

 

Voilà...

A bientot !

Matt.

"Chacun compte pour un, et nul ne compte pour plus d'un."

Posté(e)

Bonjour

 

j'ai utilser ceci pour me confirmer certains liens de bloc avec excel.....

 

;;connaître le handle de mon bloc

(defun c:MyHandle ( / entite)

(setq entite nil)

(while (not entite)

(setq entite (entsel "\nVeuillez sélectionner le bloc :")))

(princ "\nLe handle du bloc est ")

(princ (cdr (assoc 5 (entget (car entite)))))

(princ))

 

 

@+

 

Michel a

Posté(e)

Bonjour à tous,

 

J'ai bien testé tout celà déjà mais ce que je souhaite faire c'est uniquement par programmation, sans aucunes sélection, retrouver le handle de l'étiquette d'un attribut donné, en fait pour lire s'il a un champ car j'ai déjà une routine qui fourni la valeur du champ inscrit mais avec passge de paramètre via le HANDLE !

 

A +

Daniel OLIVES

Lyon-FRANCE

Posté(e)

Salut,

 

Tu veux le handle de l'attribut d'une définition de bloc d'après son etiquette, c'est ça ?

 

(vlax-for obj
  (vla-item
    (vla-get-Blocks
      (vla-get-ActiveDocument
	(vlax-get-acad-object)
	)
      )
    "nom_du_bloc"
    )
 (if (and (= (vla-get-ObjectName obj) "AcDbAttributeDefinition")
   (= (vla-get-TagString obj) "ETIQUETTE")
   )
   (setq ret (vla-get-Handle obj))
   )
 )
ret 

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

Posté(e)

Bonsoir à toutes et tous,

 

(gile), j'ai testé sur une v2008 et voilà ce que me retourne AutoCAD :

 

 

Commande: (vlax-for obj

(_> (vla-item

((_> (vla-get-Blocks

(((_> (vla-get-ActiveDocument

((((_> (vlax-get-acad-object)

((((_> )

(((_> )

((_> "nom_du_bloc"

((_> )

(_> (if (and (= (vla-get-ObjectName obj) "AcDbAttributeDefinition")

(((_> (= (vla-get-TagString obj) "ETIQUETTE")

(((_> )

((_> (setq ret (vla-get-Handle obj))

((_> )

(_> )

; erreur: Erreur Automation Clé introuvable

 

Commande: ret Commande inconnue "RET". Appuyez sur F1 pour obtenir de l'aide.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

lili2006,

 

ce message s'adressait à un lispeur, il ne s'agit ni d'un programme, ni d'une routine, mais d'une suite d'expression à utiliser comme il le souhaite.

 

ret est le nom de la variable dans laquelle est stockée le hande de l'attribut.

 

Pour faire fonctionner cette expression il faut d'abord remplacer nom_du_bloc par le nom d'un bloc de la collection du dessin courant, et ETIQUETTE par le nom de l'étiquette de l'attribut dont on cherche le handle.

 

Ensuite si tu veux tester à la ligne de commande tu colles juste la première expression, sans ret.

 

Enfin en entrant : !ret à la ligne de commande tu auras le résultat.

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

Posté(e)

Bonsoir Gile désolé de ne pas avoir répondu à ton message.

Merci pour le bout de code, j'ai pas eu le temps de tester,

VBA Word depuis qqs jour !

Dés que j'ai des résultats je te (vous) tiens au courant.

 

Daniel OLIVES

Lyon-FRANCE

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é