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

' ***********************************************************************
'   Purpose:      This macro:
'                 1 - scans the list of parameters of a CATPart document
'                 2 - for each parameter, determines whether a parameter is hidden,
'                     whether it is a boolean type parameter
'                     and sets its value to true
'                 3 - displays the list of hidden parameters
'                     along with their values and comments
'                 4 - asks you to modify the status (Hidden->Show) of the parameters
'                     and to re-run to macro.
'                 The parameter comments are those you specify by using the Edit comments...
'                 command from the contextual menu. After the list of hidden parameters
'                 is displayed you can turn the status of each parameters to Show 
'                 and run again the macro.
'
'   Assumptions:  This macro is intended to be run on the 
'                 KwrMacroHiddenParameters.CATPart document.
'                 However, you can run this macro on any CATPart document       
'                 The KwrMacroHiddenParameters.CATPart sample has three 
'                 hidden parameters: "Task1" , "Task2" and "Task3", all of them 
'                 are booleans with their initial values set to false. 
'                 As these parameters are in a hidden status, they are not displayed 
'                 in the specification tree but they are visible in the f(x) dialog box.
'
'
'   Author:       Carole ROULLE, Pierre Grignon
'   Languages:    VBScript
'   Locales:      English (United States)
'   CATIA Level:  V5R6  
'   revision V5R13
' ***********************************************************************

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

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

 ' 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
 Dim oActiveDoc As Document 
 Set oActiveDoc = CATIA.ActiveDocument 
 
 ' Check whether the document is a CATPart
 ' InStr is a standard VB function
 If (InStr(oActiveDoc.Name,".CATPart")) <> 0  Then 

    ' Retrieve the collection object which contains
    ' all the document parameters
    Dim oParams As Parameters 
    Set oParams = oActiveDoc.Part.Parameters 

    ' Declare the variables to be used in the message box
    ' which displays the hidden parameters
    Dim strRel0 As String
    Dim strRel1 As String
    Dim strRel2 As String
    Dim HiddenNumber As Integer
    strRel0 = "Name   Value   Comments"
    strRel1 = "Here is the list of hidden parameters" & vbCrLf & strRel0
 
    ' Scan the parameter list,
    ' test whether the value returned by the Hidden property is "True",
    ' test whether the type of the parameter is BoolParam,
    ' increment the HiddenNumber variable
    ' set to true the boolean value of the hidden parameters (if any) 
    ' Note about the BoolParam type test:
    ' The statement oParams.Item(i).Value = "true" raises an error
    ' whenever the parameter is not a boolean
    Dim i As Integer
    For i = 1 To oParams.Count
       if (oParams.Item(i).Hidden = "True") Then
         if TypeName(oParams.Item(i)) = "BoolParam" Then
         strRel1 = strRel1 & vbCrLf & oParams.Item(i).Name &_
             "   " & oParams.Item(i).Value &_
             "   " & "'" & oParams.Item(i).Comment &_
             "'" : HiddenNumber = HiddenNumber + 1 : oParams.Item(i).Value = "true"
         end if
       end if 

    Next

    ' Display the list of hidden parameters.
    ' The parameter names, values and comments
    ' are displayed in a message box.
    ' Ask you to modify interactively the status of the
    ' parameters and to re-run the macro.

    strRel2 = "NOW, SHOW THE HIDDEN PARAMETERS" &_ 
    vbCrLf & vbCrLf & "IN THE f(x) DIALOG BOX," &_
    vbCrLf & "  1 ) RIGHT-CLICK THE PARAMETER VALUE FIELD " &_
    vbCrLf & "  2 ) SELECT THE SHOW COMMAND FROM THE CONTEXTUAL MENU" &_
    vbCrLf & vbCrLf & "THEN RE-RUN THE MACRO "
    If (HiddenNumber > 0) Then
       MsgBox strRel1  
       MsgBox strRel2 
    Else 
       MsgBox "There are no hidden parameters in this document"
    End If

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

End Sub