bonjour,
je viens a vous car je ne trouve pas solution.
j'ai un bloc qui a été construit avec des 300 étiquettes avec en référence avec une lettre et la codification viens changer et je me vois pas aller dans un bloc éditer et changer a la main une lettre a la fois. après avantage que j'ai c'est que toutes les étiquettes passe d'une lettre a une autres.
Exemple les étiquettes "Exxx" (donc 300 fois) passe en tous "Axxx"
et j'en est d'autres.
si vous avez une idée ?
merci d'avance.
fred
Résolu ! Accéder à la solution.
Résolu par CADaSchtroumpf. Accéder à la solution.
Résolu par CADaSchtroumpf. Accéder à la solution.
Salut,
Si tu as les Express Tools d'installés, tu peux lancer la commande ATTOUT et sélectionner tous tes blocs en question.
Tu obtiendra un fichier texte que tu ouvres avec Excel ou un autre tableur., tu remplace dans la colonne des Exxxx par Axxxx puis tu enregistres ton fichier.
Tu retourne sur AutoCAD, tu tapes la commande ATTIN, tu sélectionnes ton fichier texte et tous tes attributs Exxxx seront remplacer par Axxxx.
bonjour,
merci pour essayer m'aidez, mais express tool fonctionne pas chez nous.
je vais mettre une photo comme exemple, là c'est le E qui doit être remplacer par A mais j'en aient d'autre cas.
bonjour,
merci c'est bien ce que que je pensais.
je vais essayer trouver un lisp car a un main risque d'erreur .
merci a tous
Bonjour,
Ces quelques lignes copiés directement sur la ligne de commande "devraient" faire le job.
Je dis bien devraient car je n'ai pu tester en situation réelle, je me suis basé sur tes indications (image comprise).
((lambda ( / js_bl n ent tag) (setq js_bl (ssget "_X" '((0 . "INSERT") (2 . "REPRE")))) (repeat (setq n (sslength js_bl)) (setq ent (ssname js_bl (setq n (1- n)))) (foreach a (vlax-invoke (vlax-ename->vla-object ent) 'GetAttributes) (setq tag (vla-get-TagString a)) (cond ((wcmatch tag "E##@#") (vla-put-TagString a (strcat "A" (substr tag 2))) ) ) ) ) ))
Cela va modifier toutes tes insertions du bloc déjà effectuées, mais en aucun cas ta définition du bloc, il serait bien de le faire sinon le problème des étiquettes va persister lors de tes insertions futures.
((wcmatch tag "E##@#")
Sa fonctionne super bien dans un premier temps ou les étiquettes sont bien changer quand je rentre dans le bloc mais pas en éditeur de bloc, je vais voir avec import si sa rempli bien toutes les étiquettes.
il faut juste que je change les # et @ selon les étiquettes.
merci beaucoup.
fred
il faut juste que je change les # et @ selon les étiquettes.
Je pense qu'il est en effet judicieux de procéder ainsi, quitte à faire plusieurs passes du lisp (après modification), de façon à bien cibler les changements et de pas changer une étiquette malencontreusement.
Dans l'éditeur de bloc, tu peux aussi répéter la procédure avec le lisp suivant pour mettre à jour ta définition de bloc, je te laisse ajuster les détails.
((lambda ( / js_at n ent dxf_ent tag) (setq js_at (ssget "_X" '((0 . "ATTDEF")))) (repeat (setq n (sslength js_at)) (setq ent (ssname js_at (setq n (1- n))) dxf_ent (entget ent) tag (cdr (assoc 2 dxf_ent)) ) (cond ((wcmatch tag "E##@#") (entmod (subst (cons 2 (strcat "A" (substr tag 2))) (assoc 2 dxf_ent) dxf_ent)) ) ) ) ))
Bonjour,
il m'a suffit de répété dans un fichier .txt plusieurs fois la commande en modifiant les # et les @ et après le copier direct dans ma ligne de commande et hop tous changer et fait pareil pour l'éditeur de bloc.
merci beaucoup.
vous avez fait gagner beau temps.
fred
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.