tyrese69_ Posté(e) le 8 novembre 2007 Posté(e) le 8 novembre 2007 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 OLIVESLyon-FRANCE
Matt666 Posté(e) le 8 novembre 2007 Posté(e) le 8 novembre 2007 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."
speedy Posté(e) le 8 novembre 2007 Posté(e) le 8 novembre 2007 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
tyrese69_ Posté(e) le 9 novembre 2007 Auteur Posté(e) le 9 novembre 2007 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 OLIVESLyon-FRANCE
(gile) Posté(e) le 9 novembre 2007 Posté(e) le 9 novembre 2007 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
tyrese69_ Posté(e) le 9 novembre 2007 Auteur Posté(e) le 9 novembre 2007 Re bonjour, Je viens de retrouver un lien trés interresant ! http://intervision.hjem.wanadoo.dk/ Daniel OLIVES Bon week end
(gile) Posté(e) le 9 novembre 2007 Posté(e) le 9 novembre 2007 Alors, c'est ça ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 9 novembre 2007 Posté(e) le 9 novembre 2007 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/
(gile) Posté(e) le 9 novembre 2007 Posté(e) le 9 novembre 2007 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
tyrese69_ Posté(e) le 12 novembre 2007 Auteur Posté(e) le 12 novembre 2007 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 OLIVESLyon-FRANCE
Messages recommandé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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant