Begood Posté(e) le 5 septembre 2016 Partager Posté(e) le 5 septembre 2016 Salut Le lisp modifiéPour les impressions Pour les Options Et pour fusionner les pdf si besoin ps : Tu peux additionner les options (par exemple 1 + 16 = 17, mais pas 1 + 2 = dernière option) @+ Re,Merci beaucoup !Je viens de tester tout ça et ça roule ;)Par contre j'ai un soucis, comme j'ai des pages de taille différente pour une question d'échelle j'ai créé un bloc dynamique "Cart" avec un paramètre XY pour en modifier l'échelle tout en gardant le nom identique.Le problème c'est que la routine ne fonctionne plus dans ce cas là. Y a t'il une solution ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 5 septembre 2016 Partager Posté(e) le 5 septembre 2016 Pour fonctionner sur des blocs dynamiques(defun c:imp(/ bck bg def doc ent hd lay lst pdf plt sel tot kill nombl mon_impression Mon_Cartouche) (defun kill(qui / item meth1 meth2 obj WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process") ) (vlax-for item meth2 (and (setq obj (vlax-get item 'CommandLine)) (vl-string-search (strcase qui) (strcase obj)) (vlax-invoke item 'Terminate) ) ) (foreach item (list WMI meth1 meth2) (vlax-release-object item) ) ) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (defun mon_impression(dim) (vlax-invoke lay 'setwindowtoplot (list (caar dim)(cadar dim)) (list (caadr dim)(cadadr dim)) ) (vl-catch-all-apply 'vlax-invoke (list plt 'plottodevice)) ) (setq doc (vla-get-activedocument (vlax-get-acad-object)) Mon_Cartouche "Cart" ; NOM DU CARTOUCHE ) (if (setq def (getenv "Patrick_35_imp")) (setq def (atoi def)) (setq def 1) ) (and (ssget "x" (list (cons 0 "insert") (cons 2 (strcat "`**," Mon_Cartouche)))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (strcase (nombl ent)) (strcase Mon_Cartouche)) (progn (vla-getboundingbox ent 'bg 'hd) (setq lst (cons (list (vlax-safearray->list bg) (vlax-safearray->list hd)) lst)) ) ) ) (vla-delete sel) (cond ((eq (logand def 1) 1) (setq lst (vl-sort lst '(lambda(a B) (if (equal (cadar a) (cadar B) 0.0001) (< (caar a) (caar B)) (> (cadar a) (cadar B)) ) ) ) ) ) ((eq (logand def 2) 2) (setq lst (vl-sort lst '(lambda(a B) (if (equal (caar a) (caar B) 0.0001) (> (cadar a) (cadar B)) (< (caar a) (caar B)) ) ) ) ) ) ((eq (logand def 4) 4) (setq lst (vl-sort lst '(lambda(a B) (if (equal (cadar a) (cadar B) 0.0001) (< (caar a) (caar B)) (< (cadar a) (cadar B)) ) ) ) ) ) ((eq (logand def 8) 8) (setq lst (vl-sort lst '(lambda(a B) (if (equal (caar a) (caar B) 0.0001) (< (cadar a) (cadar B)) (< (caar a) (caar B)) ) ) ) ) ) ) (and (eq (logand def 16) 0) (kill "PDFCreator.exe")) (if (setq pdf (vlax-get-or-create-object "PDFCreator.clsPDFCreator")) (progn (vlax-invoke pdf 'cstart "/NoProcessingAtStartup") (vlax-put pdf 'cPrinterStop :vlax-false) (vlax-put pdf 'cPrinterStop :vlax-true) (vlax-put pdf 'cWindowState 0) (and (eq (logand def 16) 0) (vlax-invoke pdf 'cClearCache)) (vlax-put-property pdf 'cOption "savefilename" (vlax-make-variant (vl-filename-base (getvar "dwgname")))) (setq tot (vlax-get pdf 'count)) ) (progn (or (setq pdf2 (vlax-get-or-create-object "PDFCreatorBeta.JobQueue")) (setq pdf2 (vlax-get-or-create-object "PDFCreator.JobQueue")) ) (and (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke (list pdf2 'initialize))) (eq (logand def 16) 0) (progn (vlax-invoke pdf2 'releasecom) (vlax-invoke pdf2 'initialize) ) ) (setq tot (vlax-get pdf2 'count)) ) ) (setq lay (vla-get-activelayout doc) plt (vla-get-plot doc) ) (vla-put-configname lay "PDFCreator") (vla-refreshplotdeviceinfo lay) (vla-put-canonicalmedianame lay "A4") (vla-put-centerplot lay :vlax-true) (vla-put-paperunits lay acMillimeters) (vla-put-plothidden lay :vlax-false) (vla-put-plotrotation lay ac270degrees) (vla-put-plottype lay acWindow) (vla-put-plotviewportborders lay :vlax-false) (vla-put-plotviewportsfirst lay :vlax-true) (vla-put-plotwithlineweights lay :vlax-true) (vla-put-plotwithplotstyles lay :vlax-true) (vla-put-scalelineweights lay :vlax-false) (vla-put-standardscale lay acVpScaleToFit) (vla-put-stylesheet lay "monochrome.ctb") (vla-put-usestandardscale lay :vlax-true) (and (vl-catch-all-error-p (setq bck (vl-catch-all-apply 'getvar (list "backgroundplot")))) (setq bck nil)) (and bck (setvar "backgroundplot" 0)) (foreach ent lst (mon_impression ent) (cond (pdf (while (/= (vlax-get pdf 'cCountOfPrintjobs) (1+ tot))) (setq tot (1+ tot)) ) (pdf2 (vlax-invoke-method pdf2 'waitforjobs (setq tot (1+ tot)) 10) ) ) ) (cond (pdf (and (eq (logand def 16) 0) (vlax-invoke pdf 'cCombineAll)) (vlax-release-object pdf) ) (pdf2 (and (eq (logand def 16) 0) (progn (vlax-invoke pdf2 'mergealljobs) (and (setq fic (getfiled "Nom du PDF" (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) ".pdf") "PDF" 1)) (vlax-invoke (vlax-get pdf2 'nextjob) 'convertto fic) ) (vlax-invoke pdf2 'releasecom) ) ) (vlax-release-object pdf2) ) ) (and bck (setvar "backgroundplot" bck)) ) ) (princ) ) @+ Les Lisps de PatrickLe 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 More sharing options...
Begood Posté(e) le 5 septembre 2016 Partager Posté(e) le 5 septembre 2016 C'est bon, ça marche impec !Merci beaucoup pour ton travail et ta réactivité ;)@+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Begood Posté(e) le 6 septembre 2016 Partager Posté(e) le 6 septembre 2016 Pour fonctionner sur des blocs dynamiques @+ Bonjour Patrick_35, J'ai une dernière demande :unsure: , est-ce qu'il serait possible de changer l'orientation (portrait ou paysage) en fonction des dimensions du bloc cadre ?Du genre si X > Y alors paysageet si X < Y alors portrait. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 7 septembre 2016 Partager Posté(e) le 7 septembre 2016 (modifié) Salut (defun c:imp(/ bck bg def doc ent hd lay lst pdf plt sel tot kill nombl mon_impression Mon_Cartouche) (defun kill(qui / item meth1 meth2 obj WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process") ) (vlax-for item meth2 (and (setq obj (vlax-get item 'CommandLine)) (vl-string-search (strcase qui) (strcase obj)) (vlax-invoke item 'Terminate) ) ) (foreach item (list WMI meth1 meth2) (vlax-release-object item) ) ) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (defun mon_impression(dim) (if (> (distance (car dim) (list (caadr dim) (cadar dim) (caddar dim))) (distance (list (caadr dim) (cadar dim) (caddar dim)) (cadr dim)) ) (vla-put-plotrotation lay ac270degrees) (vla-put-plotrotation lay ac0degrees) ) (vlax-invoke lay 'setwindowtoplot (list (caar dim)(cadar dim)) (list (caadr dim)(cadadr dim)) ) (vl-catch-all-apply 'vlax-invoke (list plt 'plottodevice)) ) (setq doc (vla-get-activedocument (vlax-get-acad-object)) Mon_Cartouche "Cart" ; NOM DU CARTOUCHE ) (if (setq def (getenv "Patrick_35_imp")) (setq def (atoi def)) (setq def 1) ) (and (ssget "x" (list (cons 0 "insert") (cons 2 (strcat "`**," Mon_Cartouche)))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (strcase (nombl ent)) (strcase Mon_Cartouche)) (progn (vla-getboundingbox ent 'bg 'hd) (setq lst (cons (list (vlax-safearray->list bg) (vlax-safearray->list hd)) lst)) ) ) ) (vla-delete sel) (cond ((eq (logand def 1) 1) (setq lst (vl-sort lst '(lambda(a B) (if (equal (cadar a) (cadar B) 0.0001) (< (caar a) (caar B)) (> (cadar a) (cadar B)) ) ) ) ) ) ((eq (logand def 2) 2) (setq lst (vl-sort lst '(lambda(a B) (if (equal (caar a) (caar B) 0.0001) (> (cadar a) (cadar B)) (< (caar a) (caar B)) ) ) ) ) ) ((eq (logand def 4) 4) (setq lst (vl-sort lst '(lambda(a B) (if (equal (cadar a) (cadar B) 0.0001) (< (caar a) (caar B)) (< (cadar a) (cadar B)) ) ) ) ) ) ((eq (logand def 8) 8) (setq lst (vl-sort lst '(lambda(a B) (if (equal (caar a) (caar B) 0.0001) (< (cadar a) (cadar B)) (< (caar a) (caar B)) ) ) ) ) ) ) (and (eq (logand def 16) 0) (kill "PDFCreator.exe")) (if (setq pdf (vlax-get-or-create-object "PDFCreator.clsPDFCreator")) (progn (vlax-invoke pdf 'cstart "/NoProcessingAtStartup") (vlax-put pdf 'cPrinterStop :vlax-false) (vlax-put pdf 'cPrinterStop :vlax-true) (vlax-put pdf 'cWindowState 0) (and (eq (logand def 16) 0) (vlax-invoke pdf 'cClearCache)) (vlax-put-property pdf 'cOption "savefilename" (vlax-make-variant (vl-filename-base (getvar "dwgname")))) (setq tot (vlax-get pdf 'count)) ) (progn (or (setq pdf2 (vlax-get-or-create-object "PDFCreatorBeta.JobQueue")) (setq pdf2 (vlax-get-or-create-object "PDFCreator.JobQueue")) ) (and (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke (list pdf2 'initialize))) (eq (logand def 16) 0) (progn (vlax-invoke pdf2 'releasecom) (vlax-invoke pdf2 'initialize) ) ) (setq tot (vlax-get pdf2 'count)) ) ) (setq lay (vla-get-activelayout doc) plt (vla-get-plot doc) ) (vla-put-configname lay "PDFCreator") (vla-refreshplotdeviceinfo lay) (vla-put-canonicalmedianame lay "A4") (vla-put-centerplot lay :vlax-true) (vla-put-paperunits lay acMillimeters) (vla-put-plothidden lay :vlax-false) (vlax-invoke lay 'setwindowtoplot '(0.0 0.0) '(10.0 10.0)) (vla-put-plotrotation lay ac270degrees) (vla-put-plottype lay acWindow) (vla-put-plotviewportborders lay :vlax-false) (vla-put-plotviewportsfirst lay :vlax-true) (vla-put-plotwithlineweights lay :vlax-true) (vla-put-plotwithplotstyles lay :vlax-true) (vla-put-scalelineweights lay :vlax-false) (vla-put-standardscale lay acVpScaleToFit) (vla-put-stylesheet lay "monochrome.ctb") (vla-put-usestandardscale lay :vlax-true) (and (vl-catch-all-error-p (setq bck (vl-catch-all-apply 'getvar (list "backgroundplot")))) (setq bck nil)) (and bck (setvar "backgroundplot" 0)) (foreach ent lst (mon_impression ent) (cond (pdf (while (/= (vlax-get pdf 'cCountOfPrintjobs) (1+ tot))) (setq tot (1+ tot)) ) (pdf2 (vlax-invoke-method pdf2 'waitforjobs (setq tot (1+ tot)) 10) ) ) ) (cond (pdf (and (eq (logand def 16) 0) (vlax-invoke pdf 'cCombineAll)) (vlax-release-object pdf) ) (pdf2 (and (eq (logand def 16) 0) (progn (vlax-invoke pdf2 'mergealljobs) (and (setq fic (getfiled "Nom du PDF" (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) ".pdf") "PDF" 1)) (vlax-invoke (vlax-get pdf2 'nextjob) 'convertto fic) ) (vlax-invoke pdf2 'releasecom) ) ) (vlax-release-object pdf2) ) ) (and bck (setvar "backgroundplot" bck)) ) ) (princ) ) @+ Modifié le 20 octobre 2016 par Patrick_35 Les Lisps de PatrickLe 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 More sharing options...
Begood Posté(e) le 7 septembre 2016 Partager Posté(e) le 7 septembre 2016 Salut @+ Génial, ça fonctionne impec !Merci encore pour ton travail et ton temps. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Begood Posté(e) le 16 septembre 2016 Partager Posté(e) le 16 septembre 2016 Bonjour Patrick_35,Je rencontre un problème avec des fichiers de provenance différente de ceux que j'utilise habituellement.Le bloc cadre est pourtant placé où il faut mais la fonction imprime soit une page blanche soit une partie du contenu dans un coin, comme avec un décalage d'origine. Ci-joint un exemple de fichier qui pose problème, le bloc cadre est nommé "cadre_impression" et le pdf qui en ressort est en portrait et ne contient qu'un bout de la zone imprimée. Une idée sur la variable ou le paramètre qui pose problème ?Merci.exemple.zip Lien vers le commentaire Partager sur d’autres sites More sharing options...
Begood Posté(e) le 19 octobre 2016 Partager Posté(e) le 19 octobre 2016 up Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 20 octobre 2016 Partager Posté(e) le 20 octobre 2016 Salut Je ne comprends pas pourquoi cela ne fonctionne pas.J'ai vérifié, les coordonnées, les scu, les variables, etc... et rien. Pire, j'ai fais un copier/coller des objets de l'exemple sur un fichier vierge et là, tout fonctionne :oD'ailleurs, j'ai corrigé un petit bug quand la fenêtre n'est pas initialisée. J'ai même fais un comparatif entre le dessin d'exemple et celui qui fonctionne et je n'ai pas trouvé de différences.Il y a une raison quelque part. Je continue de chercher @+ Les Lisps de PatrickLe 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 More sharing options...
Begood Posté(e) le 28 octobre 2016 Partager Posté(e) le 28 octobre 2016 Salut Je ne comprends pas pourquoi cela ne fonctionne pas.J'ai vérifié, les coordonnées, les scu, les variables, etc... et rien. Pire, j'ai fais un copier/coller des objets de l'exemple sur un fichier vierge et là, tout fonctionne :oD'ailleurs, j'ai corrigé un petit bug quand la fenêtre n'est pas initialisée. J'ai même fais un comparatif entre le dessin d'exemple et celui qui fonctionne et je n'ai pas trouvé de différences.Il y a une raison quelque part. Je continue de chercher @+ Slt,J'ai fais la mise à jour, merci.Depuis la PDFCreator 2.4 l'impression semblait plus lente et depuis ta mise à jour c'est revenu à la normale.++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
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