Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VBA MAcro - Baugruppe auf erste verfügbare Konfig umschalten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Der größte Rechenreiniger der Welt bei MUHR , ein Anwenderbericht
Autor Thema:  VBA MAcro - Baugruppe auf erste verfügbare Konfig umschalten (300 / mal gelesen)
SNOOP_69
Mitglied
Konstrukteur - Innenausbau


Sehen Sie sich das Profil von SNOOP_69 an!   Senden Sie eine Private Message an SNOOP_69  Schreiben Sie einen Gästebucheintrag für SNOOP_69

Beiträge: 554
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 Integer

Sub 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



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2798
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 15. Aug. 2024 14:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SNOOP_69 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1094
Registriert: 06.05.2002

SWX Premium 2023-Sp5

erstellt am: 15. Aug. 2024 14:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für SNOOP_69 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von SNOOP_69 an!   Senden Sie eine Private Message an SNOOP_69  Schreiben Sie einen Gästebucheintrag für SNOOP_69

Beiträge: 554
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
wenn möglich, die oberste in der Liste!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

SNOOP_69
Mitglied
Konstrukteur - Innenausbau


Sehen Sie sich das Profil von SNOOP_69 an!   Senden Sie eine Private Message an SNOOP_69  Schreiben Sie einen Gästebucheintrag für SNOOP_69

Beiträge: 554
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 Integer

Sub 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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz