Os parâmetros de um modelo podem ser modificados através da interface IModel (a partir de IModel3):
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
Só é possível ler todos os parâmetros através da função GetFormulaParameters(). Os parâmetros modificados ou novos podem depois ser transferidos novamente como uma lista utilizando a função SetFormulaParameters(). Assim, nenhum parâmetro individual pode ser lido ou escrito.
Note que o valor "Value" relacionado com o seu tipo (ValueTyp) e a sua unidade (Unit) deve estar dentro dos limites definidos (RangeOfValues), caso contrário aparece uma mensagem de erro. Se o valor é calculado, como no exemplo, é irrelevante e o valor calculado com a fórmula (Formula) deve estar dentro dos limites, caso tenham sido definidos limites.