Aller au contenu

Renommer des présentations - préfixe et suffixe


Moon_LS

Messages recommandés

Bonjour à tous !

 

J'ai trouvé plusieurs scripts permettant de renommer des présentations mais pas vraiment dans l’usage que je l'entend.

 

J'ai une pléthore de feuilles existante à renommer qui se regroupe par thème similaire (par exemple des girations de carrefour, pour plusieurs gabarit de véhicule).

 

J'ai un lisp qui me permet d'ajouter des suffixe et préfixe aux calques qui est bien utile, et permet de supprimer un nombre de caractère en fin ou début de nom.

 

Je cherche le même genre de lisp mais pour les noms de présentation.

 

Exemple avec 3 présentations :

111

222

333

 

Je souhaiterai pouvoir les renommer :

ABC_111

ABC_222

ABC_333

 

Et par exemple dupliquer ces mêmes présentations ainsi renommer, faire une selection et modifier le trigramme d’entête :

XYZ_111

XYZ_222

XYZ_333

 

Est-ce que l'un d'entre-vous possède un tel petit bijou de solution :-)

 

Merci d'avance !

Lien vers le commentaire
Partager sur d’autres sites

salut,

avec le code ci dessous, il te faut PowerClic installé.

;;**************************************************************************
;§/traces/Ajout ou supression des suffixe prefixe à une sélection d'onglets/none
(defun c:suffix-prefix_onglet ( /   layout_col nb i name taborder lres)
  (vl-Load-Com)
  (pw_bydefault "lay-mode" "Ajout")
(PW_GETKWORDMEM "Ajout ou suppression de prefix-suffixe ?/Ajout Suppression" "lay-mode")

 (setq pw-lay-suffix (pw_s_lchaines3 "\nSpécifiez les onglet a renomer: " (vl-remove "Model" (layoutlist)) 1 pw-lay-suffix))
 (pw_getstringmem  "\nPréfixe ? (* pour supprimer la valeur)" "pw-prefix")
 (if (= "*" pw-prefix)
   (setq pw-prefix "")
 )
 (pw_getstringmem  "\nSuffixe ? (* pour supprimer la valeur)" "pw-suffix")
 (if (= "*" pw-suffix)
   (setq pw-suffix "")
 )
 
 (setq layout_col (vla-Get-Layouts pw-acadDocument))
 (foreach lay pw-lay-suffix
   (setq oLay (vlax-invoke-method layout_col 'Item lay ))
   (if	(= "Ajout" lay-mode)
     (progn
(setq newname (strcat pw-prefix lay))
(setq newname (strcat newname pw-suffix))
     )

     (progn
(setq newname (pw_str_subst "" pw-prefix lay))
(setq newname (pw_str_subst "" pw-suffix newname))
     )
   )
     (vlax-put-property oLay 'Name newname)
 )
)

sinon, il faut remplacer les fonction de cette manière, ce sera moins pratique :

(PW_GETKWORDMEM "Ajout ou suppression de prefix-suffixe ?/Ajout Suppression" "lay-mode")
devient :
(setq lay-mode (getstring "Ajout ou suppression de prefix-suffixe ?/Ajout Suppression" ))

je pense qu'il y a d'autre commande sur cadxp en tout en un, mais au moisn, tu peux t'inspire de cet exemple ...

Gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

salut,

dans ce cas, tu n'as qu'a installer PowerClic,

c'est pas compliqué: un liens ou tu trouvera des infos pour l'installer :

Powerclic blog

comme je vois que je n'ai pas vraiment répondu avec suffix/prefix

car tu veux aussi renomer et dupliquer,

jet te joins toute la collec:

Gégé

 

 

;;**************************************************************************
;§/traces/renome les onglets par leur rang/none
(defun c:renum_onglet ( / acadObject acadDocument layout_col nb i name taborder lres)
  (vl-Load-Com)
 (setq acadObject (vlax-get-acad-object)) ;;accède au début de objets?
 (setq acadDocument (vla-get-ActiveDocument acadObject)) ;;accède au document actif
 (setq layout_col (vla-Get-Layouts acadDocument))
   (setq nb (vlax-get-property layout_col 'Count))
 ;;parcours les layouts pour afficher leurs propriétés
 (setq i 0)
 (while (< i nb)
   (setq id (vlax-invoke-method layout_col 'Item i ))
   (setq name  (vla-get-Name id ))
   (setq taborder (vla-get-TabOrder id ))
   (if (/= taborder 0)
     (progn
     (setq newname (rtos taborder 2 0))
     (vlax-put-property id 'Name newname)
     )
   )
   (setq i (+ 1 i))
 )

)
;;**************************************************************************
;§/traces/Ajout ou supression des suffixe prefixe à une sélection d'onglets/none
(defun c:suffix-prefix_onglet ( /   layout_col nb i name taborder lres)
  (vl-Load-Com)
  (pw_bydefault "lay-mode" "Ajout")
(PW_GETKWORDMEM "Ajout ou suppression de prefix-suffixe ?/Ajout Suppression" "lay-mode")

 (setq pw-lay-suffix (pw_s_lchaines3 "\nSpécifiez les onglet a renomer: " (vl-remove "Model" (layoutlist)) 1 pw-lay-suffix))
 (pw_getstringmem  "\nPréfixe ? (* pour supprimer la valeur)" "pw-prefix")
 (if (= "*" pw-prefix)
   (setq pw-prefix "")
 )
 (pw_getstringmem  "\nSuffixe ? (* pour supprimer la valeur)" "pw-suffix")
 (if (= "*" pw-suffix)
   (setq pw-suffix "")
 )
 
 (setq layout_col (vla-Get-Layouts pw-acadDocument))
 (foreach lay pw-lay-suffix
   (setq oLay (vlax-invoke-method layout_col 'Item lay ))
   (if	(= "Ajout" lay-mode)
     (progn
(setq newname (strcat pw-prefix lay))
(setq newname (strcat newname pw-suffix))
     )

     (progn
(setq newname (pw_str_subst "" pw-prefix lay))
(setq newname (pw_str_subst "" pw-suffix newname))
     )
   )
 
     (vlax-put-property oLay 'Name newname)
  
 )

)

 


 


;;**************************************************************************
;§/traces/remplace une chaine dans le nom des onglets /none
(defun c:cherche_remplace_onglet ( / acadObject acadDocument layout_col nb i name taborder lres)
 (pw_getstringmem "\nChaine à rechercher ? *? à préciser : " "onglet-cherche")
 (pw_getstringmem "\nChaine de remplacement ?  (* pour supprimer la valeur)" "onglet-remplace")
 (if (= "*" onglet-remplace)
   (setq onglet-remplace "")
 )
 (setq o-cherche (PW_STR_SUBST "" "*"  onglet-cherche) )
 (setq o-cherche (PW_STR_SUBST "" "?"  o-cherche) )
  (vl-Load-Com)
 (setq acadObject (vlax-get-acad-object)) ;;accède au début de objets?
 (setq acadDocument (vla-get-ActiveDocument acadObject)) ;;accède au document actif
 (setq layout_col (vla-Get-Layouts acadDocument))
   (setq nb (vlax-get-property layout_col 'Count))
 ;;parcours les layouts pour afficher leurs propriétés
 (setq i 0)
 (while (< i nb)
   (setq id (vlax-invoke-method layout_col 'Item i ))
   (setq name  (vla-get-Name id ))
   (setq taborder (vla-get-TabOrder id ))
   
   (if (wcmatch name onglet-cherche)
     (progn
     (setq newname (PW_STR_SUBST_All  onglet-remplace o-cherche  name))
     (vlax-put-property id 'Name newname)
     )
   )
   (setq i (+ 1 i))
 )

)

;;************************************************************************* *
;§/traces/copie l'onglet nb fois/layout nb
(defun pw_copie_onglet_simple (objLayoutSource		  nb
		/	     acadObject	  acadDocument
		layout_col   nb		  i
		name	     taborder	  lres
	       )

 (setq strNomNouveauLayout (vla-get-name objLayoutSource))
 (setq layouts (vla-get-Layouts pw-acaddocument))
 (repeat nb
   (setq strNomNouveauLayout (pw_inc_ch strNomNouveauLayout 1))
    (setq objLayout (vla-add layouts strNomNouveauLayout))
    (vla-Copyfrom objLayout objLayoutSource)
 )
)

;;************************************************************************* *
;;;§/traces/copie l'onglet courant n fois/none
(defun c:copie_onglet_courant (/ acLay    )
(vl-Load-Com)

(setq aclay (get_aclayout))
(pw_getintmem "\nNombre de copies ?" "layout-number")
(pw_copie_onglet aclay layout-number)
)
;;************************************************************************* *
;;;§/traces/copie l'onglet nb fois/layout nb
(defun pw_copie_onglet (objLayoutSource		      nb
		/	       nom	      layouts
		strNomNouveauLayout	      objLayout
		objlst
	       )

;;;Function CopierPresentation(objLayoutSource As AcadLayout, strNomNouveauLayout As String) As AcadLayout
;;;Dim objLayout As AcadLayout
;;;Dim objArray() As Object
;;;Dim i As Integer
;;;Dim intBlockCount As Integer
;;;
;;; On Error Resume Next
;;;
;;; 'Additionner la nouvelle présentation
 (setq strNomNouveauLayout (vla-get-name objLayoutSource))
 (setq layouts (vla-get-Layouts pw-acaddocument))
 (repeat nb
   (setq strNomNouveauLayout (pw_inc_ch strNomNouveauLayout 1))
;;; Set objLayout = ThisDrawing.Layouts.Add(strNomNouveauLayout)
   (setq objLayout (vla-add layouts strNomNouveauLayout))

;;;
;;; objLayout.CopyFrom objLayoutSource
   (vla-Copyfrom objLayout objLayoutSource)

;;; MODIFICATION en remplacement de ce qui est ci dessous.

   (vlax-for o	(vla-get-block objLayoutSource)
     (setq objlst (cons o objlst))
   )

   (vlax-invoke
     pw-acaddocument
     'CopyObjects
     (reverse objlst)
     (vla-get-block objLayout)
   )

 )
)


;;**************************************************************************
;§/traces/renome les onglets par leur rang/none
;;numéroation alphabetique
(defun c:onglet_armand_jeamot ( / acadObject acadDocument layout_col nb i name taborder lres)
 
 (setq pw-lista (list "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "AA" "AB" "AC" "AD" "AE" "AF" "AG" "AH" "AI" "AK" "AL" "AM" "AN" "AO" "AP" "AQ" ))
 
 (vl-Load-Com)
 (setq acadObject (vlax-get-acad-object)) ;;accède au début de objets?
 (setq acadDocument (vla-get-ActiveDocument acadObject)) ;;accède au document actif
 (setq layout_col (vla-Get-Layouts acadDocument))
   (setq nb (vlax-get-property layout_col 'Count))
 ;;parcours les layouts pour afficher leurs propriétés
 (setq i 0)
 (while (< i nb)
   (setq id (vlax-invoke-method layout_col 'Item i ))
   (setq name  (vla-get-Name id ))
   (setq taborder (vla-get-TabOrder id ))
   (if (/= taborder 0)
     (progn
     (setq newname (nth (- taborder 1) pw-lista))
     (vlax-put-property id 'Name newname)
     )
   )
   (setq i (+ 1 i))
 )

)

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup pour ton retour complet :-)

 

Pour PowerClic, c'est pas que je ne souhaite pas l'installer mais étant en entreprise, je n'ai qu'un accès limité de ma machine et bien évidement, les installations logiciels c'est pas permis ;-)

 

Mais je garde ça au chaud, on sait jamais!

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é