| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Essen |
Autor
|
Thema: Kann jemand mein Makro kurz anpassen? (2217 mal gelesen)
|
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 08. Nov. 2019 14:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein einfaches Makro aufgezeichnet. Leider Speichert mir mein Makro aller erstellte DXF als Zeichnung2.dxf ab. Ich möchte aber, dass die gespeicherte Datei den gleichen Namen (bis auf Endung ".DXF")beibehält. ____________________________________________________________________________________________ Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized ' Save As longstatus = Part.SaveAs3("C:\Users\Test\Desktop\Zeichnung2.DXF", 0, 0) End Sub _____________________________________________________________________________ Kann mir das jemand bitte umschreiben? Meine Makro Kenntnisse leider = 0
Vielen Dank [Diese Nachricht wurde von D.S.K. am 11. Nov. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
thw Mitglied System Manager CAD
Beiträge: 13 Registriert: 21.11.2002 SW2018
|
erstellt am: 08. Nov. 2019 19:24 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 10. Nov. 2019 20:28 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat:
... Kann mir das jemand bitte umschreiben? Meine Makro Kenntnisse leider = 0 ...
Hallo, du hast bewiesen, dass deine Kenntnisse > 0 sind. - Makro aufzeichnen und wieder starten - erkennen, dass es nicht tut, was es soll - Code rauskopieren, für mich definitiv schon mal eine Basis bzgl. DXF ist ja ggf. noch zu berücksichtigen, was mit mehrblättrigen Zeichnungen passiert. Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 07:43 <-- editieren / zitieren --> Unities abgeben:
Hallo thw, ähnliches Makro habe ich schon. Was ich zusätzlich noch haben möchte, dass eine DXF-Kopie (zwecks Zugriffsrechten) zusätzlich in einem anderen Ordner (z.B. Fertigung XY) abgelegt wird. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 07:49 <-- 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: 11. Nov. 2019 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo, du gibst ja hier den Speicherort und Name mit "C:\Users\Test\Desktop\Zeichnung2.DXF" an, denn musst du dir halt vorher Richtig zusammenbauen. Mit GetPathName Method (IModelDoc2) bekommst du z.B. den Pfad zu deinem Dokument mit GetTitle Method (IModelDoc2) bekommst du den Dokument-Titel und aus diesen informationen solltest du eigentlich den neuen Pfad / Namen zusammenbastelln können. Beispiele hierzu solltest du im Forum oder in der SWX-API-Hilfe eigentlich finden. 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 |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 09:30 <-- editieren / zitieren --> Unities abgeben:
Hallo bk.sc, ja ich möchte ein bestimmten Speicherort vorgeben, gleichzeitig möchte ich Dateinamen+".DXF" beibehalten und nicht Zeichnung2.DXF. Meine Kenntnisse reichen mir nicht aus um da was zusammen zu basteln und die Zeit für die Recherche habe ich leider auch nicht. Deswegen suche ich einen freiwilligen der mir das Makro kurzer Hand umschreibt. Ich habe den Eindruck, alle wissen wie es geht aber keiner rückt raus Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 11. Nov. 2019 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: … und die Zeit für die Recherche habe ich leider auch nicht.Deswegen suche ich einen freiwilligen der mir das Makro kurzer Hand umschreibt. …
Wir sind alle ohne die Kenntnisse zur Welt gekommen und mussten Zeit dafür investieren. Aber vielleicht findest du ja jemanden, der jetzt Zeit und Lust übrig hat … viel Glück Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klopfer195 Mitglied Konstrukteur
Beiträge: 27 Registriert: 05.02.2019 SolidWorks 2019 SP5
|
erstellt am: 11. Nov. 2019 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Moin hatte folgendes Makro hier im Forum irgendwann mal gefunden. 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 End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Klopfer195, dieses Makro verwende ich schon um DXF, PDF, STEP..... in den selben Ordner wo die SWX Daten liegen abzuspeichern. Jetzt sollte zusätzlich DXF in ein zusätzlichen Ordner (z.B. Fertigung) abgelegt werden. So wie ich diesen Satz (unten) verstehe, Speichert das Makro ein DXF in das selbe Ordner ab. Kann man da ein Pfad hinterlegen? wenn ja wie? ____________________________________________________________________________________________________________________________ saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + ".dxf" ' Speichern als DXF-Datei Part.SaveAs2 saveFileName, 0, True, False
____________________________________________________________________________________________________________________________ Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 11. Nov. 2019 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: Original erstellt von D.S.K.: ...bestimmten Speicherort vorgeben
Welchen denn? Bernd hat Dir doch die allgemeine Methode schon aufgezeigt. Damit müsstest Du doch weiter kommen... Zitat: Original erstellt von D.S.K.: Ich habe den Eindruck, alle wissen wie es geht aber keiner rückt raus
Was für eine böse Unterstellung Zitat: Original erstellt von D.S.K.: ...und die Zeit für die Recherche habe ich leider auch nicht...
Scheinbar auch nicht das Geld. Volkswirtschaftlich ist das Geld jetzt schon mehrfach ausgegeben. Der Beitrag wurde schon mehr als 250 mal gelesen. Es gibt schon mehr als 5 Antworten und das obwohl Deine erste Anfrage sehr unspezifisch war (welcher Speicherort, wie willst Du den Speicherort angeben, willst Du jedesmal beim starten des Makros nach dem Speicherort gefragt werden... ? und: was passiert mit Deinem Makro, wenn die Datei vorher noch nicht gespeichert war, wenn beim Start eine Baugruppe geöffnet ist, wenn es ein Einzelteil aber kein Blechteil ist...und und und) Schon komisch, dass nicht jeder für Dich den Dateipfad zusammenbaut. Aber vielleicht spendierst Du uns eine neue Glaskugel. Die hilft ja auch in anderen Lebenslagen Vielleicht findet sich ein Freiwilliger. Es sind ja hier nur Freiwillige unterwegs. Die Chance ist also recht hoch Viel Glück. Auch wenn ich nicht zur Lösung des Beitrags direkt etwas hinzufügen kann, hoffe ich geholfen zu haben Ralf ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klopfer195 Mitglied Konstrukteur
Beiträge: 27 Registriert: 05.02.2019 SolidWorks 2019 SP5
|
erstellt am: 11. Nov. 2019 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
So 2ter versuch Dim swApp As SldWorks.SldWorks Dim swModel As ModelDoc2 Public modelName As String Dim longstatus As Long Dim longwarings As Long Dim boolstatus As Boolean Sub main()
Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc modelName = swModel.GetTitle longstatus = swModel.SaveAs3("C:\Users\Test\Desktop\" + modelName + ".dxf", 0, 0)
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 11. Nov. 2019 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Zitat: … dieses Makro verwende ich schon um DXF, PDF, STEP..... in den selben Ordner wo die SWX Daten liegen abzuspeichern. Jetzt sollte zusätzlich DXF in ein zusätzlichen Ordner (z.B. Fertigung) abgelegt werden.
wenn die Datei schon einmal konvertiert wurde (als dxf gespeichert), könnte man auf die Idee kommen, sie einfach zu kopieren. (mal als alternatives Stichwort für die Lösungssuche) Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 12:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Klopfer195, genau das wollte ich haben Vielen vielen Dank. Noch eine Kleinigkeit: die Datei heißt jetzt z.B. "152-DA-120-Blatt1.dxf" Kann man es so konfigurieren, dass "Blatt1" nicht geschrieben wird? Denn bei manuellem "Speichern unter" wird kein Blatt1 geschrieben . _______________________________________________ modelName = swModel.GetTitle _______________________________________________ Ich bedanke mich sehr für deine Hilfe Klopfer195 An alle anderen ebenfalls vielen Dank. Ich gebe zu, dass meine erste Anfrage etwas schlecht formuliert war . Es kann nur besser werden Grüße D.S.K. 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: 11. Nov. 2019 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo, swModel.GetTitle gibt dir den Titel des SolidWorks Fensters daher musst du hier aufpassen, da dieser Befehl je nach Windows Explorer Einstellungen die Endung mit ausgibt oder eben nicht. Daher würde ich hier auf die allgemeinere dafür sicherere Methode über das zerlegen des gesamten Pfades gehen. Code: Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2Dim sPath As String Dim sModelName As String Dim longstatis As Long Const ExportPath = "C:\Users\Desktop\" Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc sPath = swModel.GetPathName sModelName = Mid(sPath, InStrRev(sPath, "\") + 1) sModelName = Replace(sModelName, ".SLDDRW", ".DXF") longstatus = swModel.SaveAs3(ExportPath + sModelName, 0, 0) End Sub
------------------ --- 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 |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 15:02 <-- editieren / zitieren --> Unities abgeben:
|
mikla83 Mitglied
Beiträge: 73 Registriert: 15.11.2012
|
erstellt am: 11. Nov. 2019 20:13 <-- editieren / zitieren --> Unities abgeben: Nur für D.S.K.
Hallo zusammen, Warum steht bei mir beim starten von Solidworks 2014 mein Ursprung auf Option "Vorderseite" (s. Bild) und nicht auf Isometrische Ansicht? Gibt es da eine Option wo ich das einstellen kann? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
D.S.K. Mitglied
Beiträge: 32 Registriert: 20.11.2018 SolidWorks 2017 SP5,0 (Win10 und Win7)
|
erstellt am: 11. Nov. 2019 20:39 <-- editieren / zitieren --> Unities abgeben:
Hallo mikla83, ich vermute, dass Teilvorlage "Teil.prtdot" in dieser Position gespeichert wurde. Bin mir aber gerade nicht sicher. Werde morgen testen und kann Bescheid geben. Gruß D.S.K. [Diese Nachricht wurde von D.S.K. am 12. Nov. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |