944x
004903
12.1.2021

Dotaz

Jak mohu upravit seznam parametrů pomocí rozhraní COM?


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.