| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB 2024 |
Autor
|
Thema: API: Speichern (1106 mal gelesen)
|
Oberparleiter Mitglied Konstrukteur
Beiträge: 706 Registriert: 06.06.2000
|
erstellt am: 24. Mrz. 2004 11:14 <-- editieren / zitieren --> Unities abgeben:
|
INKN Mitglied Consulant/Softwareentwickler
Beiträge: 277 Registriert: 22.08.2001 SolidWorks 2015-2018 Lino 3D layout 2.2<P>Visual Studio 2017
|
erstellt am: 24. Mrz. 2004 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
Hallo Frank Set SWModel = SWApp.ActiveDoc If Not SWModel Is Nothing Then filename = SWModel.GetTitle() End If wenn filename ".sld" enthält ist es schon gespeichert ------------------ Gruß Ingo Feuer & Flamme Leipzig 2012 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
d_b Mitglied vorhanden
Beiträge: 88 Registriert: 15.03.2001 42
|
erstellt am: 24. Mrz. 2004 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
Zitat: Original erstellt von INKN: Hallo FrankSet SWModel = SWApp.ActiveDoc If Not SWModel Is Nothing Then filename = SWModel.GetTitle() End If wenn filename ".sld" enthält ist es schon gespeichert
Hallo, das funktioniert so nur dann, wenn die Windows-Explorer Optionen entsprechend sind. Besser ist: ModelDoc2::GetPathName Der zurückgegebene String ist leer, wenn das Model noch nicht gespeichert ist. Gruß, d_b Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberparleiter Mitglied Konstrukteur
Beiträge: 706 Registriert: 06.06.2000
|
erstellt am: 24. Mrz. 2004 12:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Die Lösung von Ingo hatte ich auch zuerst in erwägung gezogen aber da ist ja das mit den Optionen in dem Windows-Explorer. Aber die Lösung von d_b muss ich mir mal genauer anschauen. Danke für die Antworten. ------------------ Gruss Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 24. Mrz. 2004 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
|
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: 24. Mrz. 2004 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
Hallo Klaus, es gibt mit ModelDoc.GetSaveFlag eine Funktion, mit der man das DirtyFlag abfragen kann, dass in den aller-aller-aller-meisten Fällen auch richtig gesetzt ist; wenn das aucf True steht, wurde noch nicht gespeichert, bei False ist es nicht notwendig zu speichern. Hab das in einem Makro von mir drin (http://solidworks.cad.de/mm_13.htm), da kannst du sehen, wie es eingesetzt werden kann. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de KLAMM? Was ist KLAMM? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 24. Mrz. 2004 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
|
Marco Kreutz Mitglied
Beiträge: 640 Registriert: 11.02.2003
|
erstellt am: 24. Mrz. 2004 14:46 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
Hallo, der sicherste Weg ist auf FileExist mit FilesystemObject zu prüfen... Reference auf Scrrun.dll setzen Dim fsoObject as FilesystemObject set fsoObject = New FileSystemObejct if fsoObject.FileExist(sGetPathName)= True Then 'Datei ist vorhanden endif
------------------ Marco Kreutz info@hitteam.de http://www.hitteam.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Armin B Mitglied Software Engineer ERP/PLM/CAD
Beiträge: 208 Registriert: 04.09.2000 Sw 2015 SP3
|
erstellt am: 24. Mrz. 2004 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
Zitat: Original erstellt von Oberparleiter: Hallo Ist es möglich über die API herauszufinden ob ein Teil, Baugruppe oder eine Zeichnung schon gespeichert worden ist?
Im Sinne dieser Fragestellung ist die Lösung von d_b sicher die Beste. Richtig ist auch, für den, der wissen möchte, ob die Datei "dreckig" ist, den Weg über ModelDoc2.GetSaveFlag zu gehen. Nicht ganz kapiert habe ich, welche Aussage denn mit fsoObject.Exist(...) getroffen werden soll. Das kann meiner Meinung nach nur die Aussage sein: auf einem per FileSystemObject erreichbaren und zum Auflisten berechtigten Pfad existiert eine Datei mit dem angegebenen Namen (der nicht der der Zeichnung sein muss, oder wenn, dass man diesen per GetPathName ermittelt hat, womit wir wieder bei d_b wären). Übrigens: Vorsicht bei Verwendung von Verwaltungssoftware, dann können die Pfade wieder ganz anders sein und der auflistende Zugriff ist auch nicht immer garantiert. Gruß, Armin
------------------
Meine bescheidene Heimatseite. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Kreutz Mitglied
Beiträge: 640 Registriert: 11.02.2003
|
erstellt am: 24. Mrz. 2004 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für Oberparleiter
Hallo, so jetzt folgt der vollständige Code: Dammit kann nun geprüft werden ob die Datei lokal gespeichert wurde und ob die Datei angefasst wurde (GetSaveFlag) Dim swApp As SldWorks.SldWorks Dim fso As FileSystemObject Dim sFullname As String Set fso = New FileSystemObject Set swApp = CreateObject("SldWorks.Application") sFullname = swApp.ActiveDoc.GetPathName If fso.FileExists(sFullname) = False Then MsgBox "Datei wurde noch nicht gespeichert..." Else MsgBox "Datei existiert." End If If swApp.ActiveDoc.GetSaveFlag = False Then MsgBox "Datei wurde noch nicht angefasst..." Else MsgBox "Datei wurde angefasst..." End If ------------------ Marco Kreutz info@hitteam.de http://www.hitteam.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberparleiter Mitglied Konstrukteur
Beiträge: 706 Registriert: 06.06.2000 Celsius R630, P4 Xeon 3,2 3GB Ram, 2x24" an FX3500 U320 SCSI, SWX 2011 SP4.0 WinXP SP3 Nicht weil es schwer ist, wagen wir es nicht, sondern weil wirs nicht wagen, ist es schwer.
|
erstellt am: 25. Mrz. 2004 13:10 <-- editieren / zitieren --> Unities abgeben:
|