Odpověď:
Parametry modelu lze upravovat pomocí rozhraní IModel (od 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
' get all formula parameters
formParams = iMod.GetFormulaParameters
' delete all formula parameters
iMod.CleanFormulaParameters
' set list of formula parameters
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
Pouze pomocí funkce GetFormulaParameters() je možné načíst všechny parametry. Upravené nebo nové parametry lze poté znovu přenést jako seznam pomocí funkce SetFormulaParameters(). Nelze tedy načíst ani zapsat žádné jednotlivé parametry.
Je třeba poznamenat, že hodnota "Value" vztahující se k jejímu typu (ValueTyp) a její jednotce (Unit) musí ležet v definovaných mezích (RangeOfValues), jinak se zobrazí chybové hlášení. Pokud je hodnota spočítána jako v příkladu, je irelevantní a hodnota vypočítaná pomocí vzorce (Formula) musí ležet v daných mezích, pokud jsou definovány.