Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Mit PlotToFile PDF erzeugen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Mit PlotToFile PDF erzeugen (1262 / mal gelesen)
cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 20. Jun. 2016 06:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen!
Hab einige Versuche unternommen, um einen Ausschnitt mit PlotToFile in eine PDF auszugeben, leider ohne Erfolg.
Alles im Programm scheint reibungslos zu funktionieren. Nur wird als Ergebnis keine PDF erzeugt, liegt das an der pc3?!
Die erzeugte PDF scheint keine zu sein ?!

Code:
; http://adndevblog.typepad.com/autocad/2013/01/plotting-a-window-to-dwf-using-objectarx-com-and-lisp.html

(defun c:xPlotWindow ( / acadObject acadDocument activeLayoutObject plt p1 point1 pPt1 pPt1sa pt1 p2 point2 pPt2 pPt2sa pt2 )
  (vl-load-com)
  (setq acadObject (vlax-get-Acad-object))
  (setq acadDocument (vla-get-ActiveDocument acadObject))
  (setq activeLayoutObject (vla-Get-ActiveLayout acadDocument))

  (setq plt (vla-get-plot acadDocument))

  (vla-put-configname activeLayoutObject "PDFCreator.pc3")
  (vla-put-canonicalmedianame  activeLayoutObject "User121" ) ; A1Format
  (vla-put-paperunits activeLayoutObject acMillimeters)
  (vla-put-plotrotation activeLayoutObject ac0degrees)

  (vla-put-StyleSheet activeLayoutObject "A1.ctb")

  (setq p1 (getpoint "\nSelect Window Point No 1 (Lower Left): "))
  (setq point1 (list (car p1) (cadr p1)))
  (setq pPt1 (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  (setq pPt1sa (vlax-safearray-fill pPt1 point1))
  (setq pt1 (vlax-make-variant pPt1sa (logior vlax-vbarray vlax-vbDouble)))

  (setq p2 (getpoint "\nSelect Window Point No 2 (Upper Right): "))
  (setq point2 (list (car p2) (cadr p2)))
  (setq pPt2 (vlax-make-safearray vlax-vbDouble '(0 . 1)))
  (setq pPt2sa (vlax-safearray-fill pPt2 point2))
  (setq pt2 (vlax-make-variant pPt2sa (logior vlax-vbarray vlax-vbDouble)))

  (vla-SetWindowToPlot activeLayoutObject pt1 pt2)
  (vla-put-plottype activeLayoutObject acWindow)

  (if (vla-plottofile plt "c:\\temp\\test.pdf" "PDFCreator.pc3")
    (princ "\nPrint saved c:\\temp\\test.pdf")
    (princ "\nError!")
    )

  (princ)
  )


------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 20. Jun. 2016 07:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

"In Datei drucken" ok, aber damit erstellt man PLT-Dateien und du redest von PC3, was willst du denn jetzt?
Auch Interessiert sich AutoCAD wohl kaum für deine Eigenbrödler-PDF-Treiber, mit dem darfst du schön
selbst ausmachen wo du etwas speicherst.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 20. Jun. 2016 08:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Editiert: Bei dem 'vla-pltotofile' war ich noch nicht wach, daher gestrichen, ist freilich auch für dwf/pdf zuständig - aber halt nur für die "internen" Treiber, für alles andere nimmst du ganz normal vla-plottodevice.

Teste den kopierten Code mit DWG to PDF oder Jpeg oder DWG, whatever,
AutoCAD wird deinem Vorhaben dann wohlgesonnener sein, nehme ich an.

Wie oben bereits angesprochen ist das deine Sache mit dem Dateinamen/Ablage bei anderen Treibern,
da interessiert sich Acad nicht sonderlich dafür (es ist ja nur ein stinknormaler Drucker für Acad, also gibt nur Daten, keinen Dateinamen).
------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 20. Jun. 2016 09:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke, das funktioniert schon mal. Ich habe lediglich noch ein Problem mit der Plotorientierung
"Landscape" bzw. "Portrait" !

Code:
  ;** Plotrotation
  (vla-get-PlotRotation activeLayoutObject)
  ;** Plot rotation Landscape 1 / ac90degrees
  (vla-put-plotrotation activeLayoutObject 1)
;;;  (vla-put-plotrotation activeLayoutObject ac90degrees)
  ;** Plot rotation Portrait 0 / ac0degrees
;;;  (vla-put-plotrotation activeLayoutObject 0)
;;;  (vla-put-plotrotation activeLayoutObject ac0degrees)


Wenn ich mal mein ActiveLayout mit (vla-get-PlotRotation activeLayoutObject) abfrage, erhalte ich 1 - also Landscape
Jedoch der Plot wird bei Ausführung in Portrait orientierung ausgegeben. Hab ich was vergessen ?

------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 20. Jun. 2016 09:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Vielleicht wie das Blattformat angegeben ist oder die Drehung im Treiber?
Ist es wirklich anders "wie von Hand" gedruckt?
(ohne zu testen)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 20. Jun. 2016 11:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Mit Extend-paperspace funktioniert es jetzt auch.

Vielleicht kann mir ja ein eifriger Tüftler noch die Progress-Anzeige verbessern. Man sieht den Prozess zwar am blinkenden Drucksymbol in der Menuleiste unten. Mir würde es jedoch mehr gefallen, wenn der Prozess vorgang in Prozent oder dergleichen angezeigt werden würde. Damit man sieht, dass tatsächlich etwas passiert und nicht Autocad einfach "stillsteht".
Die Expresstools variante ist nur eine Krücke...

Code:
(defun c:xPlotExtents ( / acadObject acadDocument activeLayoutObject plt p1 point1 pPt1 pPt1sa pt1 p2 point2 pPt2 pPt2sa pt2 )
  (vl-load-com)
;;;  (princ "\n*** Progressing ... please wait!")
  (setq acadObject (vlax-get-Acad-object))
  (setq acadDocument (vla-get-ActiveDocument acadObject))
  (setq activeLayoutObject (vla-Get-ActiveLayout acadDocument))

  (setq plt (vla-get-plot acadDocument))

  ; (vla-get-ConfigName activeLayoutObject)
  (vla-put-configname activeLayoutObject "DWG To PDF.pc3")
  ; (vla-get-canonicalmedianame activeLayoutObject)
  (vla-put-canonicalmedianame  activeLayoutObject "ISO_A1_(594.00_x_841.00_MM)" ) ; A1Format.


  ;** Plotrotation
  (vla-get-PlotRotation activeLayoutObject)
  ;** Plot rotation Landscape 1 / ac90degrees
  (vla-put-plotrotation activeLayoutObject 1)

  ;** Paperunits
  (vla-get-paperunits activeLayoutObject)
  (vla-put-paperunits activeLayoutObject acMillimeters)

  (vla-put-StyleSheet activeLayoutObject "A1.ctb")

  (vla-put-plottype activeLayoutObject acExtents)

  (acet-ui-progress-init (strcat "\nPlotting to: C:\\temp\\" (VL-FILENAME-BASE (getvar 'dwgname)) ".pdf") 0)
  (setq incr 0)
  (if (null (vla-plottofile plt (strcat "c:\\temp\\" (VL-FILENAME-BASE (getvar 'dwgname)) ".pdf") "DWG To PDF.pc3"))
    (princ "\n Error, couldn´t print!")
    (progn
      (while (< incr 1000)
        (acet-ui-progress-safe (setq incr (+ 0.0015 incr)))
        )
      )
    )
  (acet-ui-progress-done)
  (princ)
  )



------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 20. Jun. 2016 11:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

dazu nochmal gefragt, vielleicht blöd

Wie oben bereits angesprochen ist das deine Sache mit dem Dateinamen/Ablage bei anderen Treibern,
da interessiert sich Acad nicht sonderlich dafür (es ist ja nur ein stinknormaler Drucker für Acad, also gibt nur Daten, keinen Dateinamen).


wieso kann ich nicht auf andere Treiber, als die Autocad-internen zugreifen. Manuell ist es doch auch möglich ?!
käme da vielleicht object.PlotToDevice  infrage?!

Schnell getestet ja, mit der Methode lassen sich "externe" pc3-Dateien aufrufen, beispielsweise der PDFCreator.pc3

------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

[Diese Nachricht wurde von cadplayer am 20. Jun. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 20. Jun. 2016 12:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Über Device kannst du aber keinen Dateinamen mitgeben (weil ja eigentlich keine Datei erstellt werden soll - sondern ein Ploterzeugnis).
Sagt man das so? hmm

Handisch geht das? Ja, in dem du im Treiber sagst wo die Datei abgelegt werden soll oder du dies manuell angibst,
aber eben nicht über deine Lispelei innerhalb von Acad.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz