Aller au contenu

Remplacement de texte dans plusieurs fichiers


Messages recommandés

Posté(e)

Bonjour à tous et à toutes,

 

Tout d'abord, mon sujet n'est peut être pas au bon endroit ! VBA, LISP ou Ici ?

Je cherche tout simplement à remplacer dans plusieurs fichiers le caractère diametre ø (%%C par alt155)

Je me suis dis dit pourquoi pas faire un script , mais non, ca n'est pas approprié, en lancant la commande rechercher, je ne peux (ou ne sais pas comment) saisir les caractéres dans la boite de dialogue  et appliquer les modif à l'aide du script....

Si quelqu'un a une idée , un conseil, ou une solution 🙂

Par avance merci !

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Posté(e)

Coucou,

As-tu essayer en passant par la commande RECHERCHER :
image.png.e89327563793cdbf7028a17e2b4f64de.png

En fonction du nombre de fichier, cela peut être suffisant je pense. Sinon il faudra regarder plus en détails (tu as bien un AutoCAD full, et non LT n'est-ce pas ?).

Bisous,
Luna

Posté(e)

Bonjour Luna,

 

La commande "rechercher" fonctionne tres bien ! 

Ce que je n'arrive pas à faire , c'est l'automatiser à l'aide d'un script (ou autre) sur plusieusr fichiers.

Oui j'ai bien Autocad Map 🙂

 

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Posté(e)

Le soucis c'est que cette commande utilise obligatoirement une boîte de dialogue... et n'ayant jamais utilisé le SuperAutoScript je ne saurais vraiment s'il peut fonctionner dans ce cas-là ni même comment il fonctionne. Mais essaye de regarder cela.

Bisous,
Luna

Posté(e)

Bonjour @JVC,

 

Puisque tu as MAP, tu associes tous tes dessins en dessin source, puis tu fais une requête de tous les textes mult, tu lances la fonction RECHERCHER, puis tu ré-enregistres vers tes dessins sources. Tout sera mis à jour.

 

Olivier

Posté(e)

C'est vrai que RECHERCHER ne fonctionne pas avec les scripts.

Mais on peut malgré tout le faire avec un script.

En partant de la solution donné ICI ont peut utiliser le script avec AcCoreConsole et une fonction lisp exécuté dans chaque fichier automatiquement.

Suivre la procédure donné dans la discussion

((lambda ( / f_exe ShlObj Folder FldObj Out_Fld file_scr file_bat)
  (vl-load-com)
  (setq f_exe (findfile "accoreconsole.exe"))
  (setq
    ShlObj (vla-getinterfaceobject (vlax-get-acad-object) "Shell.Application")
    Folder (vlax-invoke-method ShlObj 'BrowseForFolder 0 "" 0)
  )
  (vlax-release-object ShlObj)
  (if Folder
    (progn
      (setq
        FldObj (vlax-get-property Folder 'Self)
        Out_Fld (vlax-get-property FldObj 'Path)
      )
      (vlax-release-object Folder)
      (vlax-release-object FldObj)
    )
  )
  (setq file_scr (open (strcat (getvar "ROAMABLEROOTPREFIX") "support\\update.scr") "w"))
  (write-line "((lambda ( / js n dxf_ent)" file_scr)
  (write-line " (setq js (ssget \"_X\" '((0 . \"*TEXT\"))))" file_scr)
  (write-line " (cond" file_scr)
  (write-line "   (js" file_scr)
  (write-line "     (repeat (setq n (sslength js))" file_scr)
  (write-line "       (setq dxf_ent (entget (ssname js (setq n (1- n)))))" file_scr)
  (write-line "       (if (vl-string-search \"%%C\" (cdr (assoc 1 dxf_ent)))" file_scr)
  (write-line "         (entmod" file_scr)
  (write-line "           (subst" file_scr)
  (write-line "             (cons 1 (vl-string-subst \"ø\" \"%%C\" (cdr (assoc 1 dxf_ent))))" file_scr)
  (write-line "             (assoc 1 dxf_ent)" file_scr)
  (write-line "             dxf_ent" file_scr)
  (write-line "           )" file_scr)
  (write-line "         )" file_scr)
  (write-line "       )" file_scr)
  (write-line "     )" file_scr)
  (write-line "   )" file_scr)
  (write-line " )" file_scr)
  (write-line " (prin1)" file_scr)
  (write-line "))" file_scr)
  (write-line "(command \"_.save\" \"\")" file_scr)
  (close file_scr)
  (setq file_bat (open (strcat (getvar "ROAMABLEROOTPREFIX") "support\\update.bat") "w"))
  (write-line (eval (read "(strcat \"set accoreexe=\" \"\\\"\" f_exe \"\\\"\")")) file_bat)
  (write-line (eval (read "(strcat \"set source=\" \"\\\"\" Out_Fld \"\\\"\")")) file_bat)
  (write-line (eval (read "(strcat \"set script=\" \"\\\"\" (getvar \"ROAMABLEROOTPREFIX\") \"support\\\\update.scr\" \"\\\"\")")) file_bat)
  (write-line "FOR /f \"delims=\" %%f IN ('dir /b \"%source%\\\*.dwg\"') DO %accoreexe% /i \"%source%\\%%f\" /s %script%" file_bat)
  (close file_bat)
  (startapp (strcat (getvar "ROAMABLEROOTPREFIX") "support\\update.bat"))
  (princ"\Job finished")
  (prin1)
)) 

 

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

Posté(e)

Bonjour Olivier et Bonus CAD,

Je vais plutot me pencher sur la solution MAP qui parait ( à 1ere vue) plus simple. D'autant que par la suit, je souhaite aussi, importer un état de calque, decomposer des blocs.

A creuser un peu de mon côté quand meme parce que dans un 1er temps, j'ai eu des ptites surprises: le texte modifié qui n'apparait plus dans on fichier global, un calque en plus qui portait le nom initial+ '_attribut caché'.

j'ai du vouloir aller un peu trop vite en besogne 🙂

en tous cas, merci de vos reponses !

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Posté(e)
Le 03/02/2022 à 12:26, Olivier Eckmann a dit :

Bonjour @JVC,

 

Puisque tu as MAP, tu associes tous tes dessins en dessin source, puis tu fais une requête de tous les textes mult, tu lances la fonction RECHERCHER, puis tu ré-enregistres vers tes dessins sources. Tout sera mis à jour.

 

Olivier

Bonjour Olivier,

 

Visiblement,

ca n'est pas aussi simple que ça pour moi 🙂. J'ai fait les modifs de texte, puis d'autres : decomposer des hachures, des blocs / Ajouter les objets au groupe d'enregistrement / Enregistrement dans les fichiers source / puis enregistrement par aire et

au final je me retrouve avec un fichier global quasi vierge et des fichiers sources DWG non enregistrés et des fichiers DWK recent....

je crois que je suis quite pour refaire toutes ces manip une / une et cette fois dans chaque fichier :)!

Bonne soirée

 

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

  • 2 semaines après...
Posté(e)

Bonjour à toutes et tous,

 

@JVC,

 

Je me permet de penser que la solution donnée par @Olivier Eckmann est la meilleure pour ton problème,..

 

J'avais eu à faire la même chose pour modifier le nom d'un bloc pour ensuite pouvoir faire des requêtes,..Et Olivier m'avais proposé cette solution,.. =>

 

Le 03/02/2022 à 12:26, Olivier Eckmann a dit :

tu associes tous tes dessins en dessin source, puis tu fais une requête

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é