Aller au contenu

modifier des attributs multiple


JonathanTD

Messages recommandés

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écifique

si ç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

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)
)

  • Upvote 1

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité