| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Cloud for All - Neue Vorteile in Ihrer SOLIDWORKS Lizenz |
Autor
|
Thema: API: Dateinamen auslesen (5189 mal gelesen)
|
pi-design Mitglied Design Engineer
Beiträge: 950 Registriert: 09.08.2002 WIN 10 / 64bit SWX 2018 SP5 64 Bit MS Office 2013 HP Z420 Intel Xeon E5-1620 3,66GHz 16 GB RAM 2x HP LA2405wg (24") NVIDIA Quadro 2000 Space Explorer
|
erstellt am: 05. Feb. 2008 10:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, es gibt ja ein Makro von Andreas Bacher aus Stefan's Makrosammlung, welches dxf, pdf und jpg's automatisch speichert. ' ****************************************************************************** ' C:\DOKUME~1\ast06\LOKALE~1\Temp\swx2140\Macro1.swb - macro recorded on 14/04/04 by Andreas Bacher ' ****************************************************************************** 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) + ".dxf" ' 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 saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".jpg" ' Speichern als JPG-Datei Part.SaveAs2 saveFileName, 0, True, False End Sub
Was muß geändert werden, wenn diese Dateien in ein anderes Verzeichnis (k:\mechanik\zeichnungen) als das der *.slddrw gespeichert werden soll.
Gruß Pille ------------------ pi-design ACD Gruppe 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. Feb. 2008 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Hallo Pille, du musst den Pfad deines Dokument aufteilen und somit Verzeichnis, Dokumentname und Extension zu ermitteln. Da gibt es mehrere Möglichkeiten durch die verschiedenen String Funktionen. Schau dir mal diesen Tipp an! ------------------ Mfg Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pi-design Mitglied Design Engineer
Beiträge: 950 Registriert: 09.08.2002 WIN 10 / 64bit SWX 2018 SP5 64 Bit MS Office 2013 HP Z420 Intel Xeon E5-1620 3,66GHz 16 GB RAM 2x HP LA2405wg (24") NVIDIA Quadro 2000 Space Explorer
|
erstellt am: 06. Feb. 2008 08:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, gibt es nicht einen "kürzeren" Befehl um den Namen des aktiven Dokuments auszulesen? Mein Softi (ich bin ein Laie) meint, das Dein Tip zwar funktioniert, aber doch ein größerer Programmieraufwand bedeutet. Gruß Pille ------------------ pi-design ACD Gruppe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 06. Feb. 2008 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Das kommt darauf an, wie der neue Dateipfad definiert ist. Wenn es immer der gleiche Pfad ist, ist es natürlich einfach. Wenn der Pfad ständig wechselt, kannst du ein neues Formular aufmachen und dorthin browsen. Beschreib doch mal, was du machen willst. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pi-design Mitglied Design Engineer
Beiträge: 950 Registriert: 09.08.2002 WIN 10 / 64bit SWX 2018 SP5 64 Bit MS Office 2013 HP Z420 Intel Xeon E5-1620 3,66GHz 16 GB RAM 2x HP LA2405wg (24") NVIDIA Quadro 2000 Space Explorer
|
erstellt am: 06. Feb. 2008 08:43 <-- editieren / zitieren --> Unities abgeben:
|
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: 06. Feb. 2008 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Hallo Pille Einfach den Dateiname ohne Endung mit der Funktion von Andreas Müller ermitteln und den Speicherpfad für dein PDF neu zusammensetzen. Code: Public Function GetFileNameNoExt(SwxModel As Object) As String ' aus dem übergebenen modell (=SwxModel) wird der Dateiname ohne Extension gefiltert ' wenn das Modell noch nicht gespeichert wurde, wird ein 0-String zurückgegeben' by Andreas Müller; 5503 Schafisheim; Tel. +41 (0)62 891 19 63 Dim strDateipfad As String Dim vDummy As Variant GetFileNameNoExt = "" strDateipfad = SwxModel.GetPathName() If strDateipfad = "" Then Exit Function 'das Modell wurde noch nicht gespeichert Do vDummy = InStr(strDateipfad, "\") strDateipfad = Right(strDateipfad, Len(strDateipfad) - vDummy) Loop While vDummy <> 0 If UCase(Right(strDateipfad, 7)) = ".SLDPRT" Or UCase(Right(strDateipfad, 7)) = ".SLDASM" Then GetFileNameNoExt = Left(strDateipfad, Len(strDateipfad) - 7) Else GetFileNameNoExt = strDateipfad End If End Function
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. 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: 06. Feb. 2008 09:33 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Hallo pi-design Zitat: Original erstellt von pi-design: Mein Softi (ich bin ein Laie) meint, das Dein Tip zwar funktioniert, aber doch ein größerer Programmieraufwand bedeutet.
Uh, oh, größerer Programmieraufwand ... da hab ich als Hobbyprogrammierer ja sogar keine Ausreden mehr Hier der "größere Programmieraufwand" (in drwpath steht dein kompletter Pfad drin):
Code:
' Pfad abschneiden zielname = Mid(drwpath, InStrRev(drwpath, "\") + 1, Len(drwpath)) ' Extension abschneiden, einfache Variante zielname = Left(zielname, Len(zielname) - 7)
Nach diesem 2 Zeilen großem Programmieraufwand hast du in Zielname den Dateiname ohne Pfad und Extension drinstehen.Größerer Programmieraufwand, tststs ... Nimm doch lieber gleich du-weißt-schon-was Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pi-design Mitglied Design Engineer
Beiträge: 950 Registriert: 09.08.2002 WIN 10 / 64bit SWX 2018 SP5 64 Bit MS Office 2013 HP Z420 Intel Xeon E5-1620 3,66GHz 16 GB RAM 2x HP LA2405wg (24") NVIDIA Quadro 2000 Space Explorer
|
erstellt am: 06. Feb. 2008 10:11 <-- editieren / zitieren --> Unities abgeben:
|
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 06. Feb. 2008 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Wenn ihr sowieso den Pfad abschneidet, könnt ihr auch gleich mit Part.Gettitle den Namen ohne Pfad holen. Dann hinten die Endung ab und in den festen Pfad als ... speichern. Aufwand ist das nicht. ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? 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: 06. Feb. 2008 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Zitat: Original erstellt von Lutz Federbusch: Wenn ihr sowieso den Pfad abschneidet, könnt ihr auch gleich mit Part.Gettitle den Namen ohne Pfad holen. Dann hinten die Endung ab und in den festen Pfad als ... speichern. Aufwand ist das nicht.
Hihi, von wegen, großer Aufwand sogar. Du müsstest ja dann prüfen, ob schon eine Endung dranhängt und die nur dann ggf. abschneiden, je nach Einstellung im Windows Explorer ("Erweiterungen bei bekannten Dateitypen ausblenden"). SCNR Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 06. Feb. 2008 12:08 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Zitat: Original erstellt von Lutz Federbusch: Wenn ihr sowieso den Pfad abschneidet, könnt ihr auch gleich mit Part.Gettitle den Namen ohne Pfad holen. Dann hinten die Endung ab und in den festen Pfad als ... speichern. Aufwand ist das nicht.
Ich hab mich nun schon einige Zeit nicht mehr mit diesem Thema befasst, aber: in dieser Form stimmt Deine Aussage nicht, Lutz. Bis SWX 05 oder 06 brachte "Gettitle" je nach Einstellung des Windowsexplorers unterschiedliche Resultate hervor!! Soweit ich mich erinnern kann, wurde der Name mit oder ohne Extension gebracht. Kann natürlich sein, dass sich das zwischenzeitlich geändert hat. ------------------ Gruss Andreas bachmann engineering ag Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 06. Feb. 2008 12:14 <-- editieren / zitieren --> Unities abgeben: Nur für pi-design
Stimmt, aber das kann man ja wohl abfangen. Entscheidend ist, ob der Explorer die bekannten Dateitypen ausblendet. Wenn man das Ergebnis von Gettitle auf Punkt abfragt, weiß man aber Bescheid. Da sowieso der Dateityp hinten weg und ein neuer fürs Speichern_unter dran soll, ist die Abfrage ohnehin nötig. ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 06. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |