Set All Assembly Components Lightweight or Resolved Example (VBA)
This example shows how to set all assembly components to either lightweight
or resolved.
'-----------------------------------------------
'
' Preconditions: Assembly is open.
'
' Postconditions: All assembly components are set to either
' lightweight
or fully resolved.
'
' NOTE: To make components lightweight, you could also
use:
' *
IComponent2::Select2
' *
IAssemblyDoc::MakeLightWeight
' However,
this requires selection, which tends to be
' expensive.
'
'----------------------------------------------
Option Explicit
Public Enum swComponentSuppressionState_e
swComponentSuppressed
= 0 '
Fully suppressed
- no data is loaded
swComponentLightweight
= 1 '
Lightweight
- only graphics data is loaded
swComponentFullyResolved
= 2 '
Fully resolved
- model data is completely loaded
End Enum
Public Enum swSuppressionError_e
swSuppressionBadComponent
= 0
swSuppressionBadState
= 1
swSuppressionChangeOk
= 2
swSuppressionChangeFailed
= 3
End Enum
Sub ProcessComponent _
( _
swApp
As SldWorks.SldWorks, _
swModel
As SldWorks.ModelDoc2, _
swComp
As SldWorks.Component2, _
swComponentSuppressionState
As swComponentSuppressionState_e, _
sPadStr
As String _
)
Dim
vChildCompArr As
Variant
Dim
vChildComp As
Variant
Dim
swChildComp As
SldWorks.Component2
Dim
nRetVal As
Long
vChildCompArr
= swComp.GetChildren
For
Each vChildComp In vChildCompArr
Set
swChildComp = vChildComp
nRetVal
= swChildComp.SetSuppression2(swComponentSuppressionState)
Debug.Print
sPadStr & swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">
--> " & swChildComp.GetPathName
ProcessComponent
swApp, swModel, swChildComp, swComponentSuppressionState, sPadStr + "
"
Next
vChildComp
End
Sub
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swFeatMgr As
SldWorks.FeatureManager
Dim
swConfigMgr As
SldWorks.ConfigurationManager
Dim
swConfig As
SldWorks.Configuration
Dim
swRootComp As
SldWorks.Component2
Dim
bRet As
Boolean
Dim
nSuppressState As
Long
Dim
nResponse As
Integer
nResponse
= MsgBox("Set all components to lightweight or resolved (Yes = lightweight;
No = resolved)?", vbYesNo)
If
nResponse = vbYes Then
nSuppressState
= swComponentLightweight
Else
nSuppressState
= swComponentFullyResolved
End
If
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swFeatMgr = swModel.FeatureManager
Set
swConfigMgr = swModel.ConfigurationManager
Set
swConfig = swConfigMgr.ActiveConfiguration
Set
swRootComp = swConfig.GetRootComponent
swFeatMgr.EnableFeatureTree = False
Debug.Print
"File = " & swModel.GetPathName
ProcessComponent
swApp, swModel, swRootComp, nSuppressState, " "
swFeatMgr.EnableFeatureTree = True
End Sub
'----------------------------------------------------