问题:
如何通过 DYNAM Pro 中的 COM 接口输入或读出反应谱?
答案:
RFEM 和 RSTAB 中通过 COM 接口可以读取或创建用户自定义反应谱。
为了进行转换,需要通过 RFEM 模型 (IModel) 的接口获得模块的接口 (IDynamModule)。 然后使用该接口创建模块案例(IModuleCase)。 IModuleCase 中包含 GetRSParams 函数,该函数可用于读取反应谱的参数。 另一方面,SetRSParams 函数可以写入新数据。 以下示例代码对此进行了说明:
Dim iApp As RFEM5.Application
Dim iMod As RFEM5.model
Set iApp = GetObject(, "RFEM5.Application")
将 rs_no 变暗为整数
rs_no = 1
出错时转到 e
' 检查 RS-COM 许可证并锁定应用程序以供 COM 使用。
iApp.LockLicense
设置 iMod = iApp.GetActiveModel
' 获取模块接口
Dim iDyn As IDynamModule
Set iDyn = iMod.GetModule("DynamPro")
' 获取模块案例接口
将 iDynCase 调暗为 IModuleCase
设置 iDynCase = iDyn.GetData
' 设置反应谱参数
将 rspara 调暗为 RSParam
rspara = iDynCase.GetRSParams(rs_no)
将 rs_spec(0 到 10) 调暗为 RSTableRow
将索引调暗为整数
指数 = 0
rs_spec(index).s = 0.6
rs_spec(index).T = 0
指数 = 1
rs_spec(index).s = 1.33
rs_spec(index).T = 0.153
指数 = 2
rs_spec(index).s = 1.33
rs_spec(index).T = 0.4
指数 = 3
rs_spec(index).s = 1.204
rs_spec(index).T = 0.443
指数 = 4
rs_spec(index).s = 1.07
rs_spec(index).T = 0.5
指数 = 5
rs_spec(index).s = 0.7
rs_spec(index).T = 0.761
指数 = 6
rs_spec(index).s = 0.508
rs_spec(index).T = 1.051
指数 = 7
rs_spec(index).s = 0.367
rs_spec(index).T = 1.453
指数 = 8
rs_spec(index).s = 0.267
rs_spec(index).T = 1.995
指数 = 9
rs_spec(index).s = 0.16
rs_spec(index).T = 2.584
指数 = 10
rs_spec(index).s = 0.16
rs_spec(index).T = 5
rspara.UserDefinedTable = rs_spec
rspara.Comment = "测试 rs"
rspara.DefinitionType = ResponseSpectraType.UserDefinedRS
rspara.description = "通过 COM 测试 rs"
rspara.编号 = rs_no
iDynCase.SetRSParams rs_no, rspara
e: 如果 Err.Number 0 那么 MsgBox Err.description, , Err.Source
iMod.GetApplication.UnlockLicense
设置 iMod = 无
设置 iApp = 无
反应谱是根据 EN 1998‑1:2010 创建的,共有 11 个点。 首先,创建一个包含 11 个元素的 RSTableRow 类型的数组,并填充数据,然后将其保存在 UserDefinedTable 属性下。 使用 SetRSParams 命令进行传递。