Option Explicit
' COPYRIGHT DASSAULT SYSTEMES 2001
Dim Language as String
Language="VBScript"
' ***********************************************************************
' Purpose: This macro:
' 1 - Retrieves the Relations collection from the active
' document
' 2 - Determines whether there is a rule base in the
' Relations list
' 3 - Determines whether the rule base is to be solved or not
' 4 - Retrieves the list of components below the rule base
' 5 - Retrieves the list of Expert Checks from the component
' list
' 6 - Displays the list of checks along with their status
' (check valid or invalid)
'
' Assumptions:
' This macro is intended to be run on the
' CAAKhwRuleBaseRead.CATPart document
'
' Author: Carole ROULLE
' Languages: VBScript
' Locales: English (United States)
' CATIA Level: V5R6
' ***********************************************************************
Sub CATMain()
' Set the CATIA popup file alerts to False
' It prevents to stop the macro at each alert during its execution
CATIA.DisplayFileAlerts = False
' Check you have an active document
Dim CATDocs As Documents
Set CATDocs = CATIA.Documents
if CATDocs.Count <> 0 then
' Retrieve the active document
Dim oActiveDoc As Document
Set oActiveDoc = CATIA.ActiveDocument
' Retrieve the Relations collection
' A RuleBase if any is an item of this collection
Dim oRel As Relations
Set oRel = oActiveDoc.Part.Relations
Dim i as Integer
Dim j as Integer
Dim k as Integer
j = 0
' Scan the Relations collection
For i = 1 to oRel.Count
' Determine whether there is a rulebase in the document
if oRel.Item(i).Name = "RuleBase" Then
j = j + 1
Dim oRuleBase as AnyObject
Set oRuleBase = oRel.Item("RuleBase")
' Retrieve the rulebase Fingerprint
' if the Fingerprint is 0 - the rule base needs be solved
' otherwise it is solved
if (oRuleBase.Fingerprint = 0) then
msgbox "The rule base must be solved"
else
msgbox "The rule base is solved"
' Retrieve the list of component below the rulebase
' IMPORTANT: a rule base is a rule set containing items
' of ExpertRuleBaseComponentRuntimes types
Dim oListCompo As AnyObject
Set oListCompo = oRuleBase.RuleSet.ExpertRuleBaseComponentRuntimes
Dim oRBRelation As AnyObject
' Check the status of the expert checks
' Specify the header to be displayed in a message box
Dim strRel1 As String
strRel1 = "Check Name and Status: 1 valid (Green) - 0 invalid (Red)"
' Scan the list of ExpertRuleBaseComponentRuntimes object
' If an object of the list is of ExpertCheckRuntime
' writes its name and status in a string
For k = 1 to oListCompo.Count
Set oRBRelation = oListCompo.Item(k)
if (typename(oListCompo.Item(k)) = "ExpertCheckRuntime") then
strRel1 = strRel1 & vbCrLf & oListCompo.Item(k).Name &_
" " & oListCompo.Item(k).Status
End if
Next
' Display the list of checks as well as their validity
msgbox strRel1
End If
if j = 0 then msgbox "There is no rule base in this document"
end if
Next
CATIA.ActiveDocument.Part.Update
else MsgBox "You must have an active CATPart document"
End If
End Sub