breakthru Posté(e) le 4 mars 2016 Posté(e) le 4 mars 2016 Bonjour à tous, Je cherche à savoir s'il est possible de changer l'état de visibilité d'objets dans un bloc dynamique depuis un attribut. Je m'explique, avec un exemple très simple car au final mon bloc à une utilité : Le bloc est un carré, et un paramètre de visibilité permet de changer la couleur (hachures solides) du carré. Dans le bloc, j'ai un attribut "Couleur" que je renseigne. Le truc serait qu'en mettant "Rouge" par exemple dans l'attribut, le paramètre de visibilité change l'état en "Rouge". Au final, j'aurai ce bloc utilisé plus de 700 fois dans mon fichier. Avec le menu express, je peux importer/exporter les paramètres d'attribut du bloc. Un sous-traitant me définira la couleur du bloc (pour faire simple ...) et une fois ceci fait, je ré-injecte les valeurs dans l'attribut "Couleur". Mais après, il faudra que l'état de visibilité change ... J'ai trouvé un lisp sur un forum US qui fonctionne très bien pour pratiquement la même chose, mais sur des paramètres de distance. Et comme je ne connais rien au lisp, je n'arrive pas à le modifier pour qu'il fasse la même chose pour un paramètre de visibilité .. Le voici : (defun c:updateParameters ( / dynPropertyList tempSelectionSet i blkObject item attObjList newValue parmName dynmBlksList) ;>>Change dynPropertyList to suit, based on dynamic block properties ;1st item = Attribute Tag ;2nd item = Corresponding Distance Label (Unique name) ;((attribute_Tag_01 . distance_label_name_01) ; (attribute_Tag_02 . distance_label_name_02)....) (setq dynPropertyList '(("A" . "d1") ;Enter attribute name and Dynamic property name ("B" . "d2") ("C" . "d3") ) ) (if (setq tempSelectionSet (ssget '((0 . "Insert")))) (progn (setq i 0) (repeat (sslength tempSelectionSet) (setq blkObject (vlax-ename->vla-object (ssname tempSelectionSet i)) i (1+ i)) (if (and (= (vla-get-HasAttributes blkObject) :vlax-true) (= ( vla-get-IsDynamicBlock blkObject) :vlax-true) ) (progn (setq attObjList (vlax-safearray->list (vlax-variant-value (vla-getattributes blkObject)))) (foreach <att> attObjList (if (setq item (assoc (vla-get-TagString <att>) dynPropertyList)) (progn (setq newValue (atof (vla-get-TextString <att>)) parmName (cdr item) dynmBlksList (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties blkObject)))) (foreach <dyn> dynmBlksList (if (= parmName (vla-get-PropertyName <dyn>)) (vla-put-Value <dyn> newValue)) )))))))))) D'avance, merci beaucoup à ceux qui pourront m'aider ! :-)
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