Macro to copy path of SOLIDWORKS component to clipboard
More 'Goodies'
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 Else MsgBox "Only parts and drawings are supported" End End If If Not swComp Is Nothing Then Dim path As String path = swComp.GetPathName Debug.Print path SetTextToClipboard path Else MsgBox "Please select component" End If Else 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 dataObject.PutInClipboard Set dataObject = Nothing End Sub