lecrabe Posté(e) le 26 octobre 2009 Posté(e) le 26 octobre 2009 Hello Camarades Je suis "presque" sur d'avoir deja vu ce genre de routine !mais je ne la retrouve pas ... :o ( ou alors elle jouait seulement avec le type de visibilite "normale" d'un attribut ! ) Est il possible de basculer le fameux code DXF d'Invisibilite sur un simple attribut ??? Si OUI, je desire SVP une routine avec 2 commandes ATTINVI et ATTVISIATTINVI : clic sur UN attribut, il devient INVISIBLEATTVISI : clic sur un bloc, tous les attributs rebasculent en VISIBLEAttention: je parle ICI du code d'INVISIBILITE ! :D Si NON - Autre routine qui m'interesse : ATTINVI : clic sur un attribut AutoCAD visible, il passe en mode invisible et on fait un BATTMAN ATTVISI : clic sur un bloc, tous les attributs repassent en mode visible et on fait un BATTMAN Voyez vous ce que je veux dire ? Merci d'avance, Le Decapode Autodesk Expert Elite Team
zebulon_ Posté(e) le 26 octobre 2009 Posté(e) le 26 octobre 2009 Bonsoir, (defun c:AttInvi (/ e eobj) (vl-load-com) (setq e (car (nentsel))) (if (= (cdr (assoc 0 (entget e))) "ATTRIB") (progn (setq eobj (vlax-ename->vla-object e)) (vla-put-visible eobj :vlax-false) ) (alert "Pas un attribut") ) (princ) ) (defun c:AttVisi (/ e eobj LATT ATT) (vl-load-com) (setq e (car (entsel))) (if (= (cdr (assoc 0 (entget e))) "INSERT") (progn (setq eobj (vlax-ename->vla-object e)) (setq LATT (vlax-invoke eobj 'getAttributes)) (foreach ATT LATT (setq REP (vla-put-visible ATT :vlax-true)) ) ) (alert "Pas un bloc") ) (princ) ) AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lecrabe Posté(e) le 27 octobre 2009 Auteur Posté(e) le 27 octobre 2009 Hello Zebulon Merci beaucoup, ca marche Nickel-Chrome ! :) Neanmoins je suis aussi preneur SVP de la routine evoquee "en secours" !? B_ATT_INVI : bascule l'attribut selectionne du mode visible en invisibleB_ATT_VISI : bascule tous les attributs du bloc selectionne en mode visible Ensuite je fais un BATTMAN ... :P Attention : je parle ICI du mode Visible / Invisible NORMAL des attributs et non pas du code d'INVISIBILITE special DXF (60 ou 70 je crois) Merci d'avance de votre aide, Le Decapode (Le Crabe Invisible) Autodesk Expert Elite Team
(gile) Posté(e) le 27 octobre 2009 Posté(e) le 27 octobre 2009 Salut, Les routines de zebulon_ agissent sur la propriété "Visible" (DXF 60) de la référence d'attribut sélectionnée. Pour le mode "Invisible" des attributs, il faut agir sur la propriété du même nom de la définition d'attribut, toutes les références insérées devraient être mises à jour. Exemple : (defun c:AttInvi (/ att blk name tag) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq att (car (nentsel "\nSélectionner un attribut: "))) (setq att (vlax-ename->vla-object att)) (= (vla-get-ObjectName att) "AcDbAttribute") ) (progn (setq blk (vla-ObjectIdToObject acdoc (vla-get-OwnerId att)) name (if (vlax-property-available-p blk "EffeciveName") (vla-get-EffectiveName blk) (vla-get-Name blk) ) tag (vla-get-TagString att) ) (vlax-for o (vla-item (vla-get-Blocks acdoc) name) (if (and (= (vla-get-ObjectName o) "AcDbAttributeDefinition") (= (vla-get-TagString o) tag) ) (vla-put-Invisible o :vlax-true) ) ) (vl-cmdf "_.attsync" "_n" name) ) ) (princ) ) (defun c:AttVisi (/ blk name tag) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq blk (car (entsel "\nSélectionner un bloc: "))) (setq blk (vlax-ename->vla-object blk)) (= (vla-get-ObjectName blk) "AcDbBlockReference") ) (progn (setq name (if (vlax-property-available-p blk "EffeciveName") (vla-get-EffectiveName blk) (vla-get-Name blk) ) ) (vlax-for o (vla-item (vla-get-Blocks acdoc) name) (if (= (vla-get-ObjectName o) "AcDbAttributeDefinition") (vla-put-Invisible o :vlax-false) ) ) (vl-cmdf "_.attsync" "_n" name) ) ) (princ) ) PS : Je ne comprends pas bien la demande pour BATTMAN, mais il suffit peut-être de rajouter après (vl-cmdf "_.attsync" "_n" name) l'expression :(vl-cmdf "_.battman) PPS : À propos de la visibilité des entités, je me suis amusé à faire un truc en C#. Je l'ai posté ici parce que le site permet le téléchargement de fichier et affiche mieux les codes. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
zebulon_ Posté(e) le 27 octobre 2009 Posté(e) le 27 octobre 2009 Je ne comprends pas bien la demande pour BATTMAN je pense que lecrabe espérait trouver une commande battman en ligne de commande, ce qui aurait permis d'intervenir sur les modes des attributs d'un bloc sans passer en revue la définition du bloc via vlisp. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lecrabe Posté(e) le 27 octobre 2009 Auteur Posté(e) le 27 octobre 2009 Hello Zebulon & Gilles Merci beaucoup pour vos routines qui marchent bien ! :) Gilles, j'ai renomme tes routines en BAttInvi et BAttVisi ;) C amusant car la commande BAttVisi de Gilles me remet TOUS les attributs en VISIBLE meme ceux que j'ai caches avec la routine AttInvi de Zebulon qui agit sur le code DXF 60 ! Pour BATTMAN , je pensais que la manip serait necessaire mais en fait du fait de l'inclusion du ATTSYNC dans la routine de Gilles, c OK ! :P Encore merci pour ces super-routines, Le Decapode Autodesk Expert Elite Team
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