Macro to copy path of SOLIDWORKS component to clipboard

Edit ArticleEdit Article
More 'Goodies'

Component selected in the feature tree
Component selected in the feature tree

This macro copies the full path to the selected component into the clipboard using SOLIDWORKS API.

  • Component can be selected in assembly or drawing document
  • Component can be selected in the feature tree or in the graphics area
    • It is also possible to select a component entity (i.e. face or edge) to get the path to the component

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    If Not swModel Is Nothing Then
        Dim swSelMgr As SldWorks.SelectionMgr
        Set swSelMgr = swModel.SelectionManager
        Dim swComp As SldWorks.Component2
        If TypeOf swModel Is SldWorks.AssemblyDoc Then
            Set swComp = swSelMgr.GetSelectedObjectsComponent4(1, -1)
        ElseIf TypeOf swModel Is SldWorks.DrawingDoc Then
            Dim swDrawComp As SldWorks.DrawingComponent
            Set swDrawComp = swSelMgr.GetSelectedObjectsComponent4(1, -1)
            If swDrawComp Is Nothing Then
                'for entities selected in graphics view - first seleciton is a view itself
                Set swDrawComp = swSelMgr.GetSelectedObjectsComponent4(2, -1)
            End If
            If Not swDrawComp Is Nothing Then
                Set swComp = swDrawComp.Component
            End If
            MsgBox "Only parts and drawings are supported"
        End If
        If Not swComp Is Nothing Then
            Dim path As String
            path = swComp.GetPathName
            Debug.Print path
            SetTextToClipboard path
            MsgBox "Please select component"
        End If
        MsgBox "Please open document"
    End If
End Sub

Sub SetTextToClipboard(text As String)
    Dim dataObject As Object
    Set dataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    dataObject.SetText text
    Set dataObject = Nothing
End Sub

Product of Xarial Product of Xarial