VBA中的COM接口| 4.1框架优化

技术文章

This article was translated by Google Translator View original text

本系列文章的第4.1和4.2部分描述了使用RF- / STEEL EC3附加模块优化框架。 第五部分介绍如何连接模块并获取相关的杆件。 在前面部分已经说明的元件不再说明了。

图片 01 - 系统

过滤相关会员

目标是仅将某个截面的杆件传递给RF- / STEEL EC3设计。在下面的例子中,对所有具有IPE 300截面的杆件进行过滤。为此必须首先从主程序得到所有的截面:

' Create a string of a desired cross‑section
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Get all cross-sections from RFEM
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Lopp over all cross-sections
Dim crsc_no As Long
crsc_no = -1
DimAs Long
For i = 0 To UBound(crscs, 1)
' If the cross-section description is right, save the cross-section number
If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
crsc_no = crscs(i).No
Exit For
End If
Next i

' Quit the program if the desired cross-section was not found
If crsc_no = -1 Then
Err.Raise 513, "Get cross-section number", "No cross-section with "" " & crsc_desc & " "" within its description found!"
End If

尽可能使截面描述同步。为此,首先通过“LCase”将截面描述以及要搜索的字符串设置为小写字母,然后在截面描述中搜索字符串。如果找不到合适的截面,则截面编号保持为-1,然后通过中止请求并确认。

在该步骤之后,可以知道截面编号,并且可以搜索具有该截面编号的杆件。只有在杆件开始和结束处具有该横截面的杆件才能被采用:

' Create string for the list of members and set it to zero
Dim mems_str As String
mems_str = vbanullstr

' Get all members from RFEM
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Lopp over all members
For i = 0 To UBound(mems, 1)
' If a member has this cross-section number at the start and the end,
' then take this number in the string
If mems(i).EndCrossSectionNo = crsc_no Then
If mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNo Then
mems_str = mems_str & mems(i).No & ","
End If
End If
Next i

' Quit the program if no member was found
If mems_str = vbanullstr Then
Err.Raise 514, "Get members", "No member with cross-section "" " & crsc_desc & " "" found!"
End If

获取附加模块接口

模块的链接与RFEM或RSTAB的链接完全相同。唯一的区别是打开一个已打开的实例或打开一个新实例之间没有区别,因为总有一个已经打开的实例:

' Get interface for the module
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule( "STEEL_EC3" )

接着删除所有模块的情况:

' Get number of existing module cases
Dim count As Long
count = iStec3.moGetCaseCount

' If there are any cases, always delete the first one in the table
If count > 0 Then
For i = 0 To count - 1
iStec3.moDeleteCase i, AT_INDEX
Next
End If

现在,您可以创建所需的大小写,然后使用之前创建的字符串输入要设计的杆件。

' Create the 'Optimization' module case
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization" )

' Set members for design
iStec3Case.moSetMemberList mems_str

最后但并非最不重要的是,您可以输入所需的荷载组合:

' Set load combinations
Dim iStec3_uls_loads(0 To 2) As STEEL_EC3.ULS_LOAD

iStec3_uls_loads(0).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(0).No = 1
iStec3_uls_loads(0).Type = ILOAD_GROUP

iStec3_uls_loads(1).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(1).No = 2
iStec3_uls_loads(1).Type = ILOAD_GROUP

iStec3_uls_loads(2).DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads(2).No = 3
iStec3_uls_loads(2).Type = ILOAD_GROUP

iStec3Case.moSetULSLoads iStec3_uls_loads

摘要和概述

本文所述的步骤可用于所有可由COM控制的模块。源代码和Excel文件的帮助使您可以更好地理解主题。在接下来的文章中,我想深入研究一下这个问题,并解释一下模块中元素和主程序之间的联系。

下载

更多信息

联系我们

Kontakt zu Dlubal

如果您有任何关于我们产品的问题或者建议,请联系我们的技术支持或者搜索我们的问题和解答 (FAQs)。

+49 9673 9203 0

(可要求接中文热线)

info@dlubal.com

RFEM 主程序 RFEM
RFEM 5.xx

主程序

结构设计与有限元­分析软件(FEA)可以用于建立 平面与空间结构模型,适用于由杆件、面、 板、墙、折板、膜、壳、实体以及接触单元等的建模与分析计算。

首个许可价格
3,540.00 USD
RFEM 钢结构和铝合金结构
RF-STEEL EC3 5.xx

附加模块

按照 Eurocode 3 的钢结构杆件设计

首个许可价格
1,480.00 USD
RFEM 其他附加模块
RF-COM 5.xx

附加模块

RFEM 可编程序的 COM 接口

首个许可价格
580.00 USD