Skip to main content

Select components associated with attributes using SOLIDWORKS API

This example attaches to the selection SOLIDWORKS API events of the active assembly via NewSelectionNotify notification.

If the attribute is selected and there is a component associated with this attribute - this component will be selected in the tree.

Macro will stop once the active assembly is closed.

Macro module

Dim swApp As SldWorks.SldWorks
Dim swEventsListener As EventsListener

Sub main()

Set swApp = Application.SldWorks

Set swEventsListener = New EventsListener

Dim swAssy As SldWorks.AssemblyDoc

Set swAssy = swApp.ActiveDoc

swEventsListener.SetAssembly swAssy

While swApp.ActiveDoc Is swAssy
DoEvents
Wend

End Sub

EventsListener class

Dim swModel As SldWorks.ModelDoc2
Dim WithEvents swAssy As SldWorks.AssemblyDoc
Dim swSelMgr As SldWorks.SelectionMgr

Private Function swAssy_NewSelectionNotify() As Long

Dim swFeat As SldWorks.Feature
Dim swAtt As SldWorks.Attribute
Dim swComp As SldWorks.Component2

Dim i As Integer

i = swSelMgr.GetSelectedObjectCount2(-1)

If i > 0 Then

On Error Resume Next

Set swFeat = swSelMgr.GetSelectedObject6(i, -1)

If Not swFeat Is Nothing Then

If swFeat.GetTypeName2 = "Attribute" Then

Set swAtt = swFeat.GetSpecificFeature2

Set swComp = swAtt.GetComponent()

swComp.Select4 True, Nothing, False

End If

End If

End If

Set swFeat = Nothing

End Function

Sub SetAssembly(assy As SldWorks.AssemblyDoc)

Set swAssy = assy

Set swModel = swAssy

Set swSelMgr = swModel.SelectionManager

End Sub