Einfügen von Kräften auf die Oberfläche eines Teils in einer Baugruppe

Ich habe ein Makro erstellt, um automatisch Kräfte aus einem Flächenauswahlsatz in ein Bauteil einzufügen.
In einigen Fällen muss ich das Gleiche tun, aber im Kontext einer Assembly. Die Auswahlsätze befinden sich immer in einem der Teile der Baugruppe. Der Befehl funktioniert, aber es ist keine Oberfläche ausgewählt...

Ich füge den Code ein, der zur Info verwendet wird:

Public Sub CreateForce200(swSelSet As SldWorks.SelectionSet)
    Dim swApp As Object
    Set swApp = Application.SldWorks
    
    Dim COSMOSWORKSObj As Object
    Dim CWAddinCallBackObj As Object
    
    Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
    Set COSMOSWORKSObj = CWAddinCallBackObj.CosmosWorks

    Dim ActiveDocObj As Object
    Dim StudyManagerObj As Object
    Dim LoadsAndRestraintsManagerObj As Object
    Dim ErrorCodeObj As Long
    Dim ContactManagerObj As Object
    Set ActiveDocObj = COSMOSWORKSObj.ActiveDoc()
    Set StudyManagerObj = ActiveDocObj.StudyManager()
    Dim StudyObj As Object
    Set StudyObj = StudyManagerObj.GetStudy(0)
    Set LoadsAndRestraintsManagerObj = StudyObj.LoadsAndRestraintsManager()

    Dim vSelItems As Variant
    Dim vSelItemTypes As Variant
    Dim swSelItem As SldWorks.SelectionSetItem
    Dim swFace As SldWorks.Face2
    Dim j As Integer
    Dim errors As Long
    

    vSelItems = swSelSet.GetSelectionSetItems
    vSelItemTypes = swSelSet.GetSelectionSetItemTypes

    Debug.Print "Nom du jeu de Selection: " & swSelSet.GetName
    
    'Contrôle pièce activée
    'Dim swPart As SldWorks.PartDoc
    'Set swPart = swApp.ActivateDoc3(nameCarte2, True, swRebuildOnActivation_e.swUserDecision, errors)
    

    Dim DispArray As Variant
    Dim cnt As Long
    cnt = UBound(vSelItems)
    Dim myArray()
    ReDim Preserve myArray(cnt)

    For j = 0 To cnt
        Set swSelItem = vSelItems(j)
        If vSelItemTypes(j) = swSelectType_e.swSelFACES Then
            Set myArray(j) = swSelItem.GetCorrespondingItem
        End If
    Next
    DispArray = myArray

    Dim CWForceObj As Object
    Dim DistanceValues As Variant
    Dim ForceValues As Variant
    Dim ComponentValues As Variant
    Dim data(6) As Double
    data(0) = 1: data(1) = 1: data(2) = 1: data(3) = 1: data(4) = 1: data(5) = 1
    ComponentValues = data

    Set CWForceObj = LoadsAndRestraintsManagerObj.AddForce3(1, 0, -1, 0, 0, 0, (DistanceValues), (ForceValues), 0, False, 0, 0, 0, 1, (ComponentValues), False, False, (DispArray), Nothing, False, ErrorCodeObj)

    StudyObj.ShowOrHideForce = False

    Set StudyManagerObj = Nothing
    Set ActiveDocObj = Nothing
    Set CWAddinCallBackObj = Nothing
    Set COSMOSWORKSObj = Nothing
End Sub

Hallo @fgauvreau ,

Meine Schlussfolgerung zum Ursprung dieser Verweigerung, eine Anstrengung zu erzeugen: Die Adressen der Objekte, die von den " Items " der Auswahlmenge zurückgegeben werden, zeigen nicht auf die Flächen der Auswahl. Es scheint notwendig, die Methode " GetCorrespondingItem " des Elements zu verwenden, um die richtige Adresse zu erhalten.

Ich möchte hinzufügen, dass die Anzahl und Vielfalt der Parameter der Funktion " AddEffort3 " bei der Erkundung nicht hilfreich ist...

Ich schlage eine funktionierende Lösung im angehängten Makro vor, in dem ich versucht habe, CW-typisierte Variablen anstelle von "Objekt  "-Typen zu verwenden, indem ich die " Solidworks Simulation 20XX -Typbibliothek " zur Liste der Referenzen hinzugefügt habe.
Die Parameter des Aufwands unterscheiden sich ein wenig von denen Ihres ursprünglichen Vorschlags (Aufwand mit Richtungsbezug), aber das Makro funktioniert und kann als Vergleichsgrundlage verwendet werden, um zu versuchen, Fehlfunktionen zu identifizieren.

Das Makro verwendet zwei Ansätze zur Selektion von Objekten, entweder mit den klassischen Funktionen des SelectionManagers des Modells oder mit den " Items " des Auswahlsatzes.

Leider funktioniert keines davon, wenn das Auswahlset zu einem Raum gehört. Die Auswahl führt nicht zu dem gleichen Verhalten wie bei der Zugehörigkeit zur Baugruppe. Obwohl die Entitäten identifiziert wurden, sind sie nicht konform (?), und die Funktion " AddEffort3 " gibt einen Fehlercode zurück.

Makroanhang, sowie das Montagedokument, das für meine Tests verwendet wurde (SW2022). Das Auswahlset verfügt über 3 flache Flächen.

Chute.zip (537.0 KB)
CWCreationEffort.swp (71.5 KB)

2 „Gefällt mir“