Ist es möglich, eine Konfiguration zu aktivieren, die an einen Wert gebunden ist?

Hallo ihr alle

Ich bin neu im Forum und hoffe, dass ich am richtigen Ort bin, um meine Frage zu stellen. Ich arbeite unter Solidworks 2018 und möchte Konfigurationen nach einer Variablen steuern.

Ich habe eine Hauptassembly, in der ich nicht mehr als eine Konfiguration haben möchte. Diese Hauptbaugruppe enthält Unterbaugruppen und Teile, die über mehrere Konfigurationen verfügen.

Ich habe Gleichungen in meiner Hauptbaugruppe erstellt, mit denen ich Skizzenbemaßungen steuern kann, die zu den Unterbaugruppen und Teilen gehören, die in der Hauptbaugruppe enthalten sind. Alle Gleichungen werden von 2 Eigenschaften (Höhe und Länge) gesteuert, die ich manuell nach meinen Bedürfnissen ändere.

Zusätzlich zu den Skizzenbemaßungen muss ich die Konfigurationen steuern , die in den Unterbaugruppen und Teilen enthalten sind. Ich würde dies gerne mit Gleichungen tun, weil ich nicht gut in Makros bin. Allerdings habe ich es nicht gefunden und weiß nicht, ob es möglich ist.

Beispiel: Wenn ich für die Länge einen Wert kleiner oder gleich 10 und für die Höhe einen Wert kleiner oder gleich 2 eingebe, möchte ich die Konfiguration A der Unterbaugruppe 1 und die Konfiguration D von Teil 3 in der Hauptbaugruppe anzeigen, oder wenn ich einen Wert größer als 10 für die Länge und einen Wert größer als 2 für die Höhe eingebe,  Ich möchte Konfiguration B der Unterbaugruppe 1 und Konfiguration A von Teil 3 in der Hauptbaugruppe anzeigen.

Kann mir jemand sagen, ob das möglich ist und wenn ja, wie?

Vielen Dank im Voraus

Herzliche Grüße

Hallo, Sie können dieses Makro verwenden, das Sie auffordert, die Länge und Höhe einzugeben, dann die Werte zu ändern und die Konfigurationen von Assembly1 und Teil3 zu ändern

Option Explicit
Dim swModel As SldWorks.ModelDoc2
Sub main()
   Dim swApp As SldWorks.SldWorks
   Dim maLongueur As Double
   Dim maHauteur As Double

   Set swApp = Application.SldWorks
   Set swModel = swApp.ActiveDoc

   maLongueur = InputBox("Entrer la longueur")
   maHauteur = InputBox("Entrer la hauteur")

   ' change les variables de longueur et largeur
   SetEquationValue "Longueur", maLongueur
   SetEquationValue "Largeur", maHauteur

   If maLongueur <= 10 And maHauteur <= 2 Then
       ' change la configuration de l'assemblage Assemblage1 à ConfigA
       ChangeConfig "Assemblage1", "ConfigA"
       ' change la configuration de la pièce piece3 à ConfigD
       ChangeConfig "piece3", "ConfigD"
   Else
       ' change la configuration de l'assemblage Assemblage1 à ConfigB
       ChangeConfig "Assemblage1", "ConfigB"
       ' change la configuration de la pièce piece3 à ConfigA
       ChangeConfig "piece3", "ConfigA"
   End If

   swModel.ForceRebuild3 True
End Sub


Sub SetEquationValue(eqName As String, eqValue As Double)
    Dim swEqMgr As SldWorks.EquationMgr
    Set swEqMgr = swModel.GetEquationMgr
    Dim i As Integer
    For i = 0 To swEqMgr.GetCount - 1
        Debug.Print swEqMgr.Equation(i)
        Dim Name As String
        Name = Split(swEqMgr.Equation(i), """")(1)
        Debug.Print Name
        If UCase(eqName) = UCase(Name) Then
            swEqMgr.Equation(i) = """" & eqName & """=" & eqValue
            Exit Sub
        End If
    Next
End Sub

Sub ChangeConfig(CompName As String, ConfigName As String)
   Dim swConf As SldWorks.Configuration
   Set swConf = swModel.GetActiveConfiguration
   TraverseComponent swConf.GetRootComponent3(True), CompName, ConfigName
End Sub

Sub TraverseComponent(swParentComp As SldWorks.Component2, CompName As String, ConfigName As String)
    Dim vChildComp As Variant
    Dim swChildComp As SldWorks.Component2
    Dim i As Long
    vChildComp = swParentComp.GetChildren
    For i = 0 To UBound(vChildComp)
        Set swChildComp = vChildComp(i)
        If InStr(swChildComp.Name2, CompName) > 0 Then
            'Debug.Print swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">"
            swChildComp.ReferencedConfiguration = ConfigName
            Exit Sub
        End If
        TraverseComponent swChildComp, CompName, ConfigName
    Next
End Sub

 

1 „Gefällt mir“

Ich kann meine Antwort nicht bearbeiten, aber die Zeile: SetEquationValue "Width", myHeight
sollte sein: SetEquationValue "Höhe", myHeight
Natürlich müssen Sie diesen Namen sowieso durch den Namen Ihrer Höhenvariablen ersetzen (dasselbe gilt für die Länge)

Neben der Verwendung eines Makros besteht die andere Möglichkeit darin, eine Teilefamilie zu verwenden und die Logik in die Excel-Datei zu integrieren. Beispiel

Hallo JeromeP,

Vielen Dank für Ihre Antwort. Ich werde Ihre Lösung testen.

Es wird neu für mich, ich habe bereits kleine Makros in Excel verwendet, aber eine Premiere in Solidworks.

Herzliche Grüße