Die Parameter eines Modell können über die Schnittstelle IModel (ab IModel3) modifiziert werden:
Sub test_parameter()
Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")
iApp.LockLicense
Dim j As Integerj = iApp.GetModelCount
Dim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModel
On Error GoTo e
Dim formParams() As RFEM5.FormulaParameter
' get all formula parametersformParams = iMod.GetFormulaParameters
' delete all formula parametersiMod.CleanFormulaParameters
' set list of formula parametersReDim 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 = LengthUnitTypeformParams(UBound(formParams, 1)).Value = 0formParams(UBound(formParams, 1)).ValueType = DoubleTypeformParams(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.SourceiMod.GetApplication.UnlockLicenseSet iMod = Nothing
End Sub
Es können dabei nur alle Parameter ausgelesen werden mit Hilfe der Funktion GetFormulaParameters(). Die veränderten oder neuen Parameter können dann wieder als Liste übergeben werden mit der Funktion SetFormulaParameters(). Es können also keine einzelnen Parameter ausgelesen oder geschrieben werden.
Zu beachten ist, dass der Wert "Value" bezogen auf seinen Typ (ValueTyp) und seiner Einheit (Unit) innerhalb der definierten Grenzen (RangeOfValues) liegen muss, sonst wird eine Fehlermeldung ausgegeben. Falls der Wert berechnet wird, wie im Beispiel, ist der Wert irrelevant und der mit der Formel (Formula) berechnete Wert muss in den Grenzen liegen, falls Grenzen definiert sind.