count all selected components using SOLIDWORKS API

Edit ArticleEdit Article
More 'Goodies'

This macro counts all unique components selected in the assembly using SOLIDWORKS API. Components can be either selected in the features manager tree or in the graphics area.

Macro will also count component if only entity of the component is selected (e.g. face or edge) using ISelectionMgr SOLIDWORKS API Interface..

Quantity of selected components displayed in the status bar
Quantity of selected components displayed in the status bar

Dim swApp As SldWorks.SldWorks
Dim swAssy As SldWorks.AssemblyDoc

Sub main()

    Set swApp = Application.SldWorks
    Set swAssy = swApp.ActiveDoc
    If Not swAssy Is Nothing Then
        Dim swSelMgr As SldWorks.SelectionMgr
        Set swSelMgr = swAssy.SelectionManager
        Dim swCompsColl As Collection
        Set swCompsColl = New Collection
        Dim i As Integer
        For i = 0 To swSelMgr.GetSelectedObjectCount2(-1)
            Dim swComp As SldWorks.Component2
            Set swComp = swSelMgr.GetSelectedObjectsComponent2(i)
            If Not swComp Is Nothing Then
                If Not Contains(swCompsColl, swComp) Then 'get only unique components
                    swCompsColl.Add swComp
                End If
            End If
        Dim swFrame As SldWorks.Frame
        Set swFrame = swApp.Frame
        swFrame.SetStatusBarText "Selected " & swCompsColl.Count() & " component(s)"
        MsgBox "Please open assembly"
    End If
End Sub

Function Contains(coll As Collection, item As Object) As Boolean
    Dim i As Integer
    For i = 1 To coll.Count
        If coll.item(i) Is item Then
            Contains = True
            Exit Function
        End If
    Contains = False
End Function

Product of Xarial Product of Xarial