mikl63 Posté(e) le 5 avril 2011 Posté(e) le 5 avril 2011 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...
mikl63 Posté(e) le 5 avril 2011 Auteur Posté(e) le 5 avril 2011 Et toujours ce problème de post en doublons...
PHILPHIL Posté(e) le 5 avril 2011 Posté(e) le 5 avril 2011 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 renommele 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) ) FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
mikl63 Posté(e) le 6 avril 2011 Auteur Posté(e) le 6 avril 2011 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]
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