831x
004688
2020-09-01

问题

如何通过 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 接口创建的。


作者

Günthel 先生为Dlubal 软件客户提供技术支持。