Option Explicit
' COPYRIGHT DASSAULT SYSTEMES 2004
' *****************************************************************************
' Purpose: Add/List graphical representations to a reference component.
' Languages: VBScript
' Locales: English
' CATIA Level: V5R15
' *****************************************************************************
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_Detail03.CATProduct")
Dim objSchDoc As Document
Set objSchDoc = CATIA.Documents.Open(sFilePath)
Dim strMessage As String
strMessage = _
"--------------------------------------------------------------------" & vbCr
strMessage = strMessage & _
"Output traces from CAASchCompRefGraphic.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
Dim objLCompRefs As SchListOfObjects
Dim objCompRefGraphic As SchCompGraphic
If ( Not ( objSchRoot Is Nothing ) ) Then
'-----------------------------------------------------------------------
' Find a list of reference component in the model
'-----------------------------------------------------------------------
Set objLCompRefs = objSchRoot.GetRefComponents
If ( Not ( objLCompRefs Is Nothing ) ) Then
'--------------------------------------------------------------------
' Get a SchCompGraphic interface handle from a reference
' component
'--------------------------------------------------------------------
Set objCompRefGraphic = objLCompRefs.Item (1,"CATIASchCompGraphic")
If ( Not ( objCompRefGraphic Is Nothing ) ) Then
Dim objUnassocSymbol As AnyObject
'----------------------------------------------------------------
' Find a symbol that is not associated with any reference in
' the model
'----------------------------------------------------------------
Set objUnassocSymbol = GetComponentSymbol (objSchRoot)
If ( Not ( objUnassocSymbol Is Nothing ) ) Then
'--------------------------------------------------------------
' Add the second graphical representation to the reference
' component using the symbol just found
'--------------------------------------------------------------
objCompRefGraphic.AddGraphicalRepresentation objUnassocSymbol
strMessage = strMessage & "Successfully add the second graphical representation" & vbCr
End If
'----------------------------------------------------------------
' Find another symbol that is not associated with
' any reference in the model
'----------------------------------------------------------------
Set objUnassocSymbol = GetComponentSymbol (objSchRoot)
If ( Not ( objUnassocSymbol Is Nothing ) ) Then
'--------------------------------------------------------------
' Add the third graphical representation to the reference
' component using the symbol just found
'--------------------------------------------------------------
objCompRefGraphic.AddGraphicalRepresentation objUnassocSymbol
strMessage = strMessage & "Successfully add the third graphical representation" & vbCr
End If
Dim intNbGraphic As Integer
Dim objGRR As SchGRR
Dim objLGraphic As SchListOfObjects
Set objLGraphic = objCompRefGraphic.ListGraphicalRepresentations
If ( Not ( objLGraphic Is Nothing ) ) Then
intNbGraphic = objLGraphic.Count
strMessage = strMessage & "Number of graphical representations"
strMessage = strMessage & "= " & intNbGraphic & vbCr
Set objGRR = Nothing
If (intNbGraphic > 1) Then
Set objGRR = objLGraphic.Item(intNbGraphic,"CATIASchGRR")
If ( Not (objGRR Is Nothing ) ) Then
objCompRefGraphic.RemoveGraphicalRepresentation objGRR
Set objLGraphic = objCompRefGraphic.ListGraphicalRepresentations
If ( Not ( objLGraphic Is Nothing ) ) Then
intNbGraphic = objLGraphic.Count
strMessage = strMessage & "Number of graphical representations"
strMessage = strMessage & "after calling "
strMessage = strMessage & " RemoveGraphicalRepresentation = " & intNbGraphic & vbCr
End If
End If
End If ' --- If (intNbGraphic > 1)
End If '--- If ( Not ( objLGraphic Is Nothing ) ) Then
End If '--- If ( Not ( objCompRefGraphic Is Nothing )...
End If '--- If ( Not ( objLCompRefs Is Nothing ) ...
End If '--- If ( Not ( objSchRoot Is Nothing )...
strMessage = strMessage & _
"--------------------------------------------------------------------" & vbCr
MsgBox strMessage
End Sub
' -----------------------------------------------------------------------------
' | Find a component symbol that has not been associated with a schematic
' | component from a document root.
' | Input: objSchRootArg: the root of the document.
' | Returns: component symbol object.
' -----------------------------------------------------------------------------
Private Function GetComponentSymbol (objSchRootArg As SchematicRoot) As AnyObject
Dim objSchLSymbols As SchListOfObjects
If ( Not ( objSchRootArg Is Nothing ) ) Then
Set objSchLSymbols = objSchRootArg.GetUnassociatedSymbols
If ( Not ( objSchLSymbols Is Nothing ) ) Then
Set GetComponentSymbol = objSchLSymbols.Item (1,"CATIASchGRR")
End If
End If
End Function