Option Explicit
' COPYRIGHT DASSAULT SYSTEMES 2007
' *****************************************************************************
' Purpose: Update component instances when the catalog ref was modiifed.
' Languages: VBScript
' Locales: English
' CATIA Level: V5R18
' *****************************************************************************
Sub CATMain()
' -------------------------------------------------------------------------
' Optional: allows to find the sample wherever it's installed
dim sDocPath As String
sDocPath=CATIA.SystemService.Environ("CATDocView")
If (Not CATIA.FileSystem.FolderExists(sDocPath)) Then
Err.Raise 9999,sDocPath,"No Doc Path Defined"
End If
' -------------------------------------------------------------------------
' Open the schematic document
Dim sFilePath
sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _
"online\CAAScdSchUseCases\samples\CAASCH_SyncCompInst.CATProduct")
Dim objSchDoc As Document
Set objSchDoc = CATIA.Documents.Open(sFilePath)
Dim strMessageAs String
strMessage = _
"--------------------------------------------------------------------" & vbCr
strMessage = strMessage & _
"Output traces from CAASchSyncCompInst.CATScript" & vbCrLf
' Find the top node of the schematic object tree - schematic root.
Dim objPrdRoot As Product
Dim objSchRoot As SchematicRoot
If ( Not ( objSchDoc Is Nothing ) ) Then
Set objPrdRoot = objSchDoc.Product
If ( Not ( objPrdRoot Is Nothing ) ) Then
Set objSchRoot = objPrdRoot.GetTechnologicalObject("SchematicRoot")
End If
End If
' Get SchUpdateInstances interface on the schematic root.
Dim objUpdateInstancesAs SchUpdateInstances
If ( Not ( objSchRoot Is Nothing ) ) Then
Set objUpdateInstances = objSchRoot.GetInterface ("CATIASchUpdateInstances",objSchRoot)
End If
' Find a list of reference component in the model
Dim objLCompRefsAs SchListOfObjects
Dim objCompRefAs SchComponent
If ( Not ( objSchRoot Is Nothing ) ) Then
Set objLCompRefs = objSchRoot.GetRefComponents
' Get the first reference component
If ( Not ( objLCompRefs Is Nothing ) )Then
Set objCompRef = objLCompRefs.Item (1,"CATIASchComponent")
End If
End If
' Synchronize component instances of the first reference component
If ( Not ( objCompRef Is Nothing ) And _
Not ( objUpdateInstances Is Nothing ) )Then
strMessage = strMessage & _
"Synchronizing instances for the first reference component" & vbCr
objUpdateInstances.UpdateAllInstancesFromReference objCompRef
End If '--- If ( Not ( objCompRef Is Nothing )...
strMessage = strMessage & _
"--------------------------------------------------------------------" & vbCr
MsgBox strMessage
End Sub