RFEM 和 RSTAB 中通过 COM 接口可以读取或创建用户自定义反应谱。
为了进行转换,需要通过 RFEM 模型 (IModel) 的接口获得模块的接口 (IDynamModule)。 然后使用该接口创建模块案例(IModuleCase)。 IModuleCase 中包含 GetRSParams 函数,该函数可用于读取反应谱的参数。 另一方面,SetRSParams 函数可以写入新数据。 以下示例代码对此进行了说明:
Dim iApp As RFEM5.ApplicationDim iMod As RFEM5.modelSet iApp = GetObject(, "RFEM5.Application")
将 rs_no 变暗为整数rs_no = 1
出错时转到 e
' 检查 RS-COM 许可证并锁定应用程序以供 COM 使用。iApp.LockLicense
设置 iMod = iApp.GetActiveModel
' 获取模块接口Dim iDyn As IDynamModuleSet iDyn = iMod.GetModule("DynamPro")
' 获取模块案例接口将 iDynCase 调暗为 IModuleCase设置 iDynCase = iDyn.GetData ' 设置反应谱参数将 rspara 调暗为 RSParamrspara = iDynCase.GetRSParams(rs_no) 将 rs_spec(0 到 10) 调暗为 RSTableRow 将索引调暗为整数指数 = 0rs_spec(index).s = 0.6rs_spec(index).T = 0 指数 = 1rs_spec(index).s = 1.33rs_spec(index).T = 0.153 指数 = 2rs_spec(index).s = 1.33rs_spec(index).T = 0.4 指数 = 3rs_spec(index).s = 1.204rs_spec(index).T = 0.443 指数 = 4rs_spec(index).s = 1.07rs_spec(index).T = 0.5 指数 = 5rs_spec(index).s = 0.7rs_spec(index).T = 0.761 指数 = 6rs_spec(index).s = 0.508rs_spec(index).T = 1.051 指数 = 7rs_spec(index).s = 0.367rs_spec(index).T = 1.453 指数 = 8rs_spec(index).s = 0.267rs_spec(index).T = 1.995 指数 = 9rs_spec(index).s = 0.16rs_spec(index).T = 2.584 指数 = 10rs_spec(index).s = 0.16rs_spec(index).T = 5
rspara.UserDefinedTable = rs_specrspara.Comment = "测试 rs"rspara.DefinitionType = ResponseSpectraType.UserDefinedRSrspara.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 命令进行传递。