Skip to main content

Add components to assembly using SOLIDWORKS API

This example Demonstrates 2 different ways to add component into the assembly tree using SOLIDWORKS API.

  • Traditional way to add component via AddComponentX SOLIDWORKS API requires the model to be loaded into the memory. Otherwise the operation fails.
  • More advanced way is to use the AddComponents SOLIDWORKS API. This method allows batch insertion of different components without the need to open the model beforehand.

Download Example Files

Dim swApp As SldWorks.SldWorks
Dim swMathUtils As SldWorks.MathUtility
Dim swAssy As SldWorks.AssemblyDoc

Sub main()

Set swApp = Application.SldWorks

Set swMathUtils = swApp.GetMathUtility

Set swAssy = swApp.ActiveDoc

If Not swAssy Is Nothing Then

Dim comp1Path As String
Dim comp2Path As String

comp1Path = swApp.GetCurrentMacroPathFolder() & "\Part1.sldprt"
comp2Path = swApp.GetCurrentMacroPathFolder() & "\Part2.sldprt"

Dim swComp As SldWorks.Component2

'Following API call will fail as it is required to have the model loaded into the memory
Set swComp = swAssy.AddComponent4(comp1Path, "", 0, 0, 0)

Debug.Assert Not swComp Is Nothing

'Loading model invisibly
swApp.DocumentVisible False, swDocumentTypes_e.swDocPART
swApp.OpenDoc6 comp1Path, swDocumentTypes_e.swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", 0, 0
swApp.DocumentVisible True, swDocumentTypes_e.swDocPART

'Now this API call succeeded
Set swComp = swAssy.AddComponent4(comp1Path, "", 0, 0, 0)

Debug.Assert Not swComp Is Nothing

Dim strCompNames(0) As String
Dim vTransformData As Variant
Dim vComps As Variant
strCompNames(0) = comp2Path

vTransformData = swMathUtils.CreateTransform(Empty).ArrayData

'It is not required to load document into memory if this method is used
vComps = swAssy.AddComponents(strCompNames, vTransformData)

Debug.Assert UBound(vComps) <> 1

Else

MsgBox "Please open or create assembly"

End If

End Sub