PHILPHIL Posté(e) le 2 juillet 2019 Posté(e) le 2 juillet 2019 bonjour j'ai des fichiers avec pas mal de présentations de différentes tailles certaines sont a imprimer dans un *.pdf a feuille unique : les A0 ou A1certaines sont a regrouper / imprimer dans un *.pdf a plusieurs feuilles : les A3 A4 pour les *.pdf a feuille unique pas de souci avec PUBLIER pour les carnet *.pdf a plusieurs feuille je suis obligé de refaire plusieurs fois de suite PUBLIER avez vous une astuces , un programme, un LISp, un fichier excel permetant de de choisir les présentations, et de définir si celle ci s'imprime dans un *.pdf a feuille unique ou regrouper des présentations pour les imprimer dans un ou des *.pdf a feuille multiple presentation01 => presentation01.pdf presentation02 + presentation03 => carnet01.pdfpresentation04 + presentation05 => carnet02.pdf presentation06 => presentation06.pdf en choisissant le nom de sortie pdf bien sur en choisissant / dispatchant / imprimant les 186+ présentations d'un coup apres y'en a pour une heure d'impression pour autocad sur a+, Merci, Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Olivier Eckmann Posté(e) le 2 juillet 2019 Posté(e) le 2 juillet 2019 Bonjour, Pourquoi ne pas passer par les jeux de feuilles. Olivier
PHILPHIL Posté(e) le 2 juillet 2019 Auteur Posté(e) le 2 juillet 2019 hello merci je vais regarder ca de plus pres,mais je sens un inconvenient, c'est que chaque jour j'incremente mon fichier *.dwg et que je crois savoir que un jeu de feuille est lier a un *.dwg, donc quid de la mise a joura moins d'ouvrir le fichier jeu de feuille avec un editeur de texte et changer rapidement le nom du *.dwg a+, Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Olivier Eckmann Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 Salut, L'avantage du jeu de feuille, c'est que tu peux travailler sur plusieurs DWG (n présentations de x dwg). l'autre avantage, c'est que tu disposes de données (champs) propres au jeu de feuille que tu peux inscrire sur tes présentations : par exemple un projet consiste dans 10 présentations sur 3 DWG différents, tu changes d'indice dans les propriétés de ton jeu de feuille, ça permet de mettre à jour tes 10 présentations (donc les 3 dwg) en une seul fois. L'inconvénient, c'est que ce n'est pas dynamique. Si tu rajoutes une présentation, il faudra la rajouter dans ton jeu de feuille. Le 2ème inconvénient c'est que le jeu de feuille est un fichier binaire et non ASCII contrairement au fichier DSD de publication. Pour le nommage des fichiers en principe mon fichier de travail possède toujours le même nom, et j'indice la sauvegarde avant de travailler une nouvelle version. Par ex mon fichier s'appelle PROJET.DWG, lorsque je travaille sur une nouvelle version, je copie la version actuelle en PROJET_V1 et je continue mon travaille dans PROJET, lorsque je change a nouveau de version, je copie PROJET en PROJET_V2 et je continue à travailler dans PROJET. Olivier
PHILPHIL Posté(e) le 3 juillet 2019 Auteur Posté(e) le 3 juillet 2019 HELLO ca n'a rien de pratique ce gestionnaire, c'est lent en plus quand on fait des sous jeu,( qui corresponde a des carnets ) on peut déterminé s'il s'imprime dans un *.pdf multi-feuille ou pas indépendamment d'un autre sous jeu ?avoir un sous jeu s'imprimant dans un *.pdf multi-feuilleet un autre sous jeu qui s'imprime dans plusieurs *.pdf et le nom de sortie du *.pdf on le determine comment une bonne fois pour toute ?c'est meme pas la concatenation du nom du jeu de feuille avec le nom du sous jeu j'ai voulu essayer "JTB WORLD, sheetset publish" mais ca a planter et depuis le delai de 30 jours est passé qui l'a testé ? a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
philsogood Posté(e) le 3 juillet 2019 Posté(e) le 3 juillet 2019 hellofaux suisse vait testé sheetset publisher et il semblait en être très satisfait me semble-t-il++PhilPS : le truc chiant sur ta problématique c'est ton impératif de devoir changer les noms de fichiers régulièrement... perso le nom de ficheir change jamais, seul le nom de l'onglet qui comprend l''indice de la dernière diffusion change Projeteur Revit Indépendant - traitement des eaux/CVC
PHILPHIL Posté(e) le 5 juillet 2019 Auteur Posté(e) le 5 juillet 2019 hello L'incrémentation journalière, ou presque,de mes nom de fichiers a un coté pratique mes clients ont des portables, ils mettent du temps a ouvrir les fichiersdans l'explorateur de fichier ils voient tout de suite de quel fichier on parle sans a voir a l'ouvrir, pour aller regarder l indice dans un onglet et je peux leurs envoyer deux versions dans la meme journée quand ils ouvrent un *.pdf la référence du nom de fichier *.dwg est dans le cartoucheon si retrouve plus vite, ca me permet aussi de suivre s'il sont a jour, et sur quel fichier ils travaillent mes nom de présentations se termine par un chiffre et une lettre, et sont récupés a l'aide d'un champ dans le cartouche style "PL001-" 001 = N° de la planche"-" "A" = indice de la planche et avec mes lisps, je change les noms de présentations en 2secj'incrémente, je change la derniere lettre, a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Netparty Posté(e) le 22 décembre 2021 Posté(e) le 22 décembre 2021 Le 05/07/2019 à 11:16, PHILPHIL a dit : hello L'incrémentation journalière, ou presque,de mes nom de fichiers a un coté pratique mes clients ont des portables, ils mettent du temps a ouvrir les fichiers dans l'explorateur de fichier ils voient tout de suite de quel fichier on parle sans a voir a l'ouvrir, pour aller regarder l indice dans un onglet et je peux leurs envoyer deux versions dans la meme journée quand ils ouvrent un *.pdf la référence du nom de fichier *.dwg est dans le cartouche on si retrouve plus vite, ca me permet aussi de suivre s'il sont a jour, et sur quel fichier ils travaillent mes nom de présentations se termine par un chiffre et une lettre, et sont récupés a l'aide d'un champ dans le cartouche style "PL001-" 001 = N° de la planche "-" "A" = indice de la planche et avec mes lisps, je change les noms de présentations en 2sec j'incrémente, je change la derniere lettre, a+ Phil Bonjour Phil Je suis tombé par hasard sur ton post et ta méthode m’intéresse fortement. Pourrais-tu m’expliquer ta méthode pour renommer tes présentation suivant les champs de ton cartouche Merci
PHILPHIL Posté(e) le 27 décembre 2021 Auteur Posté(e) le 27 décembre 2021 hello netparty nom type de mes présentations A1H RDC 1-50 PL001- type de feuille : "A1" VERTICALE ou HORIZONTALE : "V" ou "H" nom variable de présentation : "RDC", "COUPE", "plan du niveau 3 bat z" ..... echelle variable de la planche, la feuille : "1-50", "1-100" .... planche : "PL" numero de la planche sur 3 chiffres ( récupérée dans cartouche) : "001" indice de planche : "-" ceci récupere le dernier caractere du nom de ma présentation. c'est un champ, dans un texte, il me sert pour donner l'indice de mon plan a mettre dans un cartouche $(substr,$(getvar, ctab),$(-,$(strlen,$(getvar,ctab)),0),1) ceci récupere les 3 chiffres composant le numero de la planche du nom de ma présentation a mettre dans un cartouche $(substr,$(getvar, ctab),$(-,$(strlen,$(getvar,ctab)),3),3) et apres des lisp pour changer facilement les noms de présentations. j'en ai peut etre oublié certains bout, dites moi si ca plante, je les rajouterai. pour les fonctions "10" "11" "12" et "13" , il faut que TOUS LES NOMS de présentations du fichier *.dwg soit du meme type et correspondent a la recherche du lisp, sinon ca plante. 10 : A1H RDC 1-50 PL001-, A1H R 1 1-50 PL002-, A1H R 2 1-50 PL003- 11, 12, 13 : A1H R 1 1-50 PL001-, A1H R 1 1-50 PL002-, A1H R 1 1-50 PL003-, A1H R 2 1-50 PL011A, A1H R 2 1-50 PL012A, A1H R 2 1-50 PL013A ;;;----------------------------------- ;;;CHANGE_NOM_PRESENTATION ;;;----------------------------------- (defun c:change_nom_presentation () (setq typeactioncnp (getcfg "APPDATA/typeactioncnp")) (prompt "\n 1 : REMPLACER LE DERNIER CARACTERE DU NOM DES PRESENTATIONS" ) (prompt "\n 2 : REMPLACER LE PREMIER CARACTERE DU NOM DES PRESENTATIONS" ) (prompt "\n 3 : REMPLACER A PARTIR DE Y CARACTERES DEPUIS LE DEBUT SUR LE(S) X CARACTERE(S) [SI X=0 CORRESPOND A INSERER]" ) (prompt "\n 4 : SOUSTRAIRE LES X DERNIERS CARACTERES DU NOM" ) (prompt "\n 5 : SOUSTRAIRE LES X PREMIERS CARACTERES DU NOM" ) (prompt "\n 6 : INCREMENTER SUR 3 CARACTERES EN RAJOUTANT DEVANT LE NOM DE PRESENTATION" ) (prompt "\n 7 : INCREMENTER SUR 3 CARACTERES EN REMPLACANT LES 4 IEME A 2 IEME A PARTIR DE LA FIN" ) (prompt "\n 8 : INCREMENTER SUR 5 CARACTERES EN REMPLACANT LES 6 IEME A 2 IEME A PARTIR DE LA FIN" ) (prompt "\n 9 : REMPLACER DES CARACTERES DANS LE NOM") (prompt "\n 10 : TRIER LES NOMS DE PRESENTATIONS SUR LES 4 IEME A 2 IEME CARACTERE A PARTIR DE LA FIN") (prompt "\n 11 : TRIER LES NOMS DE PRESENTATIONS SUR 4 à X et LES 4 IEME A 2 CARACTERE A PARTIR DE LA FIN VERSION A") (prompt "\n 12 : TRIER LES NOMS DE PRESENTATIONS SUR 4 à X et LES 4 IEME A 2 CARACTERE A PARTIR DE LA FIN VERSION B") (prompt "\n 13 : TRIER LES NOMS DE PRESENTATIONS SUR 4 à X et LES 4 IEME A 2 CARACTERE A PARTIR DE LA FIN VERSION C") (initget "1 2 3 4 5 6 7 8 9 10 11 12 13") (setq tmp (getkword (strcat "\nSELECTIONNER LE TYPE D'ACTION DESIRE ( 1 2 3 4 5 6 7 ... ) <" typeactioncnp "> : " ) ) ) (if tmp (setq typeactioncnp tmp) ) (setcfg "APPDATA/typeactioncnp" typeactioncnp) (if (= typeactioncnp "1") (progn (c:cnpfin)) ) (if (= typeactioncnp "2") (progn (c:cnpdebut)) ) (if (= typeactioncnp "3") (progn (c:cnpdepuisysurx)) ) (if (= typeactioncnp "4") (progn (c:cnpsoutrairxcaractdefin)) ) (if (= typeactioncnp "5") (progn (c:cnpsoutrairxcaractdepuisdebut)) ) (if (= typeactioncnp "6") (progn (c:cnpincrementer3DEBUT)) ) (if (= typeactioncnp "7") (progn (c:cnpincrementer4a2fin)) ) (if (= typeactioncnp "8") (progn (c:cnpincrementer6a2fin)) ) (if (= typeactioncnp "9") (progn (c:cnpremplacecaract)) ) (if (= typeactioncnp "10") (progn (c:cnpTRIER4a2fin)) ) (if (= typeactioncnp "11") (progn (c:cnpTRIER4axet4a2finA)) ) (if (= typeactioncnp "12") (progn (c:cnpTRIER4axet4a2finB)) ) (if (= typeactioncnp "13") (progn (c:cnpTRIER4axet4a2finC)) ) (princ) ) (defun c:cnpfin () (setq cnpcdefin (getcfg "APPDATA/CNPCDEFIN")) (setq com1 (getstring t (strcat "\nVEUILLEZ ENTRER LE(S) CARACTERE(S) EN REMPLACEMENT DU DERNIER CARACTERE DU NOM <" cnpcdefin "> : " ) ) ) (if (/= com1 "") (setq cnpcdefin com1) ) (setcfg "APPDATA/CNPCDEFIN" cnpcdefin) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (setq nouveaunom (strcat (substr layout 1 (- (strlen layout) 1)) cnpcdefin ) ) (command "_.layout" "_ren" layout nouveaunom) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpdebut () (setq cnpcdedebut (getcfg "APPDATA/CNPCDEDEBUT")) (setq com1 (getstring t (strcat "\nVEUILLEZ ENTRER LE(S) CARACTERE(S) EN REMPLACEMENT DU PREMIER CARACTERE DU NOM <" cnpcdedebut "> : " ) ) ) (if (/= com1 "") (setq cnpcdedebut com1) ) (setcfg "APPDATA/CNPCDEDEBUT" cnpcdedebut) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (setq nouveaunom (strcat cnpcdedebut (substr layout 2))) (command "_.layout" "_ren" layout nouveaunom) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpdepuisysurx () (setq cnpcdepuisysurx (getcfg "APPDATA/CNPCDEPUISYSURX")) (prompt "\nREMPLACER A PARTIR DE Y CARACTERES DEPUIS LE DEBUT SUR LE(S) X CARACTERE(S) [SI X=0 CORRESPOND A INSERER]" ) (setq com1 (getstring t (strcat "\nVEUILLEZ ENTRER LE(S) CARACTERE(S) EN REMPLACEMENT DES CARACTERES DU NOM <" cnpcdepuisysurx "> : " ) ) ) (if (/= com1 "") (setq cnpcdepuisysurx com1) ) (setcfg "APPDATA/CNPCDEPUISYSURX" cnpcdepuisysurx) (setq cnpcdepuisdebut (atoi (getcfg "APPDATA/CNPCDEPUISDEBUT"))) (initget 4) (setq tmp (getint (strcat "\nENTRER UN NOMBRE POUR DEFINIR LE DEBUT DU REMPLACEMENT DEPUIS LE DEBUT DU NOM [ MINIMUM : 1]<" (rtos cnpcdepuisdebut 2 0) ">: " ) ) ) (if tmp (setq cnpcdepuisdebut tmp) ) (setcfg "APPDATA/CNPCDEPUISDEBUT" (rtos cnpcdepuisdebut 2 0) ) (setq cnpcsurx (atoi (getcfg "APPDATA/CNPCSURX"))) (initget 4) (setq tmp (getint (strcat "\nENTRER UN NOMBRE POUR DEFINIR LA PLAGE DU REMPLACEMENT DU NOM <" (rtos cnpcsurx 2 0) ">: " ) ) ) (if tmp (setq cnpcsurx tmp) ) (setcfg "APPDATA/CNPCSURX" (rtos cnpcsurx 2 0)) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (setq nouveaunom (strcat (substr layout 1 (- cnpcdepuisdebut 1)) cnpcdepuisysurx (substr layout (+ cnpcdepuisdebut cnpcsurx)) ) ) (command "_.layout" "_ren" layout nouveaunom) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpsoutrairxcaractdefin () (setq cnpsoustraicaractalafin (atoi (getcfg "APPDATA/CNPSOUSTRAICARACTALAFIN") ) ) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE DE CARACTERES A SUPPRIMER A LA FIN DU NOM <" (rtos cnpsoustraicaractalafin 2 0) ">: " ) ) ) (if tmp (setq cnpsoustraicaractalafin tmp) ) (setcfg "APPDATA/CNPSOUSTRAICARACTALAFIN" (rtos cnpsoustraicaractalafin 2 0) ) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (setq nouveaunom (strcat (substr layout 1 (- (strlen layout) cnpsoustraicaractalafin) ) ) ) (command "_.layout" "_ren" layout nouveaunom) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpsoutrairxcaractdepuisdebut () (setq cnpsoustraicaractdepuisdebut (atoi (getcfg "APPDATA/CNPSOUSTRAICARACTDEPUISDEBUT" ) ) ) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE DE CARACTERES A SUPPRIMER DEPUIS LE DEBUT DU NOM <" (rtos cnpsoustraicaractdepuisdebut 2 0) ">: " ) ) ) (if tmp (setq cnpsoustraicaractdepuisdebut tmp) ) (setcfg "APPDATA/CNPSOUSTRAICARACTDEPUISDEBUT" (rtos cnpsoustraicaractdepuisdebut 2 0) ) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (setq nouveaunom (strcat (substr layout (+ cnpsoustraicaractdepuisdebut 1)) ) ) (command "_.layout" "_ren" layout nouveaunom) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpincrementer3debut () (setq cnpnbdpincrement (atoi (getcfg "APPDATA/CNPNBDPINCREMENT"))) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE DE DEBUT D'INCREMENTATION DU NOM <" (rtos cnpnbdpincrement 2 0) ">: " ) ) ) (if tmp (setq cnpnbdpincrement tmp) ) (setcfg "APPDATA/CNPNBDPINCREMENT" (rtos cnpnbdpincrement 2 0) ) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (setq nouveaunom (strcat (rtos cnpnbdpincrement 2 0) " " layout)) (command "_.layout" "_ren" layout nouveaunom) (setq cnpnbdpincrement (1+ cnpnbdpincrement)) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpincrementer4a2fin () (setq cnpnbdpincrement (atoi (getcfg "APPDATA/CNPNBDPINCREMENT"))) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE DE DEBUT D'INCREMENTATION DU NOM <" (rtos cnpnbdpincrement 2 0) ">: " ) ) ) (if tmp (setq cnpnbdpincrement tmp) ) (setcfg "APPDATA/CNPNBDPINCREMENT" (rtos cnpnbdpincrement 2 0) ) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (if (= (strlen (rtos cnpnbdpincrement 2 0)) 1) (setq nombre (strcat "00" (rtos cnpnbdpincrement 2 0))) ) (if (= (strlen (rtos cnpnbdpincrement 2 0)) 2) (setq nombre (strcat "0" (rtos cnpnbdpincrement 2 0))) ) (if (= (strlen (rtos cnpnbdpincrement 2 0)) 3) (setq nombre (strcat (rtos cnpnbdpincrement 2 0))) ) (setq nouveaunom (strcat (substr layout 1 (- (strlen layout) 4)) nombre (substr layout (strlen layout)) ) ) (command "_.layout" "_ren" layout nouveaunom) (setq cnpnbdpincrement (1+ cnpnbdpincrement)) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpincrementer6a2fin () (setq cnpnbdpincrement (atoi (getcfg "APPDATA/CNPNBDPINCREMENT"))) (initget 4) (setq tmp (getint (strcat "\nENTRER LE NOMBRE DE DEBUT D'INCREMENTATION DU NOM <" (rtos cnpnbdpincrement 2 0) ">: " ) ) ) (if tmp (setq cnpnbdpincrement tmp) ) (setcfg "APPDATA/CNPNBDPINCREMENT" (rtos cnpnbdpincrement 2 0) ) (setq layouts (getlayouts nil t)) (foreach layout layouts (progn (if (= (strlen (rtos cnpnbdpincrement 2 0)) 1) (setq nombre (strcat "0000" (rtos cnpnbdpincrement 2 0))) ) (if (= (strlen (rtos cnpnbdpincrement 2 0)) 2) (setq nombre (strcat "000" (rtos cnpnbdpincrement 2 0))) ) (if (= (strlen (rtos cnpnbdpincrement 2 0)) 3) (setq nombre (strcat "00" (rtos cnpnbdpincrement 2 0))) ) (if (= (strlen (rtos cnpnbdpincrement 2 0)) 4) (setq nombre (strcat "0" (rtos cnpnbdpincrement 2 0))) ) (if (= (strlen (rtos cnpnbdpincrement 2 0)) 5) (setq nombre (strcat (rtos cnpnbdpincrement 2 0))) ) (setq nouveaunom (strcat (substr layout 1 (- (strlen layout) 6)) nombre (substr layout (strlen layout)) ) ) (command "_.layout" "_ren" layout nouveaunom) (setq cnpnbdpincrement (1+ cnpnbdpincrement)) (princ) ) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnptrier4a2fin (/ acdoc leslayouts layouts ;;; i layout ) (setq acdoc (vla-get-activedocument (vlax-get-acad-object))) (setq leslayouts (vla-get-layouts acdoc)) (setq layouts (getlayouts nil t) layoutsold layouts ) (setq layouts (vl-sort layouts '(lambda (a b) (< (atoi (substr a (- (strlen a) 3) 3)) (atoi (substr b (- (strlen b) 3) 3)) ) ) ) ) (setq i (vla-get-taborder (vla-item leslayouts (nth 0 layouts)))) (foreach name layouts (setq layout (vla-item leslayouts name)) (vla-put-taborder layout i) (setq i (1+ i)) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnpTRIER4axet4a2finA ( / acdoc leslayouts layouts i layout ) (setq acdoc (vla-get-activedocument (vlax-get-acad-object))) (setq leslayouts (vla-get-layouts acdoc)) (setq layouts (getlayouts nil t) layoutsold layouts ) (setq layouts (vl-sort layouts '(lambda (a b) (< (atoi (substr a (- (strlen a) 3) 3)) (atoi (substr b (- (strlen b) 3) 3)))) ) ) (setq i (vla-get-taborder (vla-item leslayouts (nth 0 layouts)))) (foreach name layouts (setq layout (vla-item leslayouts name)) (vla-put-taborder layout i) (setq i (1+ i)) ) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) ) (defun c:cnptrier4axet4a2finb (/ acdoc layouts layout layoutsname name) (setq cnpcdepuisdebut1 (atoi (getcfg "APPDATA/CNPCDEPUISDEBUT1"))) (initget 4) (setq tmp (getint (strcat "\nENTRER UN NOMBRE POUR DEFINIR LE DEPART DE LA PLAGE DE TRIE DEPUIS LE DEBUT DU NOM [ MINIMUM : 1]<" (rtos cnpcdepuisdebut1 2 0) ">: " ) ) ) (if tmp (setq cnpcdepuisdebut1 tmp) ) (setcfg "APPDATA/CNPCDEPUISDEBUT1" (rtos cnpcdepuisdebut1 2 0) ) (setq cnpcsurx1 (atoi (getcfg "APPDATA/CNPCSURX1"))) (initget 4) (setq tmp (getint (strcat "\nENTRER UN NOMBRE POUR DEFINIR LA PLAGE DE TRIE PRIMAIRE DU NOM <" (rtos cnpcsurx1 2 0) ">: " ) ) ) (if tmp (setq cnpcsurx1 tmp) ) (setcfg "APPDATA/CNPCSURX1" (rtos cnpcsurx1 2 0)) (decomptedebut) (setq acdoc (vla-get-activedocument (vlax-get-acad-object))) (setq layouts (vla-get-layouts acdoc)) ;; récupérer la liste des noms de présentations (vlax-for layout layouts (setq layoutsname (cons (vla-get-name layout) layoutsname)) ) ;; supprimer la présentation "Model" de cette liste (setq layoutsname (vl-remove "Model" layoutsname)) ;; nombre de presentations (setq nblayouts (length layoutsname) listelayoutsdecomp nil listelayoutrecomp nil ) ;;décomposer le nom de la présentation en 5 morceaux et en faire une liste (foreach name layoutsname (setq nbc (strlen name)) (setq listelayoutsdecomp (cons (list (substr name 1 (- cnpcdepuisdebut1 1)) (substr name cnpcdepuisdebut1 cnpcsurx1) (substr name (+ cnpcdepuisdebut1 cnpcsurx1) (- nbc 3 (+ cnpcdepuisdebut1 cnpcsurx1)) ) (substr name (- nbc 3) 3) (substr name nbc) ) listelayoutsdecomp ) ) ) ;; trier la liste sur 2 et 4 morceaux (setq listelayoutsdecomp1 (vl-sort listelayoutsdecomp '(lambda (a b) (if (eq (cadr a) (cadr b)) (< (cadddr a) (cadddr b)) (< (cadr a) (cadr b)) ) ) ) ) ;;reconstituer le noms des présentations et la lister (foreach decomp listelayoutsdecomp1 (setq listelayoutrecomp (cons (strcat (nth 0 decomp) (nth 1 decomp) (nth 2 decomp) (nth 3 decomp) (nth 4 decomp) ) listelayoutrecomp ) ) ) ;inverser la liste (setq listelayoutrecomp (reverse listelayoutrecomp)) ;; attribuer l'ordre à chaque présentation (setq i 1) ;; l'ordre 0 est réservé à la présentation "Model" (acet-ui-progress-init "AVANCEMENT" nblayouts) (foreach name listelayoutrecomp (setq layout (vla-item layouts name)) (vla-put-taborder layout i) (princ (strcat "\n" (itoa i) " SUR " (itoa nblayouts) " : " name) ) (acet-ui-progress-init (strcat "AVANCEMENT " (rtos (/ (* i 100) (float nblayouts)) 2 2) " %" ) nblayouts ) (acet-ui-progress-safe I) (setq i (1+ i)) ) (decomptefin) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) (princ) ) ;;;(vl-sort lst ;;; '(lambda (s1 s2 / x1 x2) ;;; (if (= (setq x1 (substr s1 5 13)) ;;; (setq x2 (substr s2 5 13)) ;;; ) ;;; (< (substr s1 (- (strlen s1) 5)) ;;; (substr s2 (- (strlen s2) 5)) ;;; ) ;;; (< x1 x2) ;;; ) ;;; ) ;;;) (defun c:cnptrier4axet4a2finC (/ acdoc layouts layout layoutsname name) (setq cnpcdepuisdebut1 (atoi (getcfg "APPDATA/CNPCDEPUISDEBUT1"))) (initget 4) (setq tmp (getint (strcat "\nENTRER UN NOMBRE POUR DEFINIR LE DEPART DE LA PLAGE DE TRIE DEPUIS LE DEBUT DU NOM [ MINIMUM : 1]<" (rtos cnpcdepuisdebut1 2 0) ">: " ) ) ) (if tmp (setq cnpcdepuisdebut1 tmp) ) (setcfg "APPDATA/CNPCDEPUISDEBUT1" (rtos cnpcdepuisdebut1 2 0) ) (setq cnpcsurx1 (atoi (getcfg "APPDATA/CNPCSURX1"))) (initget 4) (setq tmp (getint (strcat "\nENTRER UN NOMBRE POUR DEFINIR LA PLAGE DE TRIE PRIMAIRE DU NOM <" (rtos cnpcsurx1 2 0) ">: " ) ) ) (if tmp (setq cnpcsurx1 tmp) ) (setcfg "APPDATA/CNPCSURX1" (rtos cnpcsurx1 2 0)) (decomptedebut) (setq acdoc (vla-get-activedocument (vlax-get-acad-object))) (setq layouts (vla-get-layouts acdoc)) ;; récupérer la liste des noms de présentations (vlax-for layout layouts (setq layoutsname (cons (vla-get-name layout) layoutsname)) ) ;; supprimer la présentation "Model" de cette liste (setq layoutsname (vl-remove "Model" layoutsname)) ;; nombre de presentations (setq nblayouts (length layoutsname) ;;; listelayoutsdecomp nil ;;; listelayoutrecomp nil ) ;;décomposer le nom de la présentation en 5 morceaux et en faire une liste ;;; (foreach name layoutsname ;;; (setq nbc (strlen name)) ;;; (setq listelayoutsdecomp (cons (list (substr name 1 (- cnpcdepuisdebut1 1)) ;;; (substr name cnpcdepuisdebut1 cnpcsurx1) ;;; (substr name (+ cnpcdepuisdebut1 cnpcsurx1) (- nbc 3 (+ cnpcdepuisdebut1 cnpcsurx1))) ;;; (substr name (- (strlen name) 3) 3) ;;; (substr name nbc) ;;; ) ;;; listelayoutsdecomp ;;; ) ;;; ) ;;; ) ;; trier la liste sur 2 et 4 morceaux (setq layoutsname (vl-sort layoutsname '(lambda (s1 s2 / x1 x2) (if (= (setq x1 (substr s1 cnpcdepuisdebut1 cnpcsurx1) ) (setq x2 (substr s2 cnpcdepuisdebut1 cnpcsurx1) ) ) (< (substr s1 (- (strlen s1) 3) 3) (substr s2 (- (strlen s2) 3) 3) ) (< x1 x2) ) ) ) ) ;;reconstituer le noms des présentations et la lister ;;; (foreach decomp listelayoutsdecomp1 ;;; (setq listelayoutrecomp (cons (strcat (nth 0 decomp) (nth 1 decomp) (nth 2 decomp) (nth 3 decomp) (nth 4 decomp)) ;;; listelayoutrecomp ;;; ) ;;; ) ;;; ) ;inverser la liste ;;; (setq layoutsname (reverse layoutsname)) ;; attribuer l'ordre à chaque présentation (setq i 1) ;; l'ordre 0 est réservé à la présentation "Model" (acet-ui-progress-init "AVANCEMENT" nblayouts) (foreach name layoutsname (setq layout (vla-item layouts name)) (vla-put-taborder layout i) (princ (strcat "\n" (itoa i) " SUR " (itoa nblayouts) " : " name) ) (acet-ui-progress-init (strcat "AVANCEMENT " (rtos (/ (* i 100) (float nblayouts)) 2 2) " %" ) nblayouts ) (acet-ui-progress-safe I) (setq i (1+ i)) ) (decomptefin) (getlayouts "POUR VERIFICATION DES NOMS DE PRESENTATION" t) (princ) ) (defun decomptedebut () (setq datede (rtos (getvar "cdate") 2 8)) ; année (setq anneede (substr datede 1 4)) ; mois (setq moisde (substr datede 5 2)) ; jour (setq jourde (substr datede 7 2)) ; heure (setq heurede (substr datede 10 2)) ; minute (setq minutede (substr datede 12 2)) ; seconde (setq secondede (substr datede 14 2)) ; concatenation de la date ;;; (setq seconde10de (substr datede 16 2)) ; concatenation de la date (setq totaldesondede (+ (atoi secondede) (* (atoi minutede) 60) (* (atoi heurede) 3600))) ; vous pouvez modifier ici le suffixe "le" et les séparateurs "/" ; exemple : ; (setq n-date (strcat "agence toto le : "jour"-"mois"-"annee)) (setq n-datede (strcat "\nDEBUT le : " jourde "/" moisde "/" anneede " à " heurede ":" minutede ":" secondede)) (princ) ) (defun decomptefin () (setq datefin (rtos (getvar "cdate") 2 8)) ; année (setq anneefin (substr datefin 1 4)) ; mois (setq moisfin (substr datefin 5 2)) ; jour (setq jourfin (substr datefin 7 2)) ; heure (setq heurefin (substr datefin 10 2)) ; minute (setq minutefin (substr datefin 12 2)) ; seconde (setq secondefin (substr datefin 14 2)) ; concatenation de la date ;;; (setq seconde10fin (substr datefin 16 2)) ; concatenation de la date (setq totaldesondefin (+ (atoi secondefin) (* (atoi minutefin) 60) (* (atoi heurefin) 3600))) (setq totalsecondetravail (- totaldesondefin totaldesondede)) ; vous pouvez modifier ici le suffixe "le" et les séparateurs "/" (setq n-datefin (strcat "\nFIN le : " jourfin "/" moisfin "/" anneefin " à " heurefin ":" minutefin ":" secondefin) ) (setq heuret (fix (/ totalsecondetravail 3600))) ;heure (setq minutet (fix (/ (- totalsecondetravail (* heuret 3600)) 60))) ; minute (setq secondet (- totalsecondetravail (* heuret 3600) (* minutet 60))) ; concatenation de la date (setq n-datetravail (strcat "\nSOIT " (rtos heuret 2 0) ":" (rtos minutet 2 0) ":" (rtos secondet 2 0) " DE TRAVAIL" ) ) (prompt n-datede) (prompt n-datefin) (prompt n-datetravail) (princ) ) ;; GETLAYOUTS (gile) 03/12/07 ;; Retourne la liste des présentations choisies dans la boite de dialogue ;; ;; arguments ;; titre : titre de la boite de dialogue ou nil, défauts = Choisir la (ou les) présentation(s) ;; mult : T ou nil (pour choix multiple ou unique) (defun getlayouts (titre mult / lay tmp file ret) (setq lay (vl-sort (layoutlist) (function (lambda (x1 x2) (< (taborder x1) (taborder x2))))) tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) (write-line (strcat "GetLayouts:dialog{label=" (if titre (vl-prin1-to-string titre) (if mult "\"Choisir les présentations du fichier\"" "\"Choisir une présentation\"" ) ) ";:list_box{height = 100;key=\"lst\";multiple_select=" (if mult "true;width = 150;}:row{:retirement_button{label=\"Toutes\";key=\"all\";} ok_button;cancel_button;}}" "false;}ok_cancel;}" ) ) file ) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "GetLayouts" dcl_id)) (exit) ) (start_list "lst") (mapcar 'add_list lay) (end_list) (action_tile "all" "(setq ret (reverse lay)) (done_dialog)") (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (foreach n (str2lst (get_tile \"lst\") \" \") (setq ret (cons (nth (atoi n) lay) ret)))) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) (reverse ret) ) a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Luna Posté(e) le 27 décembre 2021 Posté(e) le 27 décembre 2021 @PHILPHIL, Je remarque que tu utilises (getcfg) et (setcfg), donc comme je ne connaissais pas et que chat m'a intrigué je suis allé voir et je suis tombé sur cela : Citation getcfg (AutoLISP) Obsolete. Retrieves application data from the AppData section of the acad20xx.cfg file Note: This function might be removed in a future release. As an alternative, use the vl-registry-read function to retrieve application data from the Windows Registry on Windows or property list file on Mac OS. Donc à voir si cela ne risque pas de poser problème à l'avenir 😉 Bisous, Luna
PHILPHIL Posté(e) le 28 décembre 2021 Auteur Posté(e) le 28 décembre 2021 hello Luna merci pour l'info je l'utilise beaucoup pour garder des infos, et pas a avoir a les réécrire au clavier. pour le moment ca marche encore, puis c'est bien plus pratique que ca soit dans un petit fichier propre a autocad, que de le placer dans la base de registre énorme de windows ( enfin je pense que ca va la vue la commande "vl-registry-read".) a+ Phil ( pas expert programmeur, juste de la bidouille ) FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
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