909x
004903
12.01.2021

Question

Comment puis-je modifier la liste des paramètres à l'aide de l'interface COM ?


Réponse:

Les paramètres d'un modèle peuvent être modifiés à l'aide de l'interface IModel (depuis IModel3) :

Sub test_parameter()

Dim iApp As RFEM5.Application
Set iApp = GetObject(, "RFEM5.Application")

iApp.LockLicense

Dim j As Integer
j = iApp.GetModelCount

Dim iMod As RFEM5.IModel3
Set iMod = iApp.GetActiveModel

On Error GoTo e

Dim formParams() As RFEM5.FormulaParameter

' obtenir tous les paramètres de la formule
formParams = iMod.GetFormulaParameters

' supprimer tous les paramètres de formule
iMod.CleanFormulaParameters

' définir la liste des paramètres de formule
ReDim Preserve formParams (0 To UBound (formParams, 1) + 1)
formParams(UBound(formParams, 1)).Name = "p"
formParams(UBound(formParams, 1)).Unit = "m"
formParams(UBound(formParams, 1)).UnitType = LengthUnitType
formParams(UBound(formParams, 1)).Value = 0
formParams(UBound(formParams, 1)).ValueType = DoubleType
formParams(UBound(formParams, 1)).Comment = "new parameter"
formParams(UBound(formParams, 1)).Formula = « b/3 »
formParams(UBound(formParams, 1)).RangeOfValues = "(3;5.5>"

iMod.SetFormulaParameters formParams

e:

If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source
iMod.GetApplication.UnlockLicense
Set iMod = Nothing

End Sub


Il est uniquement possible de lire tous les paramètres à l'aide de la fonction GetFormulaParameters(). Les paramètres modifiés ou nouveaux peuvent ensuite être à nouveau transférés sous forme de liste à l'aide de la fonction SetFormulaParameters (). Ainsi, aucun paramètre individuel ne peut être lu ou écrit.

Il est à noter que la « Valeur » relative à son type (ValueTyp) et à son unité (Unit) doit être dans les limites définies (RangeOfValues), sinon un message d'erreur apparaît. Si la valeur est calculée, comme dans l'exemple, cela n'est pas pertinent et la valeur calculée avec la formule (Formula) doit être dans les limites, si les limites sont définies.