Fred44 Posté(e) le 7 avril 2011 Posté(e) le 7 avril 2011 Bonjour le forum, J'ai besoin de supprimer les termes avant le vrai nom des blocs exemple (standard) :3944-DCE-LUSTRERIE LOT13$0$Standard Je connais la fonction renommer mais je désirerai une manip automatique pour renommer TOUS les blocs en lot.Quelqu'un s'est-il penché sur la question?
rebcao Posté(e) le 7 avril 2011 Posté(e) le 7 avril 2011 Bonjour, Il faudrait une moulinette en LISP. Mais tu peux aussi faire ça avec EXCEL qui va générer le SCRIPT qui va bien... Si tu as un exemple, tu peux me l'envoyer à l'adresse en pied de page. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
capde06 Posté(e) le 8 avril 2011 Posté(e) le 8 avril 2011 la commande renommer accepte les caractères génériquescaractère de remplacement *donc 3944-DCE-LUSTRERIE LOT13$0$* dans la case nouveau nom: * et tous les blocs sont renommés j'ai fais une moulinette ya longtemps a testerren_pl renomme les calquesren_blk renomme les blocsca renomme jusqu'au caractère $donc a lancer plusieurs fois (defun c:ren_pl() (command "purger" "to" "" "n") (command "annuler" "m") (setq lpl nil) (setq lpl (cons (cdr (assoc 2 (tblnext "layer" T))) lpl)) (while (setq X (cdr (assoc 2 (tblnext "layer")))) (setq lpl (cons X lpl)) ) (setq lpl (acad_strlsort lpl)) (setq ll (length lpl)) (setq x 0) (repeat ll (setq pl (nth x lpl)) (if (= (type (findstr pl "$")) 'INT) (progn (setq newname (substr pl (+ (findstr pl "$")1))) (if (= (type(member newname lpl)) 'LIST) (command "-renommer" "ca" pl (strcat newname "_1")) (command "-renommer" "ca" pl newname) ) (princ "\n")(princ pl)(princ " ")(princ newname) ) ) (setq x (+ x 1)) ) ) (defun c:ren_blk() (command "annuler" "m") (setq lpl nil) (setq lpl (cons (cdr (assoc 2 (tblnext "block" T))) lpl)) (while (setq X (cdr (assoc 2 (tblnext "block")))) (setq lpl (cons X lpl)) ) (setq lpl (acad_strlsort lpl)) (setq ll (length lpl)) (setq x 0) (repeat ll (setq pl (nth x lpl)) (if (= (type (findstr pl "$")) 'INT) (progn (setq newname (substr pl (+ (findstr pl "$")1))) (if (/= "0" newname) (progn (if (= (type(member newname lpl)) 'LIST) (command "-renommer" "bl" pl (strcat newname "_1")) (command "-renommer" "bl" pl newname) ) (princ "\n")(princ pl)(princ " ")(princ newname) ) ) ) ) (setq x (+ x 1)) ) (princ) ) (defun Findstr (Cha Cart / Ind Fin) (setq Ind 0) (while (and (/= Fin Cart) (<= Ind (- (strlen Cha) (strlen Cart)))) (setq Ind (1+ Ind)) (setq Fin (substr Cha Ind (strlen Cart))) ) (if (= Fin Cart) Ind "Non touvé" ) ) [Edité le 8/4/2011 par capde06] Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
Fred44 Posté(e) le 15 avril 2011 Auteur Posté(e) le 15 avril 2011 Bonjour,Il faudrait une moulinette en LISP.Mais tu peux aussi faire ça avec EXCEL qui va générer le SCRIPT qui va bien...Si tu as un exemple, tu peux me l'envoyer à l'adresse en pied de page.Christian C'est ce que j'ai fais grace à une macro Excel perso, cela donne ces lignes de script :-renommer BLoc "NGS_P_RdC$0$$AUDIT-BAD-LAYER" "$AUDIT-BAD-LAYER"-renommer BLoc "NGS_P_RdC$0$10-STR-BOIS" "10-STR-BOIS"-renommer BLoc "NGS_P_RdC$0$11-STR-CREEE" "11-STR-CREEE" Mais j'ai l'impression qu'Autocad n'accepte pas les noms trop longs.
Fred44 Posté(e) le 15 avril 2011 Auteur Posté(e) le 15 avril 2011 la commande renommer accepte les caractères génériquescaractère de remplacement *donc3944-DCE-LUSTRERIE LOT13$0$*dans la case nouveau nom:*et tous les blocs sont renommés j'ai fais une moulinette ya longtemps a testerren_pl renomme les calquesren_blk renomme les blocsca renomme jusqu'au caractère $donc a lancer plusieurs foisCapde06 Je te tire mon chapeau, vous êtes trop puissant...Même s'il faut la lancer plusieurs fois cela en vaut la chandelle... un grand merci. Dommage que mon script ne fonctionne pas aussi bien... pour les versions LT. [Edité le 15/4/2011 par Fred44]
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant