| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| 3DEXPERIENCE Conference 2024 | München |
Autor
|
Thema: 3D Pdf Makro (3616 mal gelesen)
|
AbelThorsten Mitglied Student
Beiträge: 5 Registriert: 05.11.2008 SolidWorks 2008 Sp3.1
|
erstellt am: 05. Nov. 2008 11:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich fange gerade an mich in Makroprogramierung in VB einzuarbeiten. Deshalb besitze ich lediglich Anfängerwissen. Ich möchte gerne eine Part-Datei als 3D Pdf über ein Makro abspeichern. Als Normales PDF bekomme ich das hin nur leider bekomme ich das die 3D Funktion nicht aktiviert. In der API Hilfe habe ich dazu einen Eintrag gefunden nur leider kann ich damit nicht viel anfangen. Kann mir evt jemand ein Beispielprogramm posten? Das wäre mir eine riesen Hilfe! vielen Dank im Vorraus! mfg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fast_fredy Mitglied Konstrukteur
Beiträge: 307 Registriert: 29.06.2004 SWX 2019 SP5.0 x64, keytech 13.1.2.182, Windows 10 Pro for Workstations(Version 1809), Office 2016, Dell Precision 5820 Tower, 32GB RAM, NVIDIA Quadro RTX 4000/PCIe/SSE2(R419)
|
erstellt am: 05. Nov. 2008 11:44 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
|
fast_fredy Mitglied Konstrukteur
Beiträge: 307 Registriert: 29.06.2004 SWX 2019 SP5.0 x64, keytech 13.1.2.182, Windows 10 Pro for Workstations(Version 1809), Office 2016, Dell Precision 5820 Tower, 32GB RAM, NVIDIA Quadro RTX 4000/PCIe/SSE2(R419)
|
erstellt am: 05. Nov. 2008 11:52 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
|
AbelThorsten Mitglied Student
Beiträge: 5 Registriert: 05.11.2008 SolidWorks 2008 Sp3.1
|
erstellt am: 05. Nov. 2008 11:52 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die schnelle Antwort. Jedoch ist das leider nicht die Hilfe zu meinem Problem. Also, SolidWorks kann Part-Dateien als 3D Pdf abspeichern, jedoch bekomme ich das nicht in ein Makro eingebaut. Mein Makro sieht zurzeit folgendermaßen aus (es ist nur ein Auszug): Private Sub Speichern_Click() Dim swApp As Object Dim Model As Object Dim SelMgr As Object Dim longstatus As Long, longwarnings As Long Dim Name As String Dim Filename As String Dim sFolder As String 'Variable für das Windows-Verzeichnis Dim sFile As String 'Variable für die Dateisuche Dim asFiles() As String 'Datenfeld für die Ergebnisdateien Dim lCounter As Long 'Zählervariable
Set swApp = Application.SldWorks Set Model = swApp.ActiveDoc Set SelMgr = Model.SelectionManager . . . If PDF3D = True Then ExportPdfData.ExportAs3D = True Model.SaveAs2 "K:\CAD, 3-D\3-D-PDF`s\3D-PDF Dokumente\" + Teilenummer.Text + ".pdf", 0, True, True Call MsgBox("Dateien wurden erfolgreich gespeichert.", vbOKOnly, "Information") End If ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 05. Nov. 2008 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
Hallo Thorsten, du musst dein dein ExportData Objekt auch in die SaveAs Methode übergeben. Dieser Parameter existiert in der neusten SaveAs Methode ModelDocExtension.SaveAs. Such mal in der der API Hilfe nach dem Beispiel "Save File as PDF Example (VB)". Dieses wird die sicherlich helfen. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 05. Nov. 2008 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
Hallo hast Du eigentlich schon mal die API-Online-Hilfe bemüht? unter dem Stichwort "ExportPdfData Object" steht dort ------------------------------------------------------------------ Allows access to the PDF export data interface, which allows you to save: drawing sheets to PDF. parts and assemblies to 3D PDF. To export drawing sheets to PDF: Get the ExportPdfData object using SldWorks::GetExportFileData. Set the sheets to export to PDF using ExportPdfData::SetSheets. Save the sheets using ModelDocExtension::SaveAs. To export a part or assembly to 3D PDF: Get the ExportPdfData object using SldWorks::GetExportFileData. Set ExportPdfData::ExportAs3D to TRUE. Save the part or drawing document using ModelDocExtension::SaveAs. Use the Accessors link above to get a list of functions that return this object. ------------------------------------------------------------------ und das dazugehörige Beispiel angesehen? ------------------ Grüße Heinz
[Diese Nachricht wurde von nahe am 05. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AbelThorsten Mitglied Student
Beiträge: 5 Registriert: 05.11.2008 SolidWorks 2008 Sp3.1
|
erstellt am: 05. Nov. 2008 13:18 <-- editieren / zitieren --> Unities abgeben:
Danke nochmalf für die schnelle Hilfe! Leider bin ich wie gesagt ein blutiger Anfänger, deswegen funktioniert es wohl auch immernoch nicht! Ich habe jetzt folgendes geschrieben: Private Sub Speichern_Click() Dim swApp As Object Dim Model As Object Dim SelMgr As Object Dim longstatus As Long, longwarnings As Long Dim Name As String Dim Filename As String Dim swModel As SldWorks.ModelDoc2 Dim swModelDocExt As SldWorks.ModelDocExtension Dim swExportPDFData As SldWorks.ExportPdfData Dim sFolder As String 'Variable für das Windows-Verzeichnis Dim sFile As String 'Variable für die Dateisuche Dim asFiles() As String 'Datenfeld für die Ergebnisdateien Dim lCounter As Long 'Zählervariable Set swApp = Application.SldWorks Set Model = swApp.ActiveDoc Set SelMgr = Model.SelectionManager . . . If PDF3D = True Then swExportPDFData.ExportAs3D = True 'Model.SaveAs2 "K:\CAD, 3-D\3-D-PDF`s\3D-PDF Dokumente\" + Teilenummer.Text + ".pdf", 0, True, False swModelDocExt.SaveAs2 "K:\CAD, 3-D\3-D-PDF`s\3D-PDF Dokumente\" + Teilenummer.Text + ".pdf", 0, 0, swExportPDFData Call MsgBox("Datei wurden erfolgreich gespeichert.", vbOKOnly, "Information") End If Dabei bekomme ich in dieser Zeile: swExportPDFData.ExportAs3D = True die Fehlermeldung: Objektvariable oder With-Blockvariable nicht festgelegt.
ich vermute mal ganz stark das auch noch mehr Fehler in dem Abschnitt sind! Wenn ich alles aus texte also in hochkomma setzte funktioniert der rest des programms den ich nicht gepostet habe ganz wunderbar! also muss hier irgendwo der fehler sein. Die hilfedateien habe ich mir angesehen... nur so wie es aussieht kann ich damit nicht umgehen! ich bin für jede hilfe sehr dankbar! mfg Thorsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 05. Nov. 2008 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
Hallo Thorsten, du musst deine Objekte initialisieren damit du die Befehle und Eigenschaften dieser verwenden kannst. Ich kann dir wirklich nur empfehlen die das Beispiel "Save File as PDF Example (VB)" aus der SolidWorks API Hilfe (SolidWorks Menü > Hilfe > API Hilfethemen) anzuschauen und Schritt für Schritt den Code auszuführen. Deine Objekte swModel, swModelDocExt und swExportPDFData initialisiert man zum Beispiel so:
Code: Set swModel = swApp.ActiveDoc Set swModelDocExt = swModel.Extension Set swExportPDFData = swApp.GetExportFileData(1)
Hinweis: Ich hoffe du hast bemerkt das du zwei ModelDoc Variablen (swModel & Model) hast. Eine Variable würde für deine Aufgabe reichen. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets [Diese Nachricht wurde von tbd am 05. Nov. 2008 editiert.] [Diese Nachricht wurde von tbd am 05. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AbelThorsten Mitglied Student
Beiträge: 5 Registriert: 05.11.2008 SolidWorks 2008 Sp3.1
|
erstellt am: 05. Nov. 2008 14:52 <-- editieren / zitieren --> Unities abgeben:
So langsam wird es mir echt peinlich, aber einen Veruch will ich noch waagen! Ich habe jetzt ein selbsttändiges Makro begonnen, leider sind die PDF Files die erzeugt werden immernoch 2D-PDF's also einfach nur bilder die Nicht gedreht werden können. Habt ihr irgendeine Idee was jetzt falsch ist. Das sieht doch jetzt fast genau so aus wie in der API Hilfe! 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() ' Path to which to save PDF file of drawing filename = "K:\CAD, 3-D\3-D-PDF`s\3D-PDF Dokumente\123.PDF"
Set swApp = Application.SldWorks swApp.Visible = True ' Open specified drawing Set swModel = swApp.ActiveDoc Set swModelDocExt = swModel.Extension Set swExportPDFData = swApp.GetExportFileData(1) If swExportPDFData Is Nothing Then MsgBox "Nothing" boolstatus = swExportPDFData.ExportAs3D boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings) End Sub mfg Thorsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HaPe Mitglied Dipl. Ing Maschinenbau, Konstrukteur, CAD-Admin
Beiträge: 1096 Registriert: 27.11.2001 i7 CPU 960@3.20GHz 8GB Ram Quadro 2000 4GB 70GB Raid 0 WIN7 prof. SP1 64 bit SWX 2010 SP5.0 SWX 2012 SP5.0 SWX 2013 SP5.0
|
erstellt am: 05. Nov. 2008 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
Hallo Thorsten, OT: nur ein Hinweis, bei Pfaden und Dateinamen solltest Du auf Leer- und Sonderzeichen verzichten. Sowas kann bei manchen Funktionen unter Umständen zu Problemen führen. Gruß HaPe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AbelThorsten Mitglied Student
Beiträge: 5 Registriert: 05.11.2008 SolidWorks 2008 Sp3.1
|
erstellt am: 05. Nov. 2008 15:11 <-- editieren / zitieren --> Unities abgeben:
So habe das Makro jetzt hinbekommen! Hier ist der richtige code zum erstellen von 3D PDF Dokumenten über ein Makro: 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() ' Path to which to save PDF file of drawing filename = "K:\CAD, 3-D\3-D-PDF`s\3D-PDF Dokumente\123.PDF"
Set swApp = Application.SldWorks swApp.Visible = True ' Open specified drawing Set swModel = swApp.ActiveDoc Set swModelDocExt = swModel.Extension Set swExportPDFData = swApp.GetExportFileData(1) If swExportPDFData Is Nothing Then MsgBox "Nothing" swExportPDFData.ExportAs3D = True boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings) End Sub vielen Dank nochmal für eure Hilfe!!
mfg Thorsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 05. Nov. 2008 15:19 <-- editieren / zitieren --> Unities abgeben: Nur für AbelThorsten
|