Get Visibility of and Resolve Lightweight Components Example (VBA)
This example shows how to get the visibility of and resolve lightweight
components.
'----------------------------------------------------
'
' Preconditions: Assembly is open.
'
' Postconditions: Lightweight components are resolved.
'
'----------------------------------------------------
Option Explicit
Public Enum swComponentResolveStatus_e
swResolveOk
= 0
swResolveAbortedByUser
= 1
swResolveNotPerformed
= 2
swResolveError
= 3
End Enum
' Visibility
information possible for components
Public Enum swComponentVisibilityState_e
swComponentHidden
= 0
swComponentVisible
= 1
End Enum
Sub GetComponentVisib _
( _
swComp
As SldWorks.Component2, _
sPadStr
As String _
)
Dim
vChildArray As
Variant
Dim
swChildComp As
SldWorks.Component2
Dim
i As
Long
'
Root component has no name (empty string)
Debug.Print
sPadStr & swComp.Name2 &
" [" & swComp.Visible
& "]"
vChildArray
= swComp.GetChildren
For
i = 0 To UBound(vChildArray)
Set
swChildComp = vChildArray(i)
GetComponentVisib
swChildComp, sPadStr & " "
Next
i
End Sub
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swAssy As
SldWorks.AssemblyDoc
Dim
swConfig As
SldWorks.Configuration
Dim
swConfMgr As
SldWorks.ConfigurationManager
Dim
swRootComp As
SldWorks.Component2
Dim
nStatus As
Long
Set
swApp = CreateObject("SldWorks.Application")
Set
swModel = swApp.ActiveDoc
Set
swAssy = swModel
Set
swConfMgr = swModel.ConfigurationManager
Set
swConfig = swConfMgr.ActiveConfiguration
Set
swRootComp = swConfig.GetRootComponent
nStatus
= swAssy.ResolveAllLightWeightComponents(False)
Debug.Assert
swResolveOk = nStatus
Debug.Print
"File = " & swModel.GetPathName
GetComponentVisib
swRootComp, " "
End Sub