Traverse Hierarchy of Configurations Example (VBA)
This examples shows how to traverse a hierarchy of configurations.
'-------------------------------------------
'
' Preconditions: Part or assembly is open.
'
' Postconditions: None
'
' NOTE: Configurations are not supported on drawings
'
'--------------------------------------------
Option Explicit
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
vConfigNameArr As
Variant
Dim
vConfigName As
Variant
Dim
swConfig As
SldWorks.Configuration
Dim
swParentConfig As
SldWorks.Configuration
Dim
swConfMgr As
SldWorks.ConfigurationManager
Dim
vChildConfigArr As
Variant
Dim
vChildConfig As
Variant
Dim
swChildConfig As
SldWorks.Configuration
Dim
i As
Long
Dim
bRet As
Boolean
Set
swApp = CreateObject("SldWorks.Application")
Set
swModel = swApp.ActiveDoc
Set
swConfMgr = swModel.ConfigurationManager
Set
swConfig = swConfMgr.ActiveConfiguration
Debug.Print
"File = " & swModel.GetPathName
Debug.Print
" Active
Config = " & swConfig.Name
Debug.Print
""
'
Always at least one configuration will exist
vConfigNameArr
= swModel.GetConfigurationNames
For
Each vConfigName In vConfigNameArr
Set
swConfig = swModel.GetConfigurationByName(vConfigName)
Debug.Print
" Name
=
" & swConfig.Name
Debug.Print
" Description
=
" & swConfig.Description
Debug.Print
" Comment
=
" & swConfig.Comment
Debug.Print
" UseAlternateNameInBOM
=
" & swConfig.UseAlternateNameInBOM
Debug.Print
" AlternateName
=
" & swConfig.AlternateName
Debug.Print
" ShowChildComponentsInBOM
=
" & swConfig.ShowChildComponentsInBOM
Debug.Print
" HideNewComponentModels
=
" & swConfig.HideNewComponentModels
Debug.Print
" SuppressNewComponentModels
= " & swConfig.SuppressNewComponentModels
Debug.Print
" SuppressNewFeatures
=
" & swConfig.SuppressNewFeatures
Debug.Print
" StreamName
=
" & swConfig.GetStreamName
Debug.Print
" IsDerived
=
" & swConfig.IsDerived
'
Process parent
Set
swParentConfig = swConfig.GetParent
If
Not swParentConfig Is Nothing Then
Debug.Print
" Parent
=
" & swParentConfig.Name
End
If
'
Process children
vChildConfigArr
= swConfig.GetChildren
If
Not IsEmpty(vChildConfigArr) Then
For
Each vChildConfig In vChildConfigArr
Set
swChildConfig = vChildConfig
Debug.Print
" Child
=
" & swChildConfig.Name
Next
End
If
Debug.Print
""
Next
End Sub