| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| 16. mav Innovationsforum 2024 |
Autor
|
Thema: Dateiname bei Speichern unter aus benutzerdefinierte Eigenschaften auslesen (4238 mal gelesen)
|
saidan Mitglied IT-Sysadmin
Beiträge: 8 Registriert: 20.03.2015
|
erstellt am: 20. Mrz. 2015 15:38 <-- editieren / zitieren --> Unities abgeben:
Hallo CAD Gemeinde, im Grunde bin ich IT-Sysadmin und habe eher weniger mit CAD Systemen oder Makro Programmierung zu tun. Momentan habe ich aber eine Anfrage bezüglich SolidWorks. Schonmal vorab. Die Konstruktionsabteilung nutzt kein PDM System und aus einem mir nicht nachvollziehbaren Grund ist das auch nicht gewünscht. Hier meine Frage bzw. Anforderung: Sobald "Speichern unter" ausgewählt wird, soll im Speichern Dialog als Dateiname der Wert der Eigenschaft mit dem Namen "DOKUMENTNR" benutzt werden. Für Eure Hilfe wäre ich sehr dankbar. Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Börga Mitglied Dipl.-Ing. Maschinenbau/Konstruktionstechnik
Beiträge: 629 Registriert: 09.07.2003 SolidWorks Professionell 2020 SP5.0 SolidWorks PDM Intel® Xeon® E5-2637 v3 64 GB RAM AMD FirePro W7100 Windows 10 Pro
|
erstellt am: 21. Mrz. 2015 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für saidan
Hallo, wird die Eigenschaft "DOKUMENTNR" manuell aufgefüllt? Dann wäre es doch einfacher den Dateinamen einzugeben und daraus automatisch den Wert für die Eigenschaft zu generieren. So kenne ich das nur. ------------------ Gruß Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
saidan Mitglied IT-Sysadmin
Beiträge: 8 Registriert: 20.03.2015
|
erstellt am: 21. Mrz. 2015 13:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Börga, vielen Dank für Deine Antwort. Die Eigenschaft "DOKUMENTNR" wird automatisch mit einer laufenden Nummer ausgefüllt. Es gibt einige Makros, die z.B. eine Zeichnung automatisch als PDF speichern. Leider speichern die aber in das gleiche Verzeichnis in der die Zeichnung liegt. Ich benötige aber ein Speichern-Dialog, der mir die Möglichkeit gibt einen Pfad auszuwählen. Mir fehlen die Kenntnisse, ob man per Makro überhaupt das Feld Dateiname im Speichern-Dialog ansprechen kann. Oder ob man den Speichern-Dialog grundsätzlich manipulieren kann. Wenn Jemand einen Tipp dafür hätte, komme ich evtl. alleine weiter. Vielen Dank. Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1358 Registriert: 24.07.2002 AutoCAD ACA 2019 Solidworks 2021 Sp5.1 Enterprise PDM 2021 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell T3620 Intel Core i7-7700K 16 GB Arbeitsspeicher 2x Dell Ultrasharp U2415 Dell M4800
|
erstellt am: 21. Mrz. 2015 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für saidan
Hi Daniel, Such mal nach SaveFileDialog und der Programmiersprache die du verwenden willst. Bei dem Dialog kannst du so ziemlich alles wie Dateityp, Dateipfad usw. an- und vorgeben und nach dem Klick auf speichern auch weiter verwenden. Dazu müsstest du aber einen separaten Speichern Dialog anbieten. Gruß, Carsten [Diese Nachricht wurde von Carsten1210 am 21. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 21. Mrz. 2015 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für saidan
Hallo, also, per Makro lässt sich so alles mögliche machen. Ich denke aber nicht, das du in SolidWorks mit dem Speichern unter Befehl bereits deine Vorgaben reinbekommst. Du musst also sicherlich immer ein Makro aufrufen, das dir deinen Speichervorgang durchführt. In diesem Artikel habe ich mein Schriftfeldmakro veröffentlicht. http://ww3.cad.de/foren/ubb/Forum2/HTML/027999.shtml#000002 Darin sind unter anderem eine Menge Exportformate enthalten. Als Speicherpfad ist hier ein fester Pfad vorgegeben oder beim Original wählbar. In diesem Makro von mir kannst du vorher einen Speicherpfad auswählen, wenn gewünscht. http://ww3.cad.de/foren/ubb/Forum2/HTML/023775.shtml Auch hier wird der Speichername individuell eingestellt. Diese Makros sind für deinen Fall mächtig überfrachtet, bringen aber sicherlich die Routinen mit, die du benötigst. Du musst nur etwas darin rumstochern und auf deine Bedürfnisse anpassen. Deine Aufgabe wäre doch der ideale Einstieg in die Makroprogrammierung. Nur zu, ich habe auch so angefangen und mir das meiste selber mit Hilfe dieses Forums beigebracht. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
saidan Mitglied IT-Sysadmin
Beiträge: 8 Registriert: 20.03.2015
|
erstellt am: 21. Mrz. 2015 21:14 <-- editieren / zitieren --> Unities abgeben:
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 23. Mrz. 2015 07:36 <-- editieren / zitieren --> Unities abgeben: Nur für saidan
Hallo zusammen, um ein Makros beim normalen speichern auszuführen müsstest du entwerder ein Add-In Programmieren oder in VBA die Event-Notifications mit einem Klassenmodule dafür abfangen, wofür du ein Macro schreiben müsstest das mit jeder SolidWorks Sitzung zusammen gestartet wird. Wenn du in der API-Suche nach Notification suchst solltest du alle abfangbaren Events finden, für dich werden wohl DPartDocEvents_FileSaveNotifyEventHandler Delegate | DPartDocEvents_FileSaveAsNotify2EventHandler Delegate DAssemblyDocEvents_FileSaveNotifyEventHandler Delegate | DAssemblyDocEvents_FileSaveAsNotify2EventHandler Delegate DDrawingDocEvents_FileSaveNotifyEventHandler Delegate | DDrawingDocEvents_FileSaveAsNotify2EventHandler Delegate interesant sein. Code:
'### STANDARDMODULE zum starten der ÜberwachungOption Explicit Public MyClass As New Notification_Class Sub main() MyClass.MonitorSolidWorks End Sub
Code:
'###KLASSENMODULE "Notification_Class" mit den EVENTSOption Explicit Dim WithEvents swApp As SldWorks.SldWorks Dim WithEvents MyPart As SldWorks.PartDoc Dim WithEvents MyAssembly As SldWorks.AssemblyDoc Dim WithEvents MyDrawing As SldWorks.DrawingDoc Public swModel As SldWorks.ModelDoc2 Public swAssemby As SldWorks.ModelDoc2 Public swDrawing As SldWorks.ModelDoc2 Public Sub MonitorSolidWorks() Set swApp = Application.SldWorks End Sub Private Function MyPart_FileSaveAsNotify2(ByVal FileName As String) As Long Set swModel = swApp.ActiveDoc 'Hier Programmcode einbauen fürs Speichern unter bei einem Einzelteil End Function Private Function MyAssembly_FileSaveAsNotify2(ByVal FileName As String) As Long Set swAssembly = swApp.ActiveDoc 'Hier Programmcode einbauen fürs Speichern unter bei einer Baugruppe End Function Private Function MyDrawing_FileSaveAsNotify2(ByVal FileName As String) As Long Set swDrawing = swApp.ActiveDoc 'Hier Programmcode einbauen fürs Speichern unter bei einer Zeichnung End Function Private Function MyPart_FileSaveNotify(ByVal FileName As String) As Long Set swModel = swApp.ActiveDoc 'Hier Programmcode einbauen fürs Speichern bei einem Einzelteil End Function Private Function MyAssembly_FileSaveNotify(ByVal FileName As String) As Long Set swAssembly = swApp.ActiveDoc 'Hier Programmcode einbauen fürs Speichern bei einer Baugruppe End Function Private Function MyDrawing_FileSaveNotify(ByVal FileName As String) As Long Set swDrawing = swApp.ActiveDoc 'Hier Programmcode einbauen fürs Speichern bei einer Zeichnung End Function Private Function swApp_ActiveDocChangeNotify() As Long If swApp.ActiveDoc.GetType = swDocPART Then Set MyPart = Nothing Set MyPart = swApp.ActiveDoc ElseIf swApp.ActiveDoc.GetType = swDocASSEMBLY Then Set MyAssembly = Nothing Set MyAssembly = swApp.ActiveDoc ElseIf swApp.ActiveDoc.GetType = swDocDRAWING Then Set MyDrawing = Nothing Set MyDrawing = swApp.ActiveDoc Else Set MyPart = Nothing Set MyAssembly = Nothing Set MyDrawing = Nothing End If End Function
Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 23. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
saidan Mitglied IT-Sysadmin
Beiträge: 8 Registriert: 20.03.2015
|
erstellt am: 23. Mrz. 2015 09:41 <-- editieren / zitieren --> Unities abgeben:
Hi Bernd, danke für die ausführliche Unterstützung. Ich hätte nicht gedacht dass ich als Neuling hier so tolle Hilfe bekomme. Hier über das Forum habe ich ein Solidworks Addon von Schuler DA gefunden. Es heist SDA-4Free. Damit kann man automatisch ein Makro ausführen, wenn Speichern unter gewählt wird. Mein Problem ist, dass ich den Dateinamen im Speichern unter Dialog vorausfüllen will mit einer benutzerdefinierten Eigenschaft. Aktuell habe ich eine nicht ganz saubere Lösung, die ich noch ausführlich testen muss. Ich habe eines der zahlreich vorhandenen Makros umgebaut um die Datei automatisch an einem temporären Ort mit dem richtigen Namen zu speichern. Problem ist, dass hier der Dateipfad nicht manuell gewählt werden kann. Danach rufe ich aber die Speichern unter Funktion von SW auf. Dann steht logischerweise der Dateiname vom letzten Speichern drin. Dann lösche ich die temporäre Datei wieder über das Makro. Das funktioniert super, solange man ganz normal Speichern unter nutzt. Nun gibt es aber noch eine Möglichkeit die da heißt "Als Kopie speichern unter und öffnen" oder so ähnlich. Dabei erhalte ich eine Meldung, dass eine Datei mit dem selben Namen bereits geöffnet ist. Ich arbeite noch daran. Vielen Dank an Alle. Gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 23. Mrz. 2015 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für saidan
Hallo Daniel, ich weiß jetzt nicht, in welcher Sprache du programmierst, aber es gibt doch bei VBA oder den .NET-Sprachen Standardkomponenten zum Auswählen von Ordnern (FolderBrowserDialog). Wenn du dann den Pfad und den Dateinamen hast, so kannst du diese doch zu einem kompletten Dateinamen zusammensetzen und dann mit SaveAs- Methode dein Dokument speichern. Du gebrauchst dann keinen Speichern-unter-Dialog mehr. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |