Lock All External References Example (VBA)
This example shows how to lock all external references in a part or
an assembly in reverse chronological order.
'---------------------------------------
'
' Preconditions: Part or assembly is open.
'
' Postconditions: All external references are locked.
'
'---------------------------------------
Option Explicit
Public Enum swDocumentTypes_e
swDocNONE
= 0 '
Used to
be TYPE_NONE
swDocPART
= 1 '
Used to
be TYPE_PART
swDocASSEMBLY
= 2 '
Used to
be TYPE_ASSEMBLY
swDocDRAWING
= 3 '
Used to
be TYPE_DRAWING
End Enum
Public Enum swComponentResolveStatus_e
swResolveOk
= 0
swResolveAbortedByUser
= 1
swResolveNotPerformed
= 2
swResolveError
= 3
End Enum
Sub ProcessModel _
( _
swApp
As SldWorks.SldWorks, _
swModel
As SldWorks.ModelDoc2, _
sPadStr
As String _
)
Debug.Print
sPadStr & " Locking:
" & swModel.GetPathName
swModel.LockAllExternalReferences
End Sub
Sub ProcessComponent _
( _
swApp
As SldWorks.SldWorks, _
swComp
As SldWorks.Component2, _
sPadStr
As String _
)
Dim
vChildCompArr As
Variant
Dim
vChildComp As
Variant
Dim
swChildComp As
SldWorks.Component2
Dim
swChildModel As
SldWorks.ModelDoc2
vChildCompArr
= swComp.GetChildren
For
Each vChildComp In vChildCompArr
Set
swChildComp = vChildComp
Debug.Print
sPadStr & swChildComp.Name2
ProcessComponent
swApp, swChildComp, sPadStr & " "
Set
swChildModel = swChildComp.GetModelDoc
ProcessModel
swApp, swChildModel, sPadStr
Next
vChildComp
End Sub
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swAssy As
SldWorks.AssemblyDoc
Dim
swConfigMgr As
SldWorks.ConfigurationManager
Dim
swConf As
SldWorks.Configuration
Dim
swRootComp As
SldWorks.Component2
Dim
nStatus As
Long
Dim
bRet As
Boolean
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swConfigMgr = swModel.ConfigurationManager
Set
swConf = swConfigMgr.ActiveConfiguration
Set
swRootComp = swConf.GetRootComponent
Debug.Print
"File = " & swModel.GetPathName
Select
Case swModel.GetType
Case
swDocPART
ProcessModel
swApp, swModel, " "
Case
swDocASSEMBLY
Set
swAssy = swModel
nStatus
= swAssy.ResolveAllLightWeightComponents(False)
Set
swRootComp = swConf.GetRootComponent
ProcessComponent
swApp, swRootComp, " "
Case
Else
Exit
Sub
End
Select
End Sub
'---------------------------------------