Aller au contenu

Renommer les calques en masse


mikl63

Messages recommandés

Salut à tous,

savez vous s'il est possible de renommer en masse les calques d'un fichier ?

Je m'explique :

certaines boites ont du mal avec les noms de calques et laissent systématiquement un N°0 devant.

Mon but serait de renommer tous ces calques commençant par 0 pour leur donner un nom correspondant à leur lot et spécialité.

C'est faisable via renommer ou dans la boite de calques mais un par un seulement et quand j'en ai 50...

Lien vers le commentaire
Partager sur d’autres sites

salut

 

lisp trouvé sur le net ou ici je ne sais plus

 

en tout cas merci a lui ou à ELLE, ya pas de raison

 

 

le premier renomme

le second renomme et fusionne si le nom existe deja

 

a+

 

phil

 

 

 					; NEWLAYER-AJOUT PREFIXE.LSP

				;........................................................
				; ce programme modifie le nom du debut des nappes
				; l'utilisateur saisi les caracteres qu'il veut supprimer
				; puis saisi a la suite les caracteres de remplacement
				;........................................................


(defun C:NNL (/ NOM NOM1 NOMB NOMB2 OLDTX OLDTX1 OLDTX2 SSET NBSSET V2 NEWTX NEWTXT ENT ENTIT)
  (setvar "cmdecho" 0) 
  (command "-calque" "ch" "0" "")
  (setq NOM (getstring "\n FILTRE DEBUT NOM DE CALQUES a modifier PAR AJOUT DE PREFIXE:"))
  (setq NOM1 (getstring "\n Nouveau PREFIXE DES CALQUES :"))
  (setq NOMB (strlen NOM))
  (setq NOMB2 (+ 1 NOMB))		; On se positionne sur le premier nom de plan qui est défini
  (setq X_PLAN (tblnext "layer" t))	; On boucle pour passer un à un tous les plans
  (while (/= X_PLAN NIL)		;recherche du nom de la nappe dans l'entite incremente
				;sous la forme d'une liste 
     (setq OLDTX1 (assoc 2 X_PLAN))	;(prin1 oldtx1)
				;le nom de la nappe est le second texte de la liste ci dessus 
     (setq OLDTX (cdr OLDTX1))
     (prin1 OLDTX)			;boucle de test variable
     (setq BOUCLE 1)
     (while (< BOUCLE 10)		;recherche du debut de texte du nom de la nappe 
 (setq OLDTX2 (substr OLDTX BOUCLE NOMB)) ;(prin1 oldtx2)
				;(prin1 nomb)
				;test pour savoir si le debut du texte dans l'entite 
				;correspond au texte que l'on veut supprimer
 (if (= NOM OLDTX2)
    (progn			;suppression du debut de texte du nom de la nappe
       (setq NOMB3 (+ BOUCLE NOMB))
       (setq OLDTX3 (substr OLDTX NOMB3))
       (prin1 (strcat "\n : " OLDTX3))		;concatenation du nouveau texte avec l'ancien moins le debut de texte 
				;qui a ete supprime
       (setq NEWTX (strcat NOM1 OLDTX3)) ;command AUTOCAD renommer 
       (command "renommer" "ca" OLDTX NEWTX)
       (prompt (strcat "\nL'ANCIEN CALQUE     : " OLDTX))
       (prompt (strcat "\nA ETE RENOMMER PAR  : " NEWTX))
       (prompt "\n")
    )				; fin du progn
 )				; fin du while
 (setq BOUCLE (+ BOUCLE 1))
     )
     (setq X_PLAN (tblnext "layer"))
  )					; fin du while
  (princ)
)

 

 	; NEWLAYER-AJOUT PREFIXE.LSP

				;........................................................
				; ce programme modifie le nom du debut des nappes
				; l'utilisateur saisi les caracteres qu'il veut supprimer
				; puis saisi a la suite les caracteres de remplacement
				;........................................................


(defun C:NNLF (/
              NOM NOM1 NOMB NOMB2 OLDTX OLDTX1 OLDTX2 SSET NBSSET V2 NEWTX NEWTXT ENT ENTIT
              )
  (setvar "cmdecho" 0)
 (command "-calque" "ch" "0" "")
  (setq NOM (getstring "\n FILTRE DEBUT NOM DE CALQUES a modifier PAR AJOUT DE PREFIXE:"))
  (setq NOM1 (getstring "\n NOUVEAU PREFIXE DES CALQUES :"))
  (setq NOMB (strlen NOM))
  (setq NOMB2 (+ 1 NOMB))		; On se positionne sur le premier nom de plan qui est défini
  (setq X_PLAN (tblnext "layer" t))	; On boucle pour passer un à un tous les plans
  (while (/= X_PLAN NIL)		;recherche du nom de la nappe dans l'entite incremente
				;sous la forme d'une liste 
     (setq OLDTX1 (assoc 2 X_PLAN))	;(prin1 oldtx1)
				;le nom de la nappe est le second texte de la liste ci dessus 
     (setq OLDTX (cdr OLDTX1))
     (prin1 OLDTX)			;boucle de test variable
     (setq BOUCLE 1)
     (while (< BOUCLE 10)		;recherche du debut de texte du nom de la nappe 
 (setq OLDTX2 (substr OLDTX BOUCLE NOMB)) ;(prin1 oldtx2)
				;(prin1 nomb)
				;test pour savoir si le debut du texte dans l'entite 
				;correspond au texte que l'on veut supprimer
 (if (= NOM OLDTX2)
    (progn			;suppression du debut de texte du nom de la nappe
       (setq NOMB3 (+ BOUCLE NOMB))
       (setq OLDTX3 (substr OLDTX NOMB3))
       (prompt (strcat "\n : " OLDTX3))		;concatenation du nouveau texte avec l'ancien moins le debut de texte 
				;qui a ete supprime
       (setq NEWTX (strcat NOM1 OLDTX3)) ;command AUTOCAD renommer 


              (if ( = (tblsearch "layer" NEWTX ) nil )
                  
                  (progn
;;;                   (prompt "\n RENOMMER" )
                  (command "renommer" "ca" OLDTX NEWTX)
                  (prompt (strcat "\nL'ANCIEN CALQUE     : " OLDTX))
           (prompt (strcat "\nA ETE REMOMME PAR   : " NEWTX))
           (prompt "\n")
                  )
                  (progn
;;;                   (prompt "\n FUSION" )
                  (command "-fuscalques" "n" OLDTX "" "n" NEWTX "o" )
                  (prompt (strcat "\nL'ANCIEN CALQUE      : " OLDTX))
           (prompt (strcat "\nA ETE FUSIONNER AVEC : " NEWTX))
           (prompt "\n")

                  )

)
              
    )				; fin du progn
 )				; fin du while
 (setq BOUCLE (+ BOUCLE 1))
     )
     (setq X_PLAN (tblnext "layer"))
  )					; fin du while
  (princ)
)

 

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

j'ai essayé mais je ne vois pas l'option pour renommer les calques.

Il existe pas mal d'option inclus dans ce lisp comme geler les calques, rendre un calque courant...mais je ne trouve pas celle dont on parle.

 

EDIT : au temps pour moi, ca marche super bien.

En fait j'avais copier coller les 2 lisps au lieu d'un seul.

Merci beaucoup à toi

 

[Edité le 6/4/2011 par mikl63]

Lien vers le commentaire
Partager sur d’autres sites

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é