| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Visiativ Blog | Tipps & Tricks rund um SOLIDWORKS und 3DEXPERIENCE. , ein Kurs
|
Autor
|
Thema: VBA MAcro - Baugruppe auf erste verfügbare Konfig umschalten (537 / mal gelesen)
|
SNOOP_69 Mitglied Konstrukteur - Innenausbau
  
 Beiträge: 567 Registriert: 25.01.2006 Hardware: - Lenovo-W540 Software: - Win10 Pro 64bit - Autocad 2023-2025 (Vollversion+LT) - GstarCAD 2024 - DraftSight 2023 - SolidWorks 2023 SP5 - SWOOD 2023 - MasterCAM 2022-2023
|
erstellt am: 15. Aug. 2024 13:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich versuche seit geraumer Zeit ein VBA Makro zu schreiben, dass in einer Baugruppe oder einem Bauteil auf die erste bzw. oberste Konfiguration umschaltet... Anbei mein Ansatz, der zwar "fehlerfrei" durchläuft aber leider die Konfiguration nicht schaltet...;-(( Kann mir jemand helfen das ganze zum laufen zu bringen? Oder hat jemand ein funktionierendes Macro, dass die Konfig umschalten kann? Ich möchte auf die erste bzw. oberste Konfig umschalten - egal wie sie heißt und egal wie viele Konfigs vorhanden sind! Vielen Dank im Voraus!! Code: Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swConfMgr As SldWorks.ConfigurationManager Dim swConf As SldWorks.Configuration Dim confNames() As String Dim firstConfName As String Dim i As IntegerSub main() ' Verbinde mit der aktuellen SolidWorks-Anwendung Set swApp = Application.SldWorks ' Hole das aktive Dokument Set swModel = swApp.ActiveDoc ' Prüfe, ob ein Dokument geöffnet ist If swModel Is Nothing Then MsgBox "Kein Dokument geöffnet" Exit Sub End If ' Hole den Konfigurations-Manager Set swConfMgr = swModel.ConfigurationManager ' Hole alle Konfigurationen im Modell On Error Resume Next ReDim confNames(0) i = 0 ' Überprüfen und Iterieren durch Konfigurationen Do Set swConf = swConfMgr.GetConfigurationByIndex(i) If Not swConf Is Nothing Then ReDim Preserve confNames(i) confNames(i) = swConf.Name i = i + 1 Else Exit Do End If Loop On Error GoTo 0 ' Prüfe, ob Konfigurationen gefunden wurden If UBound(confNames) < 0 Then MsgBox "Keine Konfigurationen im Dokument gefunden." Exit Sub End If ' Hole den Namen der ersten Konfiguration firstConfName = confNames(0) ' Schalte auf die erste Konfiguration um swModel.ShowConfiguration2 firstConfName MsgBox "Zur ersten Konfiguration gewechselt: " & firstConfName End Sub
[Diese Nachricht wurde von SNOOP_69 am 15. Aug. 2024 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: 2800 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 15. Aug. 2024 14:03 <-- editieren / zitieren --> Unities abgeben:          Nur für SNOOP_69
Hallo SNOOP, die Methode GetConfigurationByIndex gibt es bei mir in der API-Hilfe garnicht? Aber evtl. ist die Methode auch relativ neu.
Ist aber erstmal egal, weil das Macro bei mir garnicht in die Schleife hinein geht. EDIT: Sorry war mein Fehler hatte F5 statt F8 verwendet , natürlich springt das Macro in die Schleife. Welche konfiguration willst du denn genau? Die jemals als erstes erstellt wurde oder die oberste in der Liste? Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete  [Diese Nachricht wurde von bk.sc am 15. Aug. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
   
 Beiträge: 1100 Registriert: 06.05.2002 SWX Premium 2023-Sp5
|
erstellt am: 15. Aug. 2024 14:25 <-- editieren / zitieren --> Unities abgeben:          Nur für SNOOP_69
Code:
Dim vConfNames As Variant ... ... ... ' Hole alle Konfigurationen im Modell On Error Resume Next ReDim confNames(swModel.GetConfigurationCount - 1) vConfNames = swModel.GetConfigurationNames Dim vConfName As Variant i = 0 For Each vConfName In vConfNames confNames(i) = CStr(vConfName) i = i + 1 Next On Error GoTo 0 ... ... ...
So ist es etwas einfacher. Es scheint als wird der Konfigurationsbaum Alphabetisch sortiert. Bei meinem Test entspricht die Reihenfolge des Arrays, so wie in Excel eingegeben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SNOOP_69 Mitglied Konstrukteur - Innenausbau
  
 Beiträge: 567 Registriert: 25.01.2006 Hardware: - Lenovo-W540 Software: - Win10 Pro 64bit - Autocad 2023-2025 (Vollversion+LT) - GstarCAD 2024 - DraftSight 2023 - SolidWorks 2023 SP5 - SWOOD 2023 - MasterCAM 2022-2023
|
erstellt am: 15. Aug. 2024 14:29 <-- editieren / zitieren --> Unities abgeben:         
|

| |
SNOOP_69 Mitglied Konstrukteur - Innenausbau
  
 Beiträge: 567 Registriert: 25.01.2006 Hardware: - Lenovo-W540 Software: - Win10 Pro 64bit - Autocad 2023-2025 (Vollversion+LT) - GstarCAD 2024 - DraftSight 2023 - SolidWorks 2023 SP5 - SWOOD 2023 - MasterCAM 2022-2023
|
erstellt am: 15. Aug. 2024 14:35 <-- editieren / zitieren --> Unities abgeben:         
Läuft! Dankeschön!!!!!!! Code: Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swConfMgr As SldWorks.ConfigurationManager Dim swConf As SldWorks.Configuration Dim confNames() As String Dim firstConfName As String Dim i As IntegerSub main() ' Verbinde mit der aktuellen SolidWorks-Anwendung Set swApp = Application.SldWorks ' Hole das aktive Dokument Set swModel = swApp.ActiveDoc ' Prüfe, ob ein Dokument geöffnet ist If swModel Is Nothing Then MsgBox "Kein Dokument geöffnet" Exit Sub End If ' Hole den Konfigurations-Manager Set swConfMgr = swModel.ConfigurationManager ' Hole alle Konfigurationen im Modell On Error Resume Next ReDim confNames(swModel.GetConfigurationCount - 1) vConfNames = swModel.GetConfigurationNames Dim vConfName As Variant i = 0 For Each vConfName In vConfNames confNames(i) = CStr(vConfName) i = i + 1 Next On Error GoTo 0 ' Prüfe, ob Konfigurationen gefunden wurden If UBound(confNames) < 0 Then MsgBox "Keine Konfigurationen im Dokument gefunden." Exit Sub End If ' Hole den Namen der ersten Konfiguration firstConfName = confNames(0) ' Schalte auf die erste Konfiguration um swModel.ShowConfiguration2 firstConfName End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |