问题:
如何通过 COM 接口修改有限元网格设置?
答案:
在 IFeMeshSettings 接口中可以修改基本的有限元网格设置。 该接口位于 IModel > IModelData > ICalculation 下。 图 01 显示了可以更改/显示的单元。
这是一个有限元单元的目标长度设置为 100 mm 的代码示例。 此外,激活相同单元尺寸的杆件分段,并将最小分段设置为 3 个单元:
子 mesh_params()
Dim iApp As RFEM5.Application
' 获取模型数据接口
Dim iModel As RFEM5.model
Set iModel = GetObject(, "RFEM5.Model")
出错时转到 e
如果不是 iModel 那么
' 获取申请和加锁许可证接口
设置 iApp = iModel.GetApplication()
iApp.LockLicense
' 获取模型数据接口
Dim iModdata As RFEM5.IModelData2
设置 iModdata = iModel.GetModelData
' 获取计算接口
Dim iCalc As RFEM5.ICalculation2
设置 iCalc = iModel.GetCalculation()
' 获取网格设置接口
Dim iMeshSet As RFEM5.IFeMeshSettings
设置 iMeshSet = iCalc.GetFeMeshSettings
' 获取一般网格设置
Dim meshGen As RFEM5.FeMeshGeneralSettings
meshGen = iMeshSet.GetGeneral
meshGen.ElementLength = 0.1
' 设置新的网格设置
iModdata.PrepareModification
iMeshSet.SetGeneral meshGen
iModdata.FinishModification
' 获取网格杆件设置
Dim meshMem As RFEM5.FeMeshMembersSettings
meshMem = iMeshSet.GetMembers
meshMem.DivideStraightMembers = True
meshMem.ElementLength = 0.1
meshMem.MinStraightMemberDivisions = 3
' 设置新的网格杆件
iModdata.PrepareModification
iMeshSet.SetMembers meshMem
iModdata.FinishModification
iApp.UnlockLicense
End If
e: 如果 Err.Number 0 则
MsgBox Err.description, , Err.Source
End If
iApp.UnlockLicense
设置 iApp = 无
设置 iModel = 无
末端接头
该子程序还包含一个错误截取程序 (On Error GoTo e),并且与修改其他单元一样,需要 Prepare-/FinishModification 块。 这里块是通过 IFeMeshSettings 接口创建的。