fauxsuisse Posté(e) le 23 septembre 2013 Posté(e) le 23 septembre 2013 Bonjour tout le monde. Je cherche un moyen de pouvoir remplacer des textes par d'autres textes mais pas avec la fonction d'autocad rechercher, j'aurai aimer faire ça par exemple à travers un script pour pouvoir automatiser la chose, en gros j'ai un dessin avec des désignations de locaux et le grand maître architecte à eu la bonne idée de changer tous les noms de ces locaux, donc galère il faut tout renommer j'avais que ça à faire :angry: Alors si quelqu'un aurait une idée ma première idée c'était de dire à l'architecte mon opinion mais mon patron ne partage pas mon avis. Citer
bonuscad Posté(e) le 23 septembre 2013 Posté(e) le 23 septembre 2013 Bonjour, J'ai bien ceci, à voir ci ça peu convenir. Si oui je pense que c'est scriptable sous la forme simpliste par exemple: (load "my_replace_text.lsp") (my_replace_text "NOUVELLE-CHAINE" "ANCIENNE CHAINE") Le code (à placer au bon endroit, ou déclarer un nouveau chemin si le chemin en dur n'est pas spécifié pour (load)) (defun my_replace_text (new_string old_string / js n ename) (vl-load-com) (defun string-subst (nam_obj / value_string nbs tmp_nbs) (setq value_string (vlax-get nam_obj 'TextString) nbs 0) (while nbs (if (setq nbs (vl-string-search old_string value_string (setq tmp_nbs nbs))) (setq value_string (vl-string-subst new_string old_string value_string tmp_nbs) nbs (1+ nbs) ) ) ) (vlax-put nam_obj 'TextString value_string) ) (setq js (ssget "_X" '( (-4 . "<OR") (0 . "*TEXT,MULTILEADER,ATTDEF") (-4 . "<AND") (0 . "INSERT") (66 . 1) (-4 . "AND>") (-4 . "OR>") ) ) ) (cond (js (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (cond ((vlax-property-available-p ename 'TextString) (string-subst ename) ) (T (mapcar '(lambda (att) (string-subst att) ) (vlax-invoke ename 'GetAttributes) ) ) ) ) ) ) (prin1) ) Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fauxsuisse Posté(e) le 23 septembre 2013 Auteur Posté(e) le 23 septembre 2013 Merci bonuscad je vais tester tout. Merci encore Citer
fauxsuisse Posté(e) le 23 septembre 2013 Auteur Posté(e) le 23 septembre 2013 C'est parfait ça marche Merci encore Citer
bonuscad Posté(e) le 23 septembre 2013 Posté(e) le 23 septembre 2013 Attention quand même à l'utilisation... Si les chaînes à trouver sont courtes, on peut avoir des surprises de substitution (et on a aucun contrôle à part l'exploration du dessin.) Pour éviter cela préférer des chaînes longues qui ne peuvent guère porter à confusion. Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fauxsuisse Posté(e) le 23 septembre 2013 Auteur Posté(e) le 23 septembre 2013 Attention quand même à l'utilisation... Si les chaînes à trouver sont courtes, on peut avoir des surprises de substitution (et on a aucun contrôle à part l'exploration du dessin.) Pour éviter cela préférer des chaînes longues qui ne peuvent guère porter à confusion. Merci du conseil, et effectivement mes chaines sont unique et assez longue pour éviter une confusion Citer
Messages recommandés