| | | 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: Makro mehrere Dateitypen speichern (3099 mal gelesen)
|
jkaiser Mitglied Maschinenbautechniker
Beiträge: 20 Registriert: 03.08.2016 Solidworks Premium 2018 HP Z620 Intel Xeon E5-1650 v2, 3.50GHz, 32GB Win7 Pro x64 Nvidia Quadro K4000
|
erstellt am: 19. Apr. 2017 12:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Makro-Experten, ich habe folgendes Problem: Bei uns ist intern festgelegt, dass Fertigungsunterlagen an den Fertiger in den Dateitypen PDF & DXF (für Zeichnungen) sowie STEP & IGES (für 3D-Teil) gesendet werden. Nun ist es immer ein sehr nervender und zeitraubender Prozess alle 4 Dateitypen einzeln abzuspeichern. Ich habe bereits ein Makro gefunden (ich glaube aus der MakroMania), welches mir diese Dateitypen dort ablegt, wo auch die jeweilige Solid-Datei liegt, allerdings benutzen wir zum einen die maxxDB (d.h. die Dateien werden irgendwo in den Speicherbereichen der maxxDB abgelegt) und zum anderen muss ich dieses Makro immer jeweils im Teil als auch in der Zeichnung ausführen. Ein Wunschgedanke wäre das Makro auzuführen, ich werden nach dem Speicherort gefragt und daraufhin werden mir alle 4 Dateitypen an den ausgewählten Ort abgespeichert PS: Auf IGES kann ggf. auch verzichtet werden. Gibt es dazu vllt bereits ein Makro welches ich nicht gefunden habe oder kann mir jemand auf andere Weise helfen? Vielen Dank für eure Hilfe!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aeschbi Mitglied konstrukteur
Beiträge: 211 Registriert: 26.06.2001
|
erstellt am: 19. Apr. 2017 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
hello dies ist recht einfach Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc If Part Is Nothing Then End ' Abbrechen, wenn gar kein SolidWorks-Dokument geöffnet AktuellesDokTyp = Part.GetType() DateiMitPfad = Part.GetPathName() If DateiMitPfad = "" Then MsgBox ("Datei muß zuerst gespeichert werden!") End End If saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".SAT" Part.SaveAs2 saveFileName, 0, True, False saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".igs" Part.SaveAs2 saveFileName, 0, True, False saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".step" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".easm" Part.SaveAs2 saveFileName, 0, True, False saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".x_t" Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".x_b" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".sst" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".vda" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".wrl" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".eprt" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".vda" 'Part.SaveAs2 saveFileName, 0, True, False 'saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".cgr" 'Part.SaveAs2 saveFileName, 0, True, False 'Part.SaveAs2 saveFileName, 0, True, False End Sub
die Hochkomma entfernen welches Format du haben möchtest gefunden in der Hilfeseite von Stefan ------------------ gruss aus murten thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 19. Apr. 2017 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Tja Wo ist die Möglichkeit, das Ding woandershin zu exportieren? Wo sind pdf und dxf? Wo wird die richtige Zeichnung aus dem Part oder das richtige Part aus der Zeichnung heraus aufgerufen? [Diese Nachricht wurde von Torsten Niemeier am 19. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jkaiser Mitglied Maschinenbautechniker
Beiträge: 20 Registriert: 03.08.2016 Solidworks Premium 2018 HP Z620 Intel Xeon E5-1650 v2, 3.50GHz, 32GB Win7 Pro x64 Nvidia Quadro K4000
|
erstellt am: 19. Apr. 2017 13:27 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von aeschbi: hellodies ist recht einfach ... gefunden in der Hilfeseite von Stefan
genau dieses Makro meinte ich in meinem Eröffnungspost...das hilft mir ja aufgrund oben genannter Probleme nicht (maxxDB, Trennung Teil-Zeichnung,...) @Torsten Niemeier, richtig - genau das sind die offenen Fragen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aeschbi Mitglied konstrukteur
Beiträge: 211 Registriert: 26.06.2001
|
erstellt am: 19. Apr. 2017 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
hello saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dxf" Part.SaveAs2 saveFileName, 0, True, False saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".pdf" Part.SaveAs2 saveFileName, 0, True, False hinzufügen speichert das aktive Dokument in den Order des aktiven Dokumentes wir benötigen die exportierten Dateien nur im Ordner des Dokumentes wie du dies in einen Order deiner Wahl kiegst weiss ich nicht wird dir hier sicher geholfen ------------------ gruss aus murten thomas [Diese Nachricht wurde von aeschbi am 19. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 19. Apr. 2017 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Hallo jkaiser, kann das MaxxDB nicht vielleicht sogar mit Hausmitteln, ich kenne es jetzt nur von unserem DMS das hier bei definierten Statusübergängen so genannte NDF's (Neutralle Datenformate) automatisch erzeugt werden aber ich denke MaxxDB kann sowas auch, einfach mal den Support anfunken? Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
Beiträge: 720 Registriert: 17.01.2007 SWX 2019 SP5 AutoCAD 2019 Win 10 pro 64 bit Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz 64GB RAM Nvidia Quadro M5000 SWx EPDM
|
erstellt am: 19. Apr. 2017 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Zitat: Original erstellt von Torsten Niemeier: Wo ist die Möglichkeit, das Ding woandershin zu exportieren?
Ordneraufrufbeispiel: Code:
Sub FolderSelection() Dim MyPath As String MyPath = SelectFolder("Select Folder", "") If Len(MyPath) Then MsgBox MyPath Else MsgBox "Cancel was pressed" End If End Sub'Both arguements are optional. The first is the dialog caption and 'the second is is to specify the top-most visible folder in the 'hierarchy. The default is "My Computer." Function SelectFolder(Optional Title As String, Optional TopFolder _ As String) As String Dim objShell As New Shell32.Shell Dim objFolder As Shell32.Folder 'If you use 16384 instead of 1 on the next line, 'files are also displayed Set objFolder = objShell.BrowseForFolder _ (0, Title, 1, TopFolder) If Not objFolder Is Nothing Then SelectFolder = objFolder.Items.Item.Path End If End Function
Gefunden in den SolidWorks-Foren. (Nach extrem kurzer Suche auf Google. Ist das echt so schwer? ) Gruß, Jens ------------------ CSWA, CSWP, CSWPA-SM =) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
Beiträge: 720 Registriert: 17.01.2007 SWX 2019 SP5 AutoCAD 2019 Win 10 pro 64 bit Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz 64GB RAM Nvidia Quadro M5000 SWx EPDM
|
erstellt am: 19. Apr. 2017 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Zitat: Original erstellt von Torsten Niemeier: Wo wird die richtige Zeichnung aus dem Part [...] heraus aufgerufen?
Da das Teil keine Information zum Verwendungsort enthält, bleiben nur 2 Möglichkeiten: Entweder haben Teil und Zeichnung identische Namen und liegen im selbem Verzeichnis (-> Speichername aus Dateiname basteln) oder über die MaxxDB (kenn ich nicht. K.A., wie man da rankommt). Alternativ könnte man vorher alle zu bearbeitenden Dokumente (Zeichnungen und Teile) öffnen und mit Code:
Set swApp = Application.SldWorksmyParts = swApp.GetDocuments Set Part = swApp.ActiveDoc For Each Part In myParts If Part.Visible = True Then '### Here happens the magic ### End if Next
durch alle geöffneten Dokumente rödeln. Zitat: Wo wird [...] das richtige Part aus der Zeichnung heraus aufgerufen?
Code: Set swView = swDrawing.GetFirstView Set swView = swView.GetNextView swModelName = swView.GetReferencedModelName ConfigName = swView.ReferencedConfiguration swEndung = Right$(swModelName, 3) If UCase(swEndung) = "ASM" Then swDateiTyp = swDocASSEMBLY Else: swDateiTyp = swDocPART End If Set swModelDoc = swApp.OpenDoc6(swModelName, swDateiTyp, 0, ConfigName, vErrors, vWarnings) 'referenziertes Modell öffnen swApp.ActivateDoc2 swModelName, False, longstatus 'referenziertes Modell aktivieren
Gruß, Jens ------------------ CSWA, CSWP, CSWPA-SM =) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 19. Apr. 2017 15:23 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
|
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
Beiträge: 720 Registriert: 17.01.2007 SWX 2019 SP5 AutoCAD 2019 Win 10 pro 64 bit Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz 64GB RAM Nvidia Quadro M5000 SWx EPDM
|
erstellt am: 19. Apr. 2017 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Zitat: Original erstellt von Torsten Niemeier:
Hi Jens. Meinst Du mich jetzt damit?
[IRONIE] Klar doch. Hab doch extra oben hinter "Original erstellt von" deinen Namen hingeschrieben. Du als Ehrenmitglied V.I.P. h.c. müsstest doch wissen, dass man erst sucht und dann fragt. Nur deswegen. [/IRONIE] Gruß, Jens Edit: Extra für Torsten... ------------------ CSWA, CSWP, CSWPA-SM =) [Diese Nachricht wurde von CAD-Maler am 19. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 19. Apr. 2017 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Du hast mich da falsch verstanden. Ich wollte eigentlich nur aufzeigen, dass in der 'einfachen' Lösung von Thomas die wichtigsten Dinge fehlen, die jkaiser eigentlich haben wollte. Aber ok, nächstes Mal suche ich vorher BTW: Ich bin da eigentlich eher bei Bernd. Wenn das sowieso immer gemacht werden muss, dann sollte das auch eben automatisiert ablaufen. Ich kenne maxxDB nicht, aber eigentlich sollte eine Datenbanklösung zum Zeitpunkt der Freigabe zu so etwas in der Lage sein. BTW2: Man könnte zumindest mal sehen, ob sich eines von Andis Makros für diesen Fall nicht verwenden lässt. Eventuell auch in abgespeckter Form, so dass man nichts oder fast nichts voreinstellen muss. [Diese Nachricht wurde von Torsten Niemeier am 19. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 19. Apr. 2017 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
|
jkaiser Mitglied Maschinenbautechniker
Beiträge: 20 Registriert: 03.08.2016 Solidworks Premium 2018 HP Z620 Intel Xeon E5-1650 v2, 3.50GHz, 32GB Win7 Pro x64 Nvidia Quadro K4000
|
erstellt am: 20. Apr. 2017 08:59 <-- editieren / zitieren --> Unities abgeben:
Danke für eure Vorschläge! Hätte ich auch selbst drauf kommen können, dass man das direkt über die Datenbank lösen könnte. Die maxxDB ist bei sowas idR eigentlich sehr flexibel, ich werde mal beim Support anfragen... manchmal denkt man einfach zu kompliziert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 20. Apr. 2017 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für jkaiser
Hallo jkaiser, hab mal bisschen nachgelesen und mit MaxxDB sollte das machbar sein mit den Optionen GENERAT_* (Format), GENERATE_ON_DEMAND (Per Knopfdruck Fremdformate erzeugen antriggern), GENERATE_EXECUTE (Postprozess nach dem generieren, z.B. verschieben in bestimmten Pfad) usw. sollte deine Aufgabenstellung machbar sein. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|