JonathanTD Posté(e) le 8 juillet 2016 Partager Posté(e) le 8 juillet 2016 Bonjour je cherche a modifié plusieurs attributs d'un bloc (image jointe) Si quelqu'un aurais un peu de temps pour m'aider a compléter une routine pour ajouter: "( )" a l'attribut POLE_NO"(" a l'attribut HEIGHT")" a l'attribut YEAR_ADDED pour que le bloc a gauche dans l'image jointe soit représenté ainsi (P27S)(35P7/1980) j'avais recu de l'aide pour ajouter des "( )" a tout les attributs pour un autre bloc mais celui ci doit etre plus spécifiquesi ça peut aider voici le lisp (vl-load-com)(defun c:demo (/ atts i obj ss str)(if (setq ss (ssget ":L" '((0 . "INSERT") (66 . 1) (2 . "ANCHOR_ANNO") (62 . 6))))(repeat (setq i (sslength ss))(setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i))))atts (vlax-invoke obj "GetAttributes"))(foreach att atts(if (and (/= (setq str (vla-get-textstring att)) "")(not (vl-string-position (ascii "(") str)))(vla-put-textstring att (strcat "(" str ")"))))))(princ)) Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 9 juillet 2016 Partager Posté(e) le 9 juillet 2016 Salut, À mon avis le plus simple : (defun c:demo (/ i s B) (if (setq s (ssget "_:L" '((0 . "INSERT") (2 . "ANCHOR_ANNO")))) (repeat (setq i (sslength s)) (setq b (ssname s (setq i (1- i)))) (setpropertyvalue b "POLE_NO" (strcat "(" (getpropertyvalue b "POLE_NO") ")")) (setpropertyvalue b "HEIGHT" (strcat "(" (getpropertyvalue b "HEIGHT"))) (setpropertyvalue b "YEAR_ADDED" (strcat (getpropertyvalue b "YEAR_ADDED") ")")) ) ) (princ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
JonathanTD Posté(e) le 11 juillet 2016 Auteur Partager Posté(e) le 11 juillet 2016 Merci de ton aide! j'ai essayer la routine lisp et tout fonctionne bien MERCI!!! j'ai ajouter (62 . 6) pour stipuler que je veux que les modification ne soit faite que sur les bloc avec la couleur 6 (if (setq s (ssget "_:L" '((0 . "INSERT") (2 . "ANCHOR_ANNO") (62 . 6)))) et je vais essayer d'introduire la fonction (not (vl-string-position (ascii "(") B )) pour éviter les doubles parenthéses si la fonction est ré-utilisée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
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