1024x
001571
2020-07-20

[ZH] 知识库 001639 | 使用 VBA 将肋转换为面模型和结果梁

主题:
使用 VBA 将肋转换为面模型和结果梁

说明:
如果肋是非线性设计的一部分或与后面的墙刚性连接,则应使用面而不是杆件进行建模。 为了使肋部分仍然可以作为一个杆件进行设计,需要一个具有正确偏心的结果杆件,它将面内力转换为杆件内力。

论文摘要:
因为使用结果杆件对这样基于面的肋进行建模比创建“肋”类型的杆件复杂得多,下面的 EXCEL-VBA 程序将把基于肋的杆件转换为面模型,包括结果杆件。 [SCHOOL.INSTITUTION]

将肋杆件转换为面模型需要按照以下步骤操作:

1.
读取肋参数(截面、方向等)
2.
创建肋面
3.
创建结果梁
4.
删除肋杆件

在下文中,我们将举例说明整个源代码的节选。 您可以在本文的末尾下载完整的代码。

读取肋参数

只需从程序界面中选择要变形的肋,即可进行变形。 EnableSelections 选择功能 只要 EnableSelections 的值为 true,只有选定的单元会从 RFEM 中读取。 所选杆件的信息显示如下。

'获取活动模型的接口
设置 iMod = iapp.getactivemodel

'获得(结构)模型数据的接口
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData

'获取选择的杆件
iModData.EnableSelections True

Dim mems() As RFEM5.Member
Dim selMem As RFEM5.Member
mems = iModData.GetMembers
selMem = mems(0)

iModData.EnableSelections False

肋的建模需要输入以下参数:

肋截面、面编号和有效宽度
肋方向
肋材料

在 RFEM 中,肋是一种杆件类型。 通过 COM 接口进行编程意味着必须通过两种不同的接口来获取肋的数据。 这里给杆件和肋提供了接口。 肋的接口可以通过 IModelData.GetRib 获得。 GetRib 通过 Member.Rib No 获取杆件中包含的肋编号。

'得到肋的参数
' ###################
Dim iRb As RFEM5.IRib
Set iRb = iModData.GetRib(selMem.Ribno, atno)

在 RFEM5.Rib 中选择“Rb”选项卡
selRb = iRb.GetData

Dim rbCrsc As RFEM5.RibCrossSection
rbCrsc = iRb.GetRibCrossSection

与肋连接的部分有两种: 分别是肋结构体和肋截面设置肋的基本数据。 肋选项卡包含面的编号,肋的位置和有效宽度。 .

杆件的局部坐标系为杆件局部坐标系。 用户可以通过杆件接口访问杆件的坐标系。 IMemer.GetLocalCoordinateSystem 函数返回坐标系统结构。

Dim coordinate As RFEM5.CoordinateSystem
cosy = iModData.GetMember(selMem.no, AtNO).GetLocalCoordinateSystem(0#).GetData

GetLocalCoordinateSystem 仍然需要杆件的 x 位置,这里已经设置为 0.0 或起点。 除了上述参数外,还需要考虑杆件的材料,可以通过杆件的截面来确定。

Dim selCrsc As RFEM5.CrossSection
selCrsc = iModData.GetCrossSection(selMem.StartCrossSection编号, At编号).GetData

创建肋面

在程序中最初只计算位于 z 轴正方向上的直的肋骨。 由于肋可以位于倾斜的平面上,所以面的创建应使用杆件方向。 杆件局部坐标系的变量 cosy 包含了局部坐标轴 cosy.AxisZ 的方向向量及其三个值,x,y,z。 这个向量被标准化,乘以肋的高度,就是肋下边缘的方向和距离。 对于肋面的边界线,该向量乘以肋的高度,然后分别加上始端和末端节点。 在肋面下边缘线上定义了两个末端节点。 注意:肋高包括有效宽度的一半面厚度。 为简化计算,这里只使用肋截面的第一条侧(局部坐标系为-y)的面厚度(上翼缘厚度)。 设置好节点后,可以进行边界...