Extract Configuration-Specific Parameters Example (VBA)
This example shows how to extract and list all configuration-specific
parameters from a model.
'----------------------------------------------
'
' Problem:
' Configurations
are a means of modeling families of parts and assemblies,
' or
to describing different arrangements of the same part or assembly.
' Configurations
are powerful and flexible, but this comes
' at
a cost of managing the configurations. Typically,
' document
management systems do not handle configurations
' well.
Furthermore, company practices may have to be revised to allow
' for
configurations in the design process.
'
' Typically,
a configuration is a collection of dimensions and
' features,
each having a value specific to a configuration.
' A
dimension usually has a value whereas a feature
' usually
has a suppression state. The configuration is stored
' inside
the SolidWorks file as an Excel spreadsheet. There may also
' be
other types of items and the interpretation of these will be up
' to
the Excel spreadsheet.
'
' This
code shows how to extract and list all the parameters and their
' values
from a model.
'
' Preconditions: Part
or assembly is open.
'
' Postconditions:
' None
'
' NOTES:
' (1)
Currently, configurations are supported in parts
' and
assemblies only; they are not supported in drawings.
' (2)
All parameters and their values are returned as strings. It
' is
up to the application to interpret the meaning of each
' parameter
and perform the appropriate conversion.
'
'----------------------------------------------
Option
Explicit
Sub
main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swConfigMgr As
SldWorks.ConfigurationManager
Dim
vConfName As
Variant
Dim
vConfParam As
Variant
Dim
vConfValue As
Variant
Dim
i As
Long
Dim
j As
Long
Dim
bRet As
Boolean
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swConfigMgr = swModel.ConfigurationManager
Debug.Print
"File = " + swModel.GetPathName
vConfName
= swModel.GetConfigurationNames
For
i = 0 To UBound(vConfName)
bRet
= swConfigMgr.GetConfigurationParams(vConfName(i),
vConfParam, vConfValue)
Debug.Assert
bRet
Debug.Print
" Config
=
" & vConfName(i)
If
Not IsEmpty(vConfParam) Then
For
j = 0 To UBound(vConfParam)
Debug.Print
" "
& vConfParam(j) & " = " & vConfValue(j)
Next
j
End
If
Next
i
End
Sub
'-------------------------------------------