Czy można aktywować konfigurację podlegającą wartości?

Cze wszystkim

Jestem nowy na forum i mam nadzieję, że jestem we właściwym miejscu, aby zadać pytanie. Pracuję w Solidworks 2018 i chciałbym sterować konfiguracjami według zmiennej.

Mam zespół główny, w którym nie chcę mieć więcej niż jedną konfigurację. Ten zespół główny zawiera podzespoły i części, które mają wiele konfiguracji.

Utworzyłem równania w moim zespole głównym, które pozwalają mi sterować wymiarami szkicu należącymi do podzespołów i części zawartych w zespole głównym. Wszystkie równania są napędzane przez 2 właściwości (wysokość i długość), które modyfikuję ręcznie zgodnie z moimi potrzebami.

Oprócz wymiarów szkicu muszę kontrolować konfiguracje zawarte w podzespołach i częściach. Chciałbym to zrobić za pomocą równań, ponieważ nie jestem dobry w makro. Jednak nie znalazłem tego i nie wiem, czy to możliwe.

Przykład: Jeśli wprowadzę wartość mniejszą lub równą 10 dla długości i wartość mniejszą lub równą 2 dla wysokości, chciałbym wyświetlić konfigurację A podzespołu 1 i konfigurację D części 3 w zespole głównym, lub jeśli wprowadzę wartość większą niż 10 dla długości i wartość większą niż 2 dla wysokości,  Chcę wyświetlić konfigurację B podzespołu 1 i konfigurację A części 3 w zespole głównym.

Czy ktoś może mi powiedzieć, czy jest to możliwe, a jeśli tak, to w jaki sposób?

Z góry dziękuję

Pozdrowienia

Witam, Możesz użyć tego makra, które poprosi Cię o podanie długości i wysokości, a następnie zmianę wartości i zmianę konfiguracji złożenia1 i części3

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 polubienie

Nie mogę edytować mojej odpowiedzi, ale wiersz: SetEquationValue "Szerokość", mojaWysokość
powinno mieć postać: SetEquationValue "Wysokość", mojaWysokość
Oczywiście i tak będziesz musiał zastąpić tę nazwę nazwą swojej zmiennej wysokości (to samo dotyczy długości)

Oprócz użycia makra, inną możliwością jest użycie rodziny części i zintegrowanie logiki z plikiem Excel. Przykład

Witaj JeromeP,

Dziękuję za odpowiedź. Zamierzam przetestować twoje rozwiązanie.

To będzie dla mnie nowość, używałem już małych makr w Excelu, ale po raz pierwszy w Solidworks.

Pozdrowienia