Selecteer een subassemblage in een Solidworks-assemblage in VBA

Hallo

Ik ben op zoek naar een eenvoudig VBA-commando om een subassemblage te selecteren in een assembly waarvan ik de naam ken, en deze vervolgens te repareren.

Ik ben al een tijdje op zoek en het verbaast me dat ik niets vind.

Heb je een truc om dat te doen?

 

Bedankt

Hallo. Probeer het volgende om een subassemblage met een bepaalde naam te repareren:

Option Explicit
Dim SubName As String
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swAssy As SldWorks.AssemblyDoc
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel
    SubName = InputBox("Quel est le nom du sous assemblage à fixer?")
    TransverseComponents swAssy
End Sub

Sub TransverseComponents(ByVal swAssy As SldWorks.AssemblyDoc)
    Dim vComps As Variant
    Dim vComp As Variant
    Dim swComp As SldWorks.Component2
    Dim swModel As SldWorks.ModelDoc2
    Dim ModelTitle As String
    vComps = swAssy.GetComponents(True)
    For Each vComp In vComps
        Set swComp = vComp
        Set swModel = swComp.GetModelDoc2
        If Not swModel Is Nothing Then
            ModelTitle = swModel.GetTitle
            If InStr(UCase(ModelTitle), ".SLD") > 0 Then ModelTitle = Left(ModelTitle, Len(ModelTitle) - 7)
            Debug.Print ModelTitle
            If ModelTitle = SubName Then
                swComp.Select4 False, Nothing, False
                swAssy.FixComponent
            End If
            If swModel.GetType = swDocumentTypes_e.swDocASSEMBLY Then
                TransverseComponents swModel
            End If
        End If
    Next
End Sub

 

Probeer anders het volgende om de geselecteerde subassemblage te repareren:

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    swModel.FixComponent
End Sub

 

1 like

Heel erg bedankt JeromeP, het is me gelukt om het aan te passen aan mijn programma.

Ik vind het nog steeds jammer dat er geen eenvoudiger commando is om een onderdeel/assemblage te selecteren.

 

Wat zou voor u een eenvoudigere bestelling zijn? Het is misschien te doen als je het kunt definiëren.