| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SolidCAM im Einsatz bei der August Weckermann KG |
Autor
|
Thema: Hilfe zu Macro für PDF und DWG speichern (3619 mal gelesen)
|
Julius Mitglied Projektleiter
Beiträge: 289 Registriert: 10.06.2003
|
erstellt am: 30. Okt. 2008 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mit Hilfe diesen Forums und ein paar anderen Seiten mir ein Macro zusammengeschustert/kopiert um per Klick ein PDF und DWG File von der Zeichnung zu erstellen. Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object Dim Component As Object Dim saveFileName As String Sub main()
Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc swApp.ActiveDoc.ActiveView.FrameState = 1 swApp.ActiveDoc.ActiveView.FrameState = 1 Part.EditSketch If (swApp.ActiveDoc.GetPathName = "") Then 'Abfrage ob Name vergeben wurde MsgBox ("Bitte zuerst Zeichnung speichern!") Exit Sub End If saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dwg" ' Speichern als DXF-Datei Part.SaveAs2 saveFileName, 0, True, False saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf" ' Speichern als PDF-Datei Part.SaveAs2 saveFileName, 0, True, False End Sub
Ich würde jetzt gerne noch das die Versionsnummer, die von PDM Works kommt, mit in dem Dateiname abgespeichert wird. Allso Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "Version" + ".dwg"
Leider kriege ich das nicht hin. Ich bekomme die Versionsnummer irgendwie nicht mit VBA rein (finde die Variable nicht) Danke schonmal für jeden Tip. PS: unter Dateieigenschaften wird "Version" beim Bauteil hinterlegt und Angezeigt. Bei der Zeichnungsnummer habe ich z.B. daher: Zeichnungsnummer = $PRP:"SW-Dateiname".$PRP:"Version" Diesen Ausdruck bräuchte ich als Dateiname.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing.
Beiträge: 3814 Registriert: 29.09.2004 SOLIDWORKS 2024 SP1.0 SOLIDWORKS 2023 SP5.0 SOLIDWORKS 2022 SP5.0 SOLIDWORKS 2021 SP5.1 SOLIDWORKS 2020 SP5 SOLIDWORKS 2019 SP5 (VM)
|
erstellt am: 30. Okt. 2008 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Hallo Gaius Julius CaesarBei uns wir der Index in den Eigenschaften der Datei (Baugruppe, Teil und Zeichnung) als Variable hinterlegt. Das Auslesen funktioniert folgendermassen
Code:
Dim swApp As Object Dim Part As Object Dim sPathName As String Dim nRetVal As Long Dim nErrors As Long Dim nWarnings As Long Dim bRet As Boolean Dim retval As Boolean Dim vSheetProps As Variant Dim blattsize As Long Dim SelObj As ObjectSet swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc Set DrawingDoc = swApp.ActiveDoc Index = Part.GetCustomInfoValue("", "Variablenname")
Gruss Mike ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 30. Okt. 2008 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Was Du brauchst ist so etwas in der Art: Code: Version = Part.GetCustomInfoValue("", "Version")
Noch ein Tipp: Wenn Du Strings zusammenhängen möchtest, benutze NICHT +, sondern &! Ich hatte mal Probleme, wo eine Zahl, als String, zu etwas anderem addiert wurde! + "Version" + ".dwg" ==> wird dann so aussehen: & Version & ".dwg" ------------------ http://www.worldcommunitygrid.org Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Julius Mitglied Projektleiter
Beiträge: 289 Registriert: 10.06.2003
|
erstellt am: 30. Okt. 2008 10:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke für die Tips. Ich hätte das auch so gedacht. Aber ich bekomme immer die Fehlermeldung das "Version" leer ist oder nix hinterlegt. Kann es sein das Version keine "Custom-Feld" ist und ich es anders abfragen muss? (der Wert wird ja vom PDM vergeben bzw gesteuert) [Diese Nachricht wurde von Julius am 30. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 30. Okt. 2008 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
|
HGK Mitglied
Beiträge: 57 Registriert: 07.03.2002 SWX 2006 SP5.0 Office Prem. SWX 2008 SP4.0 Office Prem. ProE WF3 M100 PDMlink 8.0 M040 Eplan21 4.30.3 EplanP8 1.8.6 WinXP und div. Hardware
|
erstellt am: 30. Okt. 2008 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
|
DjangoData Mitglied NC-Anlagentechniker
Beiträge: 23 Registriert: 20.07.2005 SolidWorks® Office Premium 2012 x64 Edition + CAMWorks2010 + PRO.File8.3 Microsoft Windows 7 Professional 64 Bit-Betriebssystem Fujitsu Technology Solution Celsius Intel(R) Xeon(R)CPU W3550 @ 3.07GHz 3.06GHz 12 GB RAM NIVDIA Quadro FX1800
|
erstellt am: 05. Nov. 2008 08:48 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Hallo, wir haben als PDM Pro.File und ich lese die Revision bzw Version folgendermaßen aus: Dim vConfigName As Variant Dim Rev, Ver, Workflow, Bez, ZeichNr As String Rev = swModel.GetCustomInfoValue(vConfigName, "Rev") Debug.Print "Revision = " + Rev Ver = swModel.GetCustomInfoValue(vConfigName, "Vers") Debug.Print "Revision = " + Vers Workflow = swModel.GetCustomInfoValue(vConfigName, "Workflowstatus") Debug.Print "Workflow = " + Workflow Bez = swModel.GetCustomInfoValue(vConfigName, "Description") Debug.Print "Bezeichnung = " + Bez ZeichNr = swModel.GetCustomInfoValue(vConfigName, "Zeichnungs_Nr.") Debug.Print "Zeichnungsnummer = " + ZeichNr NewName = ZeichNr & "-" & Rev & "-" & Ver & "-" & Workflow & "_" & Bez Wie gesagt, die Variablen werden in den Dateieigenschaften von Pro.File gefüllt und hiermit problemlos ausgelesen, damit erzeuge ich einen neuen Dateinamen (NewName), zum speichern mit den Pro.File Eigenschaften. Zum Testen des Ergenis schreibe ich meistens gleich danach dein Befehl (Debug.Print) für den Direktbereich. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 05. Nov. 2008 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Hallo Julius, kann das vielleicht sein, dass du die Versionsnummer gar nicht als benutzerdefinierte Dateieigenschaft ablegst, sondern als konfigurationsspezifisch? Denn dann müsste
Code: swModel.GetCustomInfoValue("HIER", "Revision")
noch der Konfigurationsname eingetragen werden! GrüßeTobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
f-m Mitglied
Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP3.0
|
erstellt am: 24. Nov. 2009 13:34 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Hallo, kann mir vll. jemand weiter helfen... unter SW2009 SP5.0 läuft das dinges nicht mehr!!! Hat jemand vll Rat?? Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim FeatureData As Object Dim Feature As Object Dim Component As Object Dim saveFileName As String Sub main()
Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc swApp.ActiveDoc.ActiveView.FrameState = 1 swApp.ActiveDoc.ActiveView.FrameState = 1 Part.EditSketch If (swApp.ActiveDoc.GetPathName = "") Then 'Abfrage ob Name vergeben wurde MsgBox ("Bitte zuerst Zeichnung speichern!") Exit Sub End If saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf" ' Speichern als PDF-Datei Part.SaveAs2 saveFileName, 0, True, False End Danke und Gruß Torsten ------------------ CSWA - Certified SolidWorks Associate CSWP - Certified SolidWorks Professional Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HGK Mitglied
Beiträge: 57 Registriert: 07.03.2002 SWX 2006 SP5.0 Office Prem. SWX 2008 SP4.0 Office Prem. ProE WF3 M100 PDMlink 8.0 M040 Eplan21 4.30.3 EplanP8 1.8.6 WinXP und div. Hardware
|
erstellt am: 24. Nov. 2009 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
|
f-m Mitglied
Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP3.0
|
erstellt am: 24. Nov. 2009 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
|
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 24. Nov. 2009 14:12 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
|
f-m Mitglied
Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP3.0
|
erstellt am: 24. Nov. 2009 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
|
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 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: 24. Nov. 2009 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Zitat: Original erstellt von f-m: ... er öffnet VB, markiert "LEFT" gelb und gibt folgen Meldung aus: Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden...
Hallo Torsten Diese Meldung kommt, wenn noch ein Verweis zu einer alten SWX-Version angehakt ist. Einfach im VBA-Editor unter Extras->Verweise... alle alten SWX-Verweise abhaken und die neuen anhaken. Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RotMilan Mitglied Technischer Zeichner, Stahl-/Maschinenbau
Beiträge: 164 Registriert: 09.01.2008 SWX Workgroup 2010 x64, SP 4.0 SWX Workgroup PDM Server 2009, SP 2.0
|
erstellt am: 24. Nov. 2009 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für Julius
Hallo Julius, der Gedanke kam mir heute auch erst, dass ich dafür mal ein Makro bräuchte - bin aber absolut Makrounfähig (Userbezogen). So wie ich das verstanden habe liest Dein Makro auch die Versionsnummer aus und verquickt die mit dem Dateinamen? Also wenn das mal läuft wäre ich Dir zu Dank verpflichtet, wenn Du die Datei hier mal reinstellst LG Rotmilan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |