Aller au contenu

Script de production de PDF


jms

Messages recommandés

Salut,

Pendant le développement d'un projet, les modifications peuvent être légion, qui balaient l'après-midi la version du matin !

Et si le client doit être informé de l'évolution du projet, autant dire que le suivi de sa publication prend du temps non négligeable...

Comme la plupart des clients ignorent tout d'Autocad et n'ont pas nécessairement le temps, ou les droits, d'installer le viewer DWF, j'ai souvent recours à une production de PDF.

Et quand on sait qu'un projet compte un fichier par plan d'étage et que chaque fichier compte entre 5 et 10 présentations, la production d'un jeu de PDF à jour devient vite une tâche très encombrante.

Je voudrais la réduire en la générant automatiquement. Le seul langage à ma portée consiste en commandes autocad insérées dans un script scr.

Toutefois je dispose d'un petit utilitaire qui me permet de générer des boucles de scripts partant d'un script de base contenant quelques variables ( ex. chemin d'accès des fichiers DWG ou des fichiers PDF à produire, mises en page etc.)

qui sont automatiquement remplacées par les valeurs correspondantes stockées en base de données.

Le tout c'est de pondre ce script de base ! Et actuellement je ne vois pas comment empêcher autocad de m'ouvrir une fenêtre de sélection de fichier au moment où il doit créer le pdf.

Voyez-vous comment je pourrais créer un pdf en utilisant exclusivement des commandes clavier ? Les transposer en script ne poserait alors qu'un problème mineur.

 

Merci

 

Jean-Michel

Lien vers le commentaire
Partager sur d’autres sites

Salut,

je ne vois pas comment empêcher autocad de m'ouvrir une fenêtre de sélection de fichier au moment où il doit créer le pdf.

... le problème est + important, vu que ce n'est pas autocad qui ouvre cette fenêtre d'enregistrement, mais ton module d'ipression PDF (cutePDF ou autre...)

 

... désolé, mais en script j'ai peur que ce ne soit pas possible, vu que tu ne peux toucher qu'au commandes d'autocad...

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Salut

Teste le script/lisp ci-après avec PDFCreator

 

@+

 

;Ouvrir un Dessin

(setq Obj (vlax-create-object "WScript.Shell"))

;Choisir sa Présentation

(command "_.plot" "o" "" "PDFCreator" "A4" "m" "P" "n" "e" "p" "c" "n" "." "n" "" "n" "n" "o")
(setq nom (strcat (vl-filename-base (getvar "dwgname")) " - " (getvar "ctab")))
(repeat 10000000)
(vlax-invoke obj "SendKeys" (eval nom))
(vlax-invoke obj "SendKeys" "%S")
(repeat 100000)
(vlax-invoke obj "SendKeys" "%E")

;Choisir une autre Présentration

(command "_.plot" "o" "" "PDFCreator" "A4" "m" "P" "n" "e" "p" "c" "n" "." "n" "" "n" "n" "o")
(setq nom (strcat (vl-filename-base (getvar "dwgname")) " - " (getvar "ctab")))
(repeat 10000000)
(vlax-invoke obj "SendKeys" (eval nom))
(vlax-invoke obj "SendKeys" "%S")
(repeat 100000)
(vlax-invoke obj "SendKeys" "%E")

;Si terminé pour les présentations

(vlax-release-object obj)
(gc)

;Fermer le Dessin

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Fichtre ! On nage en eaux troubles...et le lisp n'est pas ma tasse de thé !

Pour l'instant je ne dispose que de Adobe PDF Writer : crois-tu qu'il peut remplacer PDFCreator ?

Dans ce script, quels sont les éléments paramétrables ? A priori je ne vois que (getvar " dwgname") , je suppose qu'il faut le chemin d'accès complet ?

D'autre part, j'ai Map3D2006 English ; à part les initiales des paramètres de tracé, où "o" devient "y", vois-tu d'autre commandes qui doivent s'exprimer autrement ?

Enfin, je ne vois pas où le nom du fichier de sortie est spécifié ?

 

Merci pour ce début cours lisp...

 

[Edité le 20/7/2006 par jms]

Lien vers le commentaire
Partager sur d’autres sites

Pour l'instant je ne dispose que de Adobe PDF Writer : crois-tu qu'il peut remplacer PDFCreator ?

Oui, mais pour le paramètrage, je ne saurais pas le faire, ne disposant pas du logiciel

 

quels sont les éléments paramétrables

Aucun, je récupère le nom du dessin ainsi que le nom de la présentation pour constituer le nom du pdf

ex : mon_dessin - Présentation 1.pdf

 

D'autre part, j'ai Map3D2006 English

A toi de donner les bonnes infos pour la commande traceur. Ce que je donne fonctionne sur mon poste

Pour trouver les arguments, tu fais sur la ligne de commande _-plot et tu recopies toutes ce que tu indiques au clavier dans le command plot

 

Quelques précisions

PDFCréator est un gratuiciel et si tu veux aller au plus simple, il suffit d'aller le chercher

Les "Sendkeys" simulent les touches

(vlax-invoke obj "SendKeys" (eval nom)) --> Ca corresponds à écrire le nom du pdf dans le premier champ de PDFCréator qui correspond au titre

(vlax-invoke obj "SendKeys" "%S") --> Alt+S pour Sauvegarde

(vlax-invoke obj "SendKeys" "%E") --> Alt+E pour Enregistrer

 

 

(repeat 100000) --> Une boucle d'attente, le temps qu'Autocad travail avant de reprendre la main

 

(setq nom (strcat (vl-filename-base (getvar "dwgname")) " - " (getvar "ctab"))) --> Définir le nom du pdf, tu remarqueras la variable dwgname et ctab

 

(setq Obj (vlax-create-object "WScript.Shell")) --> créer une liaison avec le logiciel actif afin de simuler les touches du clavier

 

(vlax-release-object obj) --> effacer la liaison

 

(gc) --> nettoyer la mémoire

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

J'ai du interrompre le job un moment.

Après quelques essais, ça commence à dégager des résultats.

Voici le script adapté à mes besoins ( qui restent encore de nature tout à fait expérimentale...)

 

_open

"[FG]PARAM1[/FG]"

(setq Obj (vlax-create-object "WScript.Shell"))

-layout s [FG]PARAM2[/FG]

(command "_.plot" "y" "" "PDFCreator" "A4" "m" "P" "n" "e" "f" "c" "y" "ALL_B-N.ctb" "y" "n" "n" "n" "n" "n" "y")

(setq nom (strcat (vl-filename-base (getvar "[FG]PARAM1[/FG]")) " - " (getvar "[FG]PARAM2[/FG]")))

(repeat 10000000)

(vlax-invoke obj "SendKeys" (eval nom))

(vlax-invoke obj "SendKeys" "%S")

(repeat 100000)

(vlax-invoke obj "SendKeys" "%E")

-layout s [FG]PARAM3[/FG]

(command "_.plot" "y" "" "PDFCreator" "A4" "m" "P" "n" "e" "f" "c" "y" "ALL_B-N.ctb" "y" "n" "n" "n" "n" "n" "y")

(setq nom (strcat (vl-filename-base (getvar "[FG]PARAM1[/FG]")) " - " (getvar "[FG]PARAM3[/FG]")))

(repeat 10000000)

(vlax-invoke obj "SendKeys" (eval nom))

(vlax-invoke obj "SendKeys" "%S")

(repeat 100000)

(vlax-invoke obj "SendKeys" "%E")

-layout s [FG]PARAM4[/FG]

(command "_.plot" "y" "" "PDFCreator" "A4" "m" "P" "n" "e" "f" "c" "y" "ALL_B-N.ctb" "y" "n" "n" "n" "n" "n" "y")

(setq nom (strcat (vl-filename-base (getvar "[FG]PARAM1[/FG]")) " - " (getvar "[FG]PARAM3[/FG]")))

(repeat 10000000)

(vlax-invoke obj "SendKeys" (eval nom))

(vlax-invoke obj "SendKeys" "%S")

(repeat 100000)

(vlax-invoke obj "SendKeys" "%E")

(gc)

(command "_saveas" "2000" "" "y")

_close

 

 

 

Les balises [FG]PARAM2[/FG] renvoient aux valeurs stockées en base de données et sont adaptées à chaque boucle. Ce qui me donne un script 20 ou 100 fois plus long suivant le nombre d'enregistrements.

A priori tout baigne ! Excepté que l'installation de PDFCreator semble à moitié réussie puisque le script, sans pour autant s'interrompre, fait place à des fenêtres générées par PDFCreator, qui me signalent qu'il me manque un fichier "RCD.MSI"

 

Affaire à suivre...

 

Merci de m'avoir mis sur cette voie.

 

 

Jean-Michel

Lien vers le commentaire
Partager sur d’autres sites

J'ai remarqué que tu avais oublié le (vlax-release-object obj) avant le (gc)

Et encore une chose, tu peux peut être diminuer les boucles, cela dépend du dessin et de la puissance du pc.

Mais je suis content que tu arrives à dégager un script, ce qui n'est pas evident pour ce type d'exercice

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é