jms Posté(e) le 20 juillet 2006 Posté(e) le 20 juillet 2006 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
Bred Posté(e) le 20 juillet 2006 Posté(e) le 20 juillet 2006 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...
Fraid Posté(e) le 20 juillet 2006 Posté(e) le 20 juillet 2006 bonjour, Pour gagner du temps tu peux essayer de publier l'ensemble de tes presentation d'un coup c'est deja sa bon courage https://github.com/Fraiddd
Patrick_35 Posté(e) le 20 juillet 2006 Posté(e) le 20 juillet 2006 SalutTeste 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
jms Posté(e) le 20 juillet 2006 Auteur Posté(e) le 20 juillet 2006 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]
Patrick_35 Posté(e) le 20 juillet 2006 Posté(e) le 20 juillet 2006 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 pdfex : mon_dessin - Présentation 1.pdf D'autre part, j'ai Map3D2006 EnglishA toi de donner les bonnes infos pour la commande traceur. Ce que je donne fonctionne sur mon postePour 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écisionsPDFCréator est un gratuiciel et si tu veux aller au plus simple, il suffit d'aller le chercherLes "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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
jms Posté(e) le 20 juillet 2006 Auteur Posté(e) le 20 juillet 2006 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
Patrick_35 Posté(e) le 20 juillet 2006 Posté(e) le 20 juillet 2006 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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