Attribute VB_Name = "Parameters"
Option Explicit


' This example demonstrates methods and properties associated to the Parameters object.
' Open a part document that contains at least one parameter, one of them named 'd0'.

Public Sub Parameters1()
    ' Reference to the active document.
    Dim objDocument As Inventor.PartDocument
    Set objDocument = ThisApplication.ActiveDocument

    ' Reference to the Parameters object.
    Dim objParameters As Parameters
    Set objParameters = objDocument.ComponentDefinition.Parameters

    ' Itération parmi les objets de la collection
    Dim Index As Long
    Debug.Print "List of parameters"
    For Index = 1 To objParameter.Count
        Debug.Print objParameters(Index).Name & " : " & _
                    objParameters(Index).Value
    Next Index
End Sub


Public Sub Parameters2()
    ' Reference to the active document.
    Dim objDocument As Inventor.PartDocument
    Set objDocument = ThisApplication.ActiveDocument

    ' Reference to the Parameters object.
    Dim objParameters As Parameters
    Set objParameters = objDocument.ComponentDefinition.Parameters

    ' Iterate through all collection objects
    Dim Index As Long
    Debug.Print "Liste des parameters"
    For Index = 1 To objParameters.Count
        ' Display name
        Debug.Print " Name: " & objParameter.Item(Index).Name
        
        'Display type
        Select Case objParameters.Item(Index).Type
            Case kModelParameterObject
                Debug.Print "  Type: " & "Model parameter"
            Case kTableParameterObject
                Debug.Print "  Type: " & "Parameter table"
            Case kUserParameterObject
                Debug.Print "  Type: " & "User parameter"
        End Select
          
        'Display value
        Debug.Print "  Valeur: " & objParameters.Item(Index).Value
        
        'Display status
        Select Case objParameters.Item(Index).HealthStatus
            Case kDeletedHealth
                Debug.Print "  Health Status: " & "Deleted"
            Case kDriverLostHealth
                Debug.Print "  Health Status: " & "Driver Lost"
            Case kInErrorHealth
                Debug.Print "  Health Status: " & "In Error"
            Case kOutOfDateHealth
                Debug.Print "  Health Status: " & "Out of Date"
            Case kUnknownHealth
                Debug.Print "  Health Status: " & "Unknown"
            Case kUpToDateHealth
                Debug.Print "  Health Status: " & "Up to Date"
        End Select
    Next Index
     
    ' Reference to the model parameters collection.
    Dim objModelParameters As ModelParameters
    Set objModelParameters = objParameters.ModelParameters
    
    ' Iterate through all items of the collection.
    Dim iNumModelParams As Long
    Debug.Print "Model parameters values"
    For iNumModelParams = 1 To objModelParameters.Count
        ' Display name.
        Debug.Print " Name:" & objModelParameters.Item(iNumModelParams).Name
        
        ' Display name.
        Debug.Print "  Value: " & objModelParameters.Item(iNumModelParams).Value
        
        ' Display units.
        Debug.Print "  Units: " & objModelParameters.Item(iNumModelParams).Units
       
        ' Modify value.
        objModelParameters.Item(iNumModelParams).Value = objModelParameters.Item(iNumModelParams).Value * 2
    Next iNumModelParams
    

    ' Reference to a specific parameter.
    objModelParameters.Item("d0").Name = "NewParam"
    

    ' Modify value.
    objModelParameters.Item("NewParam").Value = 25
    
    ' Update document.
    objDocument.Update
End Sub





' Cet exemple démontre l'accès à l'objet Parameters,
' puis à la collection des paramètres reliés depuis une feuille de calcul.
' ouvrir un document de type pièce.  Une feuille de calcul nommée "C:\Temp\params.xls" doit exister.
' Afin de démontrer la modification de la référence à la feuille de calcul,
' s'assurer que la feuille de calcul "C:\Temp\newparams.xls" existe.

Public Sub ParametersTable()
    
    ' Reference to the active document.
    Dim objDocument As Inventor.PartDocument
    Set objDocument = ThisApplication.ActiveDocument
    
    ' Reference to the Parameters object.
    Dim oParams As Parameters
    Set oParams = objDocument.ComponentDefinition.Parameters
    
    ' Ajout de la table de paramètres utilisant la feuille de calcul.
    oParams.ParameterTables.AddExcelTable "C:\Temp\params.xls", "A1", True
    
    ' Accès aux paramètres du fichier attaché.
    Dim oParamTableFiles As ParameterTables
    Set oParamTableFiles = oParams.ParameterTables
    
    ' Itération parmi les fichiers liés.
    Dim oParamTableFile As ParameterTable
    For Each oParamTableFile In oParamTableFiles
        ' Modifier le lien à la feuille de calcul.
        If LCase(oParamTableFile.Filename) = "c:\temp\params.xls" Then
            oParamTableFile.Filename = "C:\Temp\newparams.xls"
        End If

        ' Référence à la collection des paramètres depuis le fichier.
        Dim oTableParams As TableParameters
        Set oTableParams = oParamTableFile.TableParameters
     
        ' Afficher la liste des paramètres dans la collection.
        Dim iNumTableParams As Long
        Debug.Print "TABLE PARAMETER VALUES"
        For iNumTableParams = 1 To oTableParams.Count
            ' Affichage du nom.
            Debug.Print " Nom: " & oTableParams.Item(iNumTableParams).Name
            
            ' Affichage de l'Expression.
            Debug.Print " Expression: " & oTableParams.Item(iNumTableParams).Expression
        
            ' Affichage de la valeur utilisant les données de la table.
            Debug.Print " Valeur: " & oTableParams.Item(iNumTableParams).Value
        Next iNumTableParams
    Next
End Sub



 