Aller au contenu

Renommer tous les blocs


Messages recommandés

Posté(e)

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?

Posté(e)

la commande renommer accepte les caractères génériques

caractè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 tester

ren_pl renomme les calques

ren_blk renomme les blocs

ca 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 !!!!

Posté(e)
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.

Posté(e)
la commande renommer accepte les caractères génériques

caractè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 tester

ren_pl renomme les calques

ren_blk renomme les blocs

ca renomme jusqu'au caractère $

donc a lancer plusieurs fois

Capde06 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]

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é