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