Morgul Posté(e) le 25 octobre 2007 Posté(e) le 25 octobre 2007 Bonjour, Comment puis-je récupérer la valeur d'un attribut constant ? J'ai essayé de la récupérer de la même manière qu'un attribut classique, mais ça ne marche pas ! Merci de votre aide. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
(gile) Posté(e) le 25 octobre 2007 Posté(e) le 25 octobre 2007 Salut, Tu peux récupérer la valeur d'un attribut constant parmi les composants de la définition du bloc. en AutoLISP : (setq bloc (tblsearch "Block" "Nom_du_bloc") ent (cdr (assoc -2 bloc)) loop T ) (while (and loop ent) (setq elst (entget ent) ent (entnext ent) ) (if (and (= (cdr (assoc 0 elst)) "ATTDEF") (= (logand 2 (cdr (assoc 70 elst))) 2) (= (cdr (assoc 2 elst)) "ETIQUETTE") ; l'étiquette en majuscules ) (setq loop nil ret (cdr (assoc 1 elst)) ) ) ) En Visual LISP : (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-Constant obj) :vlax-true) (= (vla-get-TagString obj) "ETIQUETTE") ) (vla-get-TextString obj) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Morgul Posté(e) le 26 octobre 2007 Auteur Posté(e) le 26 octobre 2007 Salut, Merci, je vais tester ça. A+. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
Morgul Posté(e) le 27 octobre 2007 Auteur Posté(e) le 27 octobre 2007 Super, ça marche nickel ! Surtout en Lisp car en Visual je ne sais pas trop l'exploiter. Est-ce que je peux abuser en te demandant comment je peux rajouter une contrainte ? En effet le bloc que je veux exploiter est inséré dans plusieurs présentations.Alors je voudrais récupérer la valeur de l'attribut du bloc inséré dans la présentation courante. du genre : (setq Ongcour (getvar "ctab")) ; détermine la présentation courante (setq bloc (ssget "X" (list (cons 2 "Nom_du_bloc") (cons 410 Ongcour)))) Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
(gile) Posté(e) le 27 octobre 2007 Posté(e) le 27 octobre 2007 Salut, Je ne comprends pas bien la demande, si l'attribut est constant, il a la même valeur dans toutes les présentations... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Morgul Posté(e) le 27 octobre 2007 Auteur Posté(e) le 27 octobre 2007 Salut, Non car en fait j'attaque des blocs de cadres et je fais un seul lisp fonctionnant sur plusieurs blocs avec le même début de nom. donc j'utilise les bloc Cadre_A4, Cadre_A3, Cadre_A0 .... et dans mon lisp j'interroge avec Cadre_* (setq bloc (tblsearch "Block" "Cadre*")ent (cdr (assoc -2 bloc))loop T) ..... Ceci explique cela. Merci pour tout. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
(gile) Posté(e) le 27 octobre 2007 Posté(e) le 27 octobre 2007 Tu récupères le nom complet du bloc de la présentation active : (setq Ongcour (getvar "ctab")) ; détermine la présentation courante (setq bloc (ssget "X" (list (cons 2 "Cadre*") (cons 410 Ongcour)))) (setq nom (cdr (assoc 2 (entget (ssname bloc 0))))) puis tu te sert de ce nom pour parcourrir la définition (setq bloc-def (tblsearch "Block" nom) ...) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Morgul Posté(e) le 27 octobre 2007 Auteur Posté(e) le 27 octobre 2007 Oui tu as raison. Ca marche comme ça. Merci de ton aide. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
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