| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Der größte Rechenreiniger der Welt bei MUHR , ein Anwenderbericht
|
Autor
|
Thema: Makrohilfe: save model as 3Dpdf (2143 / mal gelesen)
|
gearloose7 Mitglied Techniker
Beiträge: 105 Registriert: 26.08.2010
|
erstellt am: 16. Mai. 2017 08:43 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Gemeinde, Ich möchte mir ein Makro basteln, welches mir ein geöffnetes Model (part oder assembly) als 3D pdf abspeichert. Ich scheitere momentan daran, dass ich nicht weiß wie ich den kleinen Hacken in der Windows-Box für 3Dpdf ansprechen kann. Hab auch schon je ein Makro speichern als pdf und speichern als 3Dpdf gespeichert und verglichen. Es scheint hier keinen Unterschied im Makro zu geben. Allerdings verhalten sich auch beide Makros gleich (= beide speichern nur im 2Dpdf ab). Wie komm ich per makro an meine 3Dpdf Option?
Bitte um Hilfe. Hier meine aufgezeichneten makros ' ######## pdf Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized longstatus = Part.SaveAs3("D:\00\09_BW xxxxx.PDF", 0, 0) End Sub ' ######## 3Dpdf Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized longstatus = Part.SaveAs3("D:\00\09_BW xxxxx.PDF", 0, 0) End Sub Danke lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 817 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 16. Mai. 2017 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für gearloose7
|
gearloose7 Mitglied Techniker
Beiträge: 105 Registriert: 26.08.2010
|
erstellt am: 16. Mai. 2017 09:49 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 16. Mai. 2017 11:27 <-- editieren / zitieren --> Unities abgeben: Nur für gearloose7
Hallo, hier mal ganz quick 'n' dirty aus der API Hilfe kopiert und leicht modifiziert. -Namensgebung für die PDF analog dem Modell- / Baugruppennamen via Holzhammermethode "Replace" -Pfad für die PDF ist der Pfad von dem Modell / der Baugruppe -vorhandene Datein werden radikal überbügelt -Zeichnungen werden ignoriert Code: Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swModelDocExt As SldWorks.ModelDocExtension Dim swExportPDFData As SldWorks.ExportPdfData Dim boolstatus As Boolean Dim filename As String Dim lErrors As Long Dim lWarnings As Long Sub main() Set swApp = Application.SldWorks swApp.Visible = True Set swModel = swApp.ActiveDoc Set swModelDocExt = swModel.Extension Set swExportPDFData = swApp.GetExportFileData(1) swExportPDFData.ExportAs3D = True swExportPDFData.ViewPdfAfterSaving = True filename = swModel.GetPathName() If swModel.GetType = swDocPART Then filename = Replace(filename, ".SLDPRT", ".PDF") ElseIf swModel.GetType = swDocASSEMBLY Then filename = Replace(filename, ".SLDASM", ".PDF") Else boolstatus = MsgBox("Kein 3D Model aktiv", vbOKOnly) Exit Sub End If boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings) End Sub
Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 16. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 16. Mai. 2017 11:34 <-- editieren / zitieren --> Unities abgeben: Nur für gearloose7
Hallo gearloose7 Zitat: Original erstellt von gearloose7: Da ich aber kein Makroprogrammierer bin, hab ich noch keine Ahnung wie ich das in mein Makro einbauen kann.
Dann wäre es doch eine gute Gelegenheit sich damit auseinander zu setzen. Siehe auch OT: Makros, oder meine Hinweise zu solchen Fragen wie hier als Vorschlag oder hier als Erklärung. Als Ansatz vielleicht so viel:
Code:
' Deklarationen musst du noch machen Set swApp = Application.SldWorks Set ModelDoc = swApp.ActiveDoc Set ModelDocExt = ModelDoc.Extension ' set ExportAs3D to true via ExportPDFData object Set ExportPDFData = swApp.GetExportFileData(1) ' swExportPdfData = 1 ExportPDFData.ExportAs3D = True ' den Namen für das §d-PDF festlegen oder irgendwie ermitteln, zusammensetzen, was auch immer filename = "c:\temp\3dpdf-test.pdf" ' and save the model If ModelDocExt.SaveAs(filename, 0, 0, ExportPDFData, errors, warnings) Then 'MsgBox filename & " saved successfully" else 'MsgBox "Ups, Fehler" endif
Das ist so kein lauffähiges Makro, ein paar Deklarationen fehlen und müssen dazu gemacht werden und den Dateinamen setzt du dir vermutlich auch anders zusammen, aber in dem Codeschnipsel hast du zumindest alles drin, wie du das mit dem 3D-PDF Export machen musst. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gearloose7 Mitglied Techniker
Beiträge: 105 Registriert: 26.08.2010
|
erstellt am: 16. Mai. 2017 14:36 <-- editieren / zitieren --> Unities abgeben:
|
gearloose7 Mitglied Techniker
Beiträge: 105 Registriert: 26.08.2010 Windows 10 x64 Pro NVidia Quadro irgendwas SWX2022 SP5
|
erstellt am: 17. Mai. 2017 11:57 <-- editieren / zitieren --> Unities abgeben:
Hi, Hab es jetzt probiert. Das makro von Bernd funktioniert. Eigentlich will ich ein anderes makro (Makro 16 von Thomas Weith [URL=http://solidworks.cad.de/mm_boerse02.htm][/URL] ) so gestalten, dass bei der pdf Option im ersten Schritt ein 3Dpdf exportiert wird und später einmal ergänzt um die Auswahlmöglichkeit 3Dpdf oder nicht. Leider hab ich zu wenig Erfahrung in Makroprogrammierung um das umsetzen zu können. Im Anhang mal das Makro, welches adaptiert werden soll. Ich check auch die zusammenhänge nicht wirklich (einmal heißt es bRet und dann wieder boolstatus. Kann das frei definiert werden oder was....) Ich hab mal einen codeschnipsel vom funktionierendem Bernd-makro in mein makro kopiert. Ich bin gescheitert, da ich auch nicht weiß, wie ich die ganzen Zuweisungen (Deklarationen?) anpassen muß. lg Gyro edit: wollte den link zu Makro 16 geradebiegen, schaff nicht mal das .... [Diese Nachricht wurde von gearloose7 am 17. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 19. Mai. 2017 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für gearloose7
Hallo Gyro, hab das Makro mal erweitert, weil ich das eine interrsante Aufgabe fand. Leider musste ich im Macro etwas pfuschen, weil ich beim speichern als 3D PDF immer einen Error bei der SaveAs-Methode zurück bekomme obwohl die Datei meines erachtens problemlos erstellt wird. Hab daher die Fehlerbenachrichtigung an den Anwender für diesen einen Fall (Exporttype = 3D PDF + Errorrückgabewert = 1) umgangen. Ich habe jetzt nicht alle Einstellmöglichkeiten / Kombinationen auf funktionalität überprüft aber eigentlich sollte es laufen. Beim Anhang ".txt" entfernen und testen. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gearloose7 Mitglied Techniker
Beiträge: 105 Registriert: 26.08.2010
|
erstellt am: 19. Mai. 2017 11:09 <-- editieren / zitieren --> Unities abgeben:
|