Option Explicit
' COPYRIGHT DASSAULT SYSTEMES 2001
Dim Language as String
Language="VBScript"

' ***********************************************************************
'   Purpose:      This macro filters the parameters created in a CATProduct 
'                 document
'                 1 - It displays the parameters right below 
'                     the root product
'                 2 - It displays the parameters belonging to a component 
'
'   Assumptions:  This macro is intended to be run on the 
'                 CAAKniClash.CATPoduct document.
'                 However, you can run this macro on any CATProduct document       
'                 which has a rule base.
'
'
'   Author:       Carole ROULLE, Pierre Grignon
'   Languages:    VBScript
'   Locales:      English (United States)
'   CATIA Level:  V5R6  
'   revision V5R13
' ***********************************************************************

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

 ' Retrieve your active document - CATIA is your application 
 ' You get the active document by using the ActiveDocument property
 ' on your application object

    ' ----------------------------------------------------------- 
    ' 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,,"No Doc Path Defined"
    End If
    ' ----------------------------------------------------------- 

    ' Open the Part document 
    Dim sFilePath
    sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _
		"online\CAAScdKniUseCases\samples\CAAKniClash.CATProduct")
    Dim oDoc As Document
    set oDoc = CATIA.Documents.Open(sFilePath)

 Dim oActiveDoc As Document 
 Set oActiveDoc = CATIA.ActiveDocument 
 
 Dim i As Integer
 Dim j As Integer
 ' Check whether the document is a CATPart
 ' InStr is a standard VB function
 If (InStr(oActiveDoc.Name,".CATProduct")) <> 0  Then 

    Dim oParams As Parameters
    Set oParams = oActiveDoc.Product.Parameters
    msgbox oParams.Count
    
    ' Search for the parameters having Product1 as their 
    ' "grand-parent"
    ' Note that the parent of parameters created right below
    ' a root product is the Parameters feature.
    For i = 1 to oParams.Count
     if oParams.item(i).Parent.Parent.name = "Product1" then 
      msgbox oParams.item(i).name
     end if
    Next 

    ' Searches for the parameters right below the p2.1 component
    Dim oProductList As Products
    Set oProductList = oActiveDoc.Product.Products
    For j = 1 to oProductList.Count
       if  oProductList.Item(j).Name = "p2.1" then
       Dim oProd As Product
       Set oProd = oProductList.item(j)
       'Msgbox oProductList.Item(j).Name
       For i = 1 to oProd.Parameters.Count
          Msgbox oProd.Parameters.item(i).name
          Msgbox oProd.Parameters.item(i).Parent.Parent.name 
        Next  
       end if
    Next       

 Else 
    MsgBox "The active document must be a CATProduct"
End If

End Sub