Mise en page Présentation fichiers multiples

Mise en page Présentation fichiers multiples

Ramirez22
Contributor Contributor
5 807 Visites
14 Réponses
Message 1 sur 15

Mise en page Présentation fichiers multiples

Ramirez22
Contributor
Contributor

Bonjour.

 

Tout nouveau dans le monde d'AutoCAD, j'en suis réduit à faire appel à vos lumières pour un cas particulier.

J'ai déjà cherché sans succès sur le forum (et j'ai pas compris les rares infos que j'ai trouvé).

 

Plantons le décor : AutoCAD 2015, aucune connaissance en LISP, VBA ou autre macro... Bref, un pur débutant (hormis quelques notions de base).

J'ai plusieurs fichiers correspondant à un schéma électrique. Chaque folio a son fichier DWG. Chaque fichier à 1 seule présentation. Le format est en pouce, mais il correspond à un A4 standard. Le tracé est en couleur.

 

J'ai besoin de créer un fichier PDF par schéma (donc comprenant X fichier DWG). Pour ce faire, j'ai utilisé l'impression par lot (suppression des "feuilles objet" et mise dans le bon ordre dans la liste des feuilles, option "publier vers PDF"). Cela se passe bien, mais les schémas sont toujours en couleur (normal à mon sens). Or les schémas en question ont été créés en jaune pâle (bien visible sur l'espace objet avec fond noir, beaucoup moins sur un PDF en fond blanc).

Est-il possible d'imprimer en noir et blanc ? Les options de la boite de dialogue "Imprimer-Tracer par lot" ne semblent pas donner cette option. Il y a bien un moyen en passant par le gestionnaire de mise en page, mais j'aimerais autant que faire se peut ne pas me "coltiner" toutes les pages (plusieurs milliers de schémas, avec plusieurs folios à chaque fois... ça fait un paquet de clic ...) !

 

J'ai cherché pour faire une "macro" (je pense que le terme n'est pas à propos) avec l'enregistreur d'action, mais lorsqu'une boite de dialogue apparait, celui-ci s’interrompt. Aussi y a t'il un moyen de modifier le jeu de plume d'une présentation sans passer par les boites de dialogue successives (par exemple en ligne de commande) ?

Est-il possible d'appliquer en une seule fois cette modification à toutes les présentation ouvertes (même si elles ne sont pas du même fichier DWG) ?

 

Question subsidiaire. Les présentation, comme je l'ai signalé plus haut, sont en A4. Cependant, la fenêtre est beaucoup plus petite que la page et donc, perte d'informations par manque de lisibilité. Est-il possible de modifier la taille et la position de la fenêtre sur toutes les présentations en même temps ? (sachant qu'il n'y a qu'une seule fenêtre dans les présentations, mais qu'il y a 1 présentation, là encore, par fichier DWG).

 

J'espère que mes explications sont suffisamment claires. Je suis prêt à mettre "les mains dans le cambouis" (creuser dans les macro, LISP etc...) pour peu qu'on m'explique ce que je fais... Smiley heureux

 

Dernier point, les fichiers "source" DWG n'ont pas pour vocation à être enregistrés à l'issue de cet "export" en PDF pour des questions de gestion de version et de suivi (je sais pas si c'est utile comme indication).

 

Merci en tout cas d'avoir lu jusque là, et merci d'avance au(x) généreux contributeur(s) de son(leur) aide.

 

Cordialement, SV

0 J'aime
Solutions acceptées (1)
5 808 Visites
14 Réponses
Replies (14)
Message 2 sur 15

jacquesrigal3467
Mentor
Mentor

Bonsoir SV,

 

Normalement tu devrais pouvoir faire une mise en page que tu affecteras à chaque présentation mais qui sera unique vue tes explications.

En clair tu dois réaliser une mise en page que tu réalise au sein d'un de tes fichiers ou dans un gabarit. puis tu l'utilises dans ton impression en différée.

Pour faire ta mise en page il te faut cliquer avec le bouton droit sur un onglet de présentation utilise la commande mise en page et crée une nouvelle mise en page, ne modifie pas la présentation courante. Une fois configurée elle sera enregistrée dans ton fichier et tu devras l'affecter à la présentation courante.

Je joins un screencast ne traitant pas forcément la totalité du sujet mais qui devrait t'aider.

 

Bon courage.

Jacques Rigal
Cette publication vous a-t-elle été utile ? N’hésitez pas à attribuer la mention J’aime à cette publication.
Avez-vous obtenu la réponse à votre question ? Cliquez ensuite sur le bouton ACCEPTER LA SOLUTION.

EESignature

0 J'aime
Message 3 sur 15

Ramirez22
Contributor
Contributor

Bonjour et merci de ta réponse.

 

J'ai essayé de suivre tes indications, mais il semblerait que cela ne fonctionne que dans les présentations d'un même fichier DWG.

En gros, j'ai

- créé un nouveau fichier que j'ai sauvegardé en gabarit (0.DWT)

- créé une Présentation1

- supprimé la fenêtre

- ouvert le gestionnaire de mise en page

- modifié ma mise en page (format papier, traceur et table de style de tracé)

- sauvegardé le tout

 

Puis j'ai:

- ouvert mes fichiers DWG de mes différents folios

- sélectionné chacune des Présentation1 de chaque fichier DWG pour les régénérer (à ce sujet, s'il y a une méthode plus rapide, je suis preneur)

- menu Imprimer-Tracer par lot

- supprimé tous les espaces objet et retrié le tout

- sélectionné dans la colonne "Mise en page" le fichier 0.DWT généré ci-dessus

- et... rien, la boite de dialogue "Publier" affiche les mêmes colonnes "Mise en page par défaut : Aucune"

 

Je dois faire quelque chose de mal, mais je ne vois pas quoi.

 

J'ai également essayé autre chose:

- Clic droit sur la Présentation1 d'un des fichiers DWG de mes folios, ouverture du gestionnaire de mise en page

- clic sur "Importer" et sélection du fichier 0.DWT

- affichage d'une nouvelle boite de dialogue "Importer les mises en page", mais elle est vide.

 

 

Si tu as une idée...

 

Cdt,

 

0 J'aime
Message 4 sur 15

Ramirez22
Contributor
Contributor
Solution acceptée

Bonjour.

 

Je vais commencer à apporter quelques éléments de réponse à ma question. Mais avant tout, je voudrais remercier Patrick_35 pour un de ses fichiers LISP (SCR.LSP) que j'ai utilisé comme "base". Si tu vois une objection à la modification de ton fichier, n'hésite pas à me le faire savoir.

 

 

;;;=================================================================
;;;
;;; Basé sur SCR.LSP V2.00 de Patrick_35
;;;
;;; Créer un script pour traiter les fichiers d'un répertoire
;;;
;;;=================================================================
;
; =====================================================================================
; Sélection du répertoire à scanner, création/ouverture du fichier SCRIPT.SCR
; =====================================================================================
(defun c:scr(/ fic fscr lst n)
  (if (setq fic (getfiled "Impression de plusieurs Fichiers - Sélectionnez un fichier cible" (getvar "dwgprefix") "dwg" 16))
    (progn
      (setq lst (acad_strlsort (vl-directory-files (vl-filename-directory fic) "*.dwg" 1))
            fscr (open (strcat (vl-filename-directory fic) "\\SCRIPT.SCR") "w") n 0)
      (while (nth n lst)
        (write-line (strcat "_.open " (chr 34) (vl-filename-directory fic) "\\" (nth n lst) (chr 34)) fscr)
        (write-line "(acad-push-dbmod)" fscr)

;=======================================================================================
; Début de la partie personnalisable
; Saisie des valeurs de la commande -TRACEUR
;=======================================================================================
     
        (write-line (strcat "(command \"-TRACEUR\" \"o\" \"Présentation1\" \"DWG To PDF.pc3\" \"ANSI expand A (8.50 x 11.00 pouces)\" \"p\" \"a\" \"n\" \"p\" \"p\" \"0.00,0.00\" \"o\" \"monochrome.ctb\" \"o\" \"n\" \"n\" \"n\"  \"" (nth n lst) ".pdf\" \"n\" \"o\")") fscr)

;=======================================================================================
; Fin de Partie personnalisable
; Fermeture du fichier SCRIPT.SCR
;=======================================================================================

        (write-line "(acad-pop-dbmod)" fscr)
        (write-line "(if (zerop (getvar \"sdi\")) (command \"_.close\") )" fscr)
        (setq n (1+ n))
      )
      (close fscr)
      (princ (strcat "\n\tFichier " (vl-filename-directory fic) "\\SCRIPT.SCR créé. Lancer SCRIPT puis sélectionner le fichier SCRIPT.SCR"))

    )

  )

  (princ)

)


(princ "\nSCR.LSP chargé. Tapez SCR pour l'exécuter")

(princ) 

 

Ce LISP me crée un fichier SCRIPT.SCR qu'il me suffit de lancer via la commande SCRIPT.

 

Je me retrouve avec un fichier PDF en noir et blanc par fichier DWG. L'avantage, c'est que je peux modifier tout un tas d'option (voir les options de la fonction -TRACEUR). Il ne me reste plus qu'à concaténer tout cela avec PdfCreator et le tour est joué.

 

Dans l'absolu, l'idéal serait d'automatiser également la concaténation des fichiers pdf, mais là, ça reste du domaine du réalisable "à la mano" Smiley très heureux

 

La limite du couple LISP/SCRIPT est que si la présentation a un autre nom que "Présentation1", je suis mal.

Je vais essayer de creuser pour que le SCRIPT réagisse uniquement sur la 1ère présentation, quel que soit son nom.

 

Merci en tout cas de ton aide Jacques. Je posterai ici les éventuelles modifications de ce script.

 

Cordialement,

SV

 

 

0 J'aime
Message 5 sur 15

patrick_35
Collaborator
Collaborator

Salut

 

Une petite fonction qui te donneras toujours le nom du 1er onglet

 

(defun pre_0(/ lay lst)
  (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
    (setq lst (cons (cons (vla-get-taborder lay) (vla-get-name lay)) lst))
  )
  (cdr (assoc 1 lst))
)

Tiu remplaces \"Présentation1\" par (pre_0)

Tu peux aussi faire un lisp qui fonctionne comme tu le souhaites et ce lisp peut ensuite être appelé avec SCR

 

@+

 

Message 6 sur 15

patrick.emin
Alumni
Alumni

Bonjour @Ramirez22

Si une des réponses à votre question résout votre problème, vous a permis de le comprendre ou contribue significativement à sa résolution, voulez vous avoir l'amabilité de cliquer sur le bouton "Accepter comme solution" en bas de la réponse?

Si nos équipes de support technique ont pu vous apporter une solution ou contribuer significativement à vous aider en dehors de ce forum, pouvez vous partager ici la solution trouvée et cliquer sur le bouton "Accepter comme solution" de façon qu'elle bénéficie à la communauté?
Merci.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime
Message 7 sur 15

Ramirez22
Contributor
Contributor
Bonjour Patrick_35
Merci beaucoup pour cette fonction, je pense qu'elle va m'être utile ! Je teste et je mets les résultats ici. Question d'un béotien : si j'ai bien compris, la différence entre LISP et SCRIPT, c'est que l'un est un langage de programmation et l'autre une suite d'instruction AutoCAD. C'est bien ça ?
Cdt, SV
0 J'aime
Message 8 sur 15

braudpat
Mentor
Mentor
Hello

1) Oui

2) Pour moi un Script AutoCAD = suite séquentielle de commandes

Regards, Patrice
Patrice ( Supporting Troops ) - Autodesk Expert Elite
If you are happy with my answer please mark "Accept as Solution" and if very happy please give me a Kudos (Felicitations) - Thanks

Patrice BRAUD

EESignature


0 J'aime
Message 9 sur 15

Ramirez22
Contributor
Contributor

Bonjour et encore merci pour ces réponses.

 

J'aurais encore besoin d'un peu d'aide pour essayer de convertir ma commande TRACEUR par une commande PUBLIER si c'est possible, mais avec la même souplesse.

 

J'ai modifié le LISP afin d'intégrer la commande de Patrick_35 + éxécution auto du SCRIPT:

;;;=================================================================
;;;
;;; Basé sur SCR.LSP V2.00 de Patrick_35
;;;
;;; Créer un script pour traiter les fichiers d'un répertoire
;;;
;;;=================================================================
;
; =====================================================================================
; Sélection du répertoire à scanner, création/ouverture du fichier SCRIPT.SCR
; =====================================================================================
(defun c:dwg2pdf(/ fic fscr lst n)
  (if (setq fic (getfiled "Impression de plusieurs Fichiers - Sélectionnez un fichier cible" (getvar "dwgprefix") "dwg" 16))
    (progn
      (setq lst (acad_strlsort (vl-directory-files (vl-filename-directory fic) "*.dwg" 1))
            fscr (open (strcat (vl-filename-directory fic) "\\SCRIPT.SCR") "w") n 0)
      (while (nth n lst)
        (write-line (strcat "_.open " (chr 34) (vl-filename-directory fic) "\\" (nth n lst) (chr 34)) fscr)
        (write-line "(acad-push-dbmod)" fscr)

;=======================================================================================
; Saisie des valeurs de la commande -TRACEUR
;=======================================================================================
		(defun pre_0(/ lay lst)
		(vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
		(setq lst (cons (cons (vla-get-taborder lay) (vla-get-name lay)) lst))
		)
		(cdr (assoc 1 lst))
		)
               (write-line (strcat "(command \"-TRACEUR\" \"o\" \""(pre_0)"\" \"DWG To PDF.pc3\" \"ISO full bleed A4 (210.00 x 297.00 mm)\" \"p\" \"a\" \"n\" \"p\" \"p\" \"0.00,0.00\" \"o\" \"monochrome.ctb\" \"o\" \"n\" \"n\" \"n\"  \"" (nth n lst) ".pdf\" \"n\" \"o\")") fscr)

;=======================================================================================
; Fermeture et lancement du fichier SCRIPT.SCR
;=======================================================================================

        (write-line "(acad-pop-dbmod)" fscr)
        (write-line "(if (zerop (getvar \"sdi\")) (command \"_.close\") )" fscr)
        (setq n (1+ n))
    )
    (close fscr)
	(command "_script" (strcat "\"" (vl-filename-directory fic) "\\SCRIPT.SCR\""))
    )

  )
  (princ)
)

(princ "\nDWG2PDF.LSP chargé. Tapez DWG2PDF pour l'exécuter")

(princ) 

Mais de nature feignante, je me posais la question de faire tout d'un coup, à savoir faire une mise en page spécifique comme ce que fait le script (format A4, monochrome etc...), mais avec la commande -PUBLIER.

Or cette commande n'a pas autant de paramètres que -TRACEUR.

 

A moins de pouvoir automatiser PDFcreator ...

 

Je suis preneur de toute idée...

 

A bientôt !

 

0 J'aime
Message 10 sur 15

Ramirez22
Contributor
Contributor

Bon, j'ai essayé d'éditer mon post précédent, sans succès, aussi je me vois dans l'obligation d'ajouter un post...

 

J'ai testé mon LISP dans un autre répertoire contenant des fichiers DWG, et mes fichiers PDF ont été créés dans le répertoire précédent.

 

J'ai tenté une modification dans mon LISP afin de sauvegarder les fichiers PDF créés dans le répertoire en cours :

De :
         (write-line (strcat "(command \"-TRACEUR\" \"o\" \""(pre_0)"\" \"DWG To PDF.pc3\" \"ISO full bleed A4 (210.00 x 297.00 mm)\" \"p\" \"a\" \"n\" \"p\" \"p\" \"0.00,0.00\" \"o\" \"monochrome.ctb\" \"o\" \"n\" \"n\" \"n\" \"" (nth n lst) ".pdf\" \"n\" \"o\")") fscr)

A:
        (write-line (strcat "(command \"-TRACEUR\" \"o\" \""(pre_0)"\" \"DWG To PDF.pc3\" \"ISO full bleed A4 (210.00 x 297.00 mm)\" \"p\" \"a\" \"n\" \"p\" \"p\" \"0.00,0.00\" \"o\" \"monochrome.ctb\" \"o\" \"n\" \"n\" \"n\" \"" (vl-filename-directory fic) "\\" (nth n lst) ".pdf\" \"n\" \"o\")") fscr)

Malheureusement, les fichier PDF sont enregistrés à la racine du disque en question.

J'ai vérifié le fichier SCRIPT et j'ai bien la bonne syntaxe pour le chemin-fichier

 

_.open "Z:\Chemin\fichier.dwg"
(acad-push-dbmod)
(command "-TRACEUR" "o" "Présentation1" "DWG To PDF.pc3" "ISO full bleed A4 (210.00 x 297.00 mm)" "p" "a" "n" "p" "p" "0.00,0.00" "o" "monochrome.ctb" "o" "n" "n" "n" "Z:\Chemin\fichier.dwg.pdf" "n" "o")
(acad-pop-dbmod)
(if (zerop (getvar "sdi")) (command "_.close") )

J'ai corrigé mon arborescence (il y avait un espace dans le nom d'un répertoire) au cas où, mais pas d'amélioration.

 

Là, je ne vois pas ce qui pourrait clocher...

0 J'aime
Message 11 sur 15

Ramirez22
Contributor
Contributor

J'ai tenté de mettre un chemin "en dur", mais il semblerait que la fonction -TRACEUR n'accepte pas de chemin en paramètre, uniquement un nom de fichier.

J'ai regardé s'il était possible de modifier le répertoire "courant", je suis tombé sur les variables SAVEFILEPATH et LOGFILEPATH, mais j'ai des doutes sur leur utilité.

 

Bref, pour l'instant, je suis bloqué. Mon couple LISP/SCRIPT fonctionne très bien, hormis cet emplacement de fichier PDF que je ne peux pas changer.

0 J'aime
Message 12 sur 15

patrick_35
Collaborator
Collaborator

Salut

 

Tu as déjà pensé à regrouper un dossier dans un seul fichier ?

Ce serait plus facile pour tes impressions.

 

@+

0 J'aime
Message 13 sur 15

Ramirez22
Contributor
Contributor

Bonjour.

 

C'est une option que j'avais envisagé, mais je suis "bloqué" par la gestion de version de ces fichiers : je ne gère que les archives des doc et je ne peux donc pas apporter de modification à ceux-ci (sinon, obligation de réaliser une montée de version avec circuit de validation, diffusion à tous les acteurs etc...).

 

Il me semble que tu m'avais déjà aiguillé sur ton LISP GRF qui permet de tout importer sur les présentations (ce qui est une solution parmi d'autres). Mais est-il possible après de tout recopier dans l'espace objet facilement ? Quid de la gestion des calques ?

 

Il est vrai que l'idéal serait de regrouper tous les fichiers DWG en un seul, et d'avoir autant de présentation que de folio...

Je suis en train de "militer" dans ce sens au niveau de ma boite, mais le temps de remise à jour est très long (newbie inside) et le nombre de fichier faramineux.

 

Le couple LISP/SCRIPT présenté ci-dessus me convient très bien. Avoir à tout concaténer à la main apporte l'avantage de mieux maitriser l'ordre des folios, leur mise en page etc... L'automatisation risque de me créer plus de problèmes qu'autre chose (nécessité de "casser" le fichier PDF pour remettre les folios dans l'ordre par exemple).

Le seul "soucis" qu'il me reste, c'est que je ne sais pas ou AutoCAD va m'enregistrer les fichier PDF (hier, c'était dans le répertoire des fichiers de gabarit ... assez galère pour les trouver). Je ne comprends pas la logique d'AutoCAD à ce niveau. Par exemple aujourd'hui, j'ai ouvert un document pour consultation sur un emplacement réseau et refermé sans sauvegarder. J'ai créé un nouveau document et sauvegardé celui-ci sur un autre répertoire (local) où j'espérais voir les PDF. J'ai lancé mon LISP et mes fichiers PDF ont été créés dans le premier répertoire (réseau). Va comprendre ...

 

Donc je cherche toujours le moyen de modifier le répertoire de travail courant ou spécifier la destination des PDF...

 

Cordialement,

SV

 

[EDIT] Je viens de vérifier les variables "rememberfolder" = 1 et "DWGPREFIX" qui correspond à mon répertoire local. Je creuse encore

0 J'aime
Message 14 sur 15

patrick_35
Collaborator
Collaborator

J'ai la solution à ton problème, mais cela requière un certain niveau en lisp (utilisation de pdfcreator en ActiveX).


Tu peux t'inspirer de ce sujet ou de celui-ci et je t'aiderai.

 

@+

0 J'aime
Message 15 sur 15

Ramirez22
Contributor
Contributor

Ouch !

 

C'est un peu plus complexe que le LISP d'avant Smiley tirant la langue

 

Je vais regarder et essayer de comprendre avant de l'adapter.

En tout ca, merci de ta proposition, je ne tarderai pas à donner de mes nouvelles Smiley heureux

 

A+

0 J'aime