336x
002165
2021-01-12

[ZH] 常见问题 004903 | 如何通过 COM 接口编辑参数列表?

问题:
如何通过 COM 接口编辑参数列表?

答案:
模型的参数可以通过使用 IModel 接口进行修改(从 IModel3 开始):

子测试参数()

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

iApp.LockLicense

将 j 调暗为整数
j = iApp.GetModelCount

Dim iMod As RFEM5.IModel3
设置 iMod = iApp.GetActiveModel

出错时转到 e

Dim formParams() As RFEM5.FormulaParameter

' 获取所有公式参数
formParams = iMod.GetFormulaParameters

' 删除所有公式参数
iMod.CleanFormulaParameters

' 设置公式参数列表
ReDim 保留 formParams(0 到 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 = "新建参数"
formParams(UBound(formParams, 1)).Formula = "b/3"
formParams(UBound(formParams, 1)).RangeOfValues = "(3;5.5")

iMod.SetFormulaParameters formParams

e:

如果 Err.Number 0 那么 MsgBox Err.description, vbCritical, Err.Source
iMod.GetApplication.UnlockLicense
设置 iMod = 无

末端接头

所有参数只能通过使用 GetFormulaParameters() 函数读出。 使用函数 SetFormulaParameters() 可以将修改后的或者新建的参数以列表的形式重新传递给用户。 因此,不能读取或写入任何参数。

需要注意的是,“值”的类型(ValueTyp) 和单位(Unit) 必须在定义的范围(RangeOfValues) 内,否则会出现错误消息。 如果该值是计算出来的,如在示例中,则无关紧要,如果定义了极限值,那么使用公式 (Formula) 计算的值必须在极限值范围内。