Aller au contenu

Remplacer texte avec un script


Messages recommandés

Posté(e)

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.

Posté(e)

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

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

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.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

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

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é