| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB 2024 |
Autor
|
Thema: Makro (1691 mal gelesen)
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 06. Jul. 2010 14:45 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle, ich bin auf der Such nach einem Makro, welches alle Teile einer Baugruppe öffnet und danach die Konfigurationstabelle öffnet, damit diese aktualisiert wird. Das Problem ist daraus entstanden, dass ich eine Berechnung mittels Excel in jedem Einzelteil habe und ich mittels übernommenen Linien aus der Baugruppe mir die Maße von 2 Variablen holen. Doch berechnet er die berechneten Maße nicht neu ohne die Tabelle zu öfnnen. Vielen Dank im voraus 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: 07. Jul. 2010 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
Hi, das wirst Du so nicht einfach bekommen. Wir haben so ein Makro, jedoch kann ich Dir unser KnowHow nicht weitergeben. Da wird Dir nichts anderes übrig bleiben, als es selbst zu erstellen oder es erstellen zu lassen. ------------------ Gruß Pille 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: 07. Jul. 2010 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 07. Jul. 2010 16:11 <-- editieren / zitieren --> Unities abgeben:
Leider funktioniert das Makro Nr. 39 nicht. Es aktualisiert nur im Teil die Konfiguration aber leider nicht die Konfigurationstabelle Trotzdem Danke für die Beiträge und vielleicht hat ein anderer noch eine Idee Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 07. Jul. 2010 18:14 <-- editieren / zitieren --> Unities abgeben:
Ich habe mittels der Aufnahme Funktion bereits es hinbekommen, dass die Konfigurationstabelle geöffnet wird und wieder geschlossen wird. Allerdings bräuchte ich noch einen Code, der als Schleife alle Komponenten der Baugruppe öffnet und den vorhandenen Code ausführt. Hat einer vll. einen solchen Code?? Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 07. Jul. 2010 23:32 <-- editieren / zitieren --> Unities abgeben:
Ich habe einen Code erstellt, der das erste Teil öffnet und auch die Tabelle, aber leider danach Solidworks abstürzen lässt. Vll. findet einer den Fehler. Was kann ich anstatt "Tabelle" schreiben, was den Namen der Konfigurationstabelle findet? Code:
Dim swApp As ObjectDim 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 boolstatus = Part.Extension.SelectByID2("Tabelle", "DESIGNTABLE", 0, 0, 0, False, 0, Nothing, 0) Part.InsertFamilyTableEdit Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Part.ClearSelection2 True Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Part.CloseFamilyTable End Sub
Code öffne Tabelle
Code:
Sub ShowAllOpenFiles() Dim swDoc As SldWorks.ModelDoc2 Dim swAllDocs As EnumDocuments2 Dim FirstDoc As SldWorks.ModelDoc2 Dim dummy As Boolean Dim NumDocsReturned As Long Dim DocCount As Long Dim i As Long Dim sMsg As String Dim swApp As SldWorks.SldWorks Dim bDocWasVisible As Boolean Dim OpenWarnings As Long Dim OpenErrors As Long Dim DwgPath As String Dim myDwgDoc As SldWorks.ModelDoc2Set swApp = Application.SldWorks Set swAllDocs = swApp.EnumDocuments2 Set FirstDoc = swApp.ActiveDoc DocCount = 0 swAllDocs.Reset swAllDocs.Next 1, swDoc, NumDocsReturned While NumDocsReturned <> 0 bDocWasVisible = swDoc.Visible swApp.ActivateDoc swDoc.GetPathName DwgPath = swDoc.GetPathName If (LCase(Right(DwgPath, 3)) <> "drw") And (DwgPath <> "") Then DwgPath = Left(DwgPath, Len(DwgPath) - 3) & "drw" Set myDwgDoc = swApp.OpenDoc6(DwgPath, swDocDRAWING, swOpenDocOptions_Silent, "", OpenErrors, OpenWarnings) If Not myDwgDoc Is Nothing Then swApp.ActivateDoc myDwgDoc.GetPathName Set myDwgDoc = Nothing End If End If swAllDocs.Next 1, swDoc, NumDocsReturned DocCount = DocCount + 1 Wend swApp.ActivateDoc FirstDoc.GetPathName End Sub
Code öffne alle Teile einer Baugruppe
Code: Sub ShowAllOpenFiles()Dim swApp1 As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim swDoc As SldWorks.ModelDoc2 Dim swAllDocs As EnumDocuments2 Dim FirstDoc As SldWorks.ModelDoc2 Dim dummy As Boolean Dim NumDocsReturned As Long Dim DocCount As Long Dim i As Long Dim sMsg As String Dim swApp As SldWorks.SldWorks Dim bDocWasVisible As Boolean Dim OpenWarnings As Long Dim OpenErrors As Long Dim DwgPath As String Dim myDwgDoc As SldWorks.ModelDoc2
Set swApp = Application.SldWorks Set swAllDocs = swApp.EnumDocuments2 Set FirstDoc = swApp.ActiveDoc DocCount = 0 swAllDocs.Reset swAllDocs.Next 1, swDoc, NumDocsReturned While NumDocsReturned <> 0 bDocWasVisible = swDoc.Visible swApp.ActivateDoc swDoc.GetPathName DwgPath = swDoc.GetPathName Set swApp1 = _ Application.SldWorks Set Part = swApp1.ActiveDoc Dim myModelView As Object Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized boolstatus = Part.Extension.SelectByID2("Tabelle", "DESIGNTABLE", 0, 0, 0, False, 0, Nothing, 0) Part.InsertFamilyTableEdit Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Part.ClearSelection2 True Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Set myModelView = Part.ActiveView myModelView.FrameState = swWindowState_e.swWindowMaximized Part.CloseFamilyTable If (LCase(Right(DwgPath, 3)) <> "drw") And (DwgPath <> "") Then DwgPath = Left(DwgPath, Len(DwgPath) - 3) & "drw" Set myDwgDoc = swApp.OpenDoc6(DwgPath, swDocDRAWING, swOpenDocOptions_Silent, "", OpenErrors, OpenWarnings) If Not myDwgDoc Is Nothing Then swApp.ActivateDoc myDwgDoc.GetPathName Set myDwgDoc = Nothing End If End If swAllDocs.Next 1, swDoc, NumDocsReturned DocCount = DocCount + 1 Wend swApp.ActivateDoc FirstDoc.GetPathName End Sub
Versuch einer Kombination beider Vielen Dank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 08. Jul. 2010 06:35 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 08. Jul. 2010 06:42 <-- editieren / zitieren --> Unities abgeben:
|
metz Mitglied Techniker Maschinenbau
Beiträge: 326 Registriert: 16.02.2009
|
erstellt am: 08. Jul. 2010 06:57 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 08. Jul. 2010 16:49 <-- editieren / zitieren --> Unities abgeben:
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 10. Jul. 2010 14:01 <-- editieren / zitieren --> Unities abgeben:
Leider bin ich noch am suchen, wie ich den ersten Teil, welche alle Teile öffnet ändern kann, sodass er nur die Teile der Baugruppe öffnet, die geöffnet ist, wenn man das Makro startet. Vielleicht hat einer eine Idee. Vielen Dank im voraus Kons92 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |