Hi API gurus,
I was creating this tiny VBA code that transverse through all the parts in assembly (Current active, opened assembly) and make them as virtual components.
If there is sub assembly inside the main assembly, it'll make it as virtual component and the loop through it to make its parts virtual.
I was able to make the pars and sub-assemblies in first layer as virtual components.
I'm having having trouble to set the components in layer 2,3++ that belong to sub-assemblies as virtual components.
But my function can loop through it.
Any help will be highly appreciated
Option Explicit Dim swApp As SldWorks.SldWorks Dim swAssembly As SldWorks.AssemblyDoc Dim swModel As SldWorks.ModelDoc2 Dim swConfig As SldWorks.Configuration Dim swRootComp As SldWorks.Component2 Dim n As Long Sub TraverseComponent(swComp As SldWorks.Component2) Dim vChildComp As Variant Dim swChildComp As SldWorks.Component2 Dim swCompModel As ModelDoc2 Dim swCompConfig As SldWorks.Configuration Dim sPadStr As String Dim i As Long Dim stat As Boolean vChildComp = swComp.GetChildren For i = 0 To UBound(vChildComp) Set swChildComp = vChildComp(i) Set swCompModel = swChildComp.GetModelDoc2 'Debug.Print swChildComp.Name If swCompModel.Extension.ToolboxPartType = 0 Then stat = swChildComp.MakeVirtual Debug.Print swChildComp.Name End If TraverseComponent swChildComp Next i End Sub Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swAssy As SldWorks.AssemblyDoc Dim swConf As SldWorks.Configuration Dim swRootComp As SldWorks.Component2 Dim i As Long Set swApp = CreateObject("SldWorks.Application") Set swModel = swApp.ActiveDoc Set swConf = swModel.GetActiveConfiguration Set swRootComp = swConf.GetRootComponent3(True) TraverseComponent swRootComp End Sub