VBA中的COM接口| 4.1帧优化

技术文章

该系列的4.1和4.2部分是关于在附加模块RF- / STEEL EC3的帮助下优化框架。 第五部分介绍了模块的连接和相关条的检索。 已经在前面部分中解释过的元素将不再讨论。

图01 - 系统

过滤掉相关的栏

目标应该是在EC3模块的尺寸设计中仅接收特定横截面的杆。对于以下示例,将过滤掉横截面为“IPE 300”的所有条形。为此,首先获取主程序的所有横截面:

' Zeichenkette des gewünschten Querschnitts anlegen
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Alle Querschnitte aus RFEM holen
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Schleife über alle Querschnitte
Dim crsc_no As Long
crsc_no = -1
DimAs Long
For i = 0 To UBound(crscs, 1)
' Wenn die Querschnittsbezeichung stimmt, Querschnittsnummer speichern
If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
crsc_no = crscs(i).No
Exit For
End If
Next i

' Programm beenden, wenn der gewünschte Querschnitt nicht gefunden wurde
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,然后可以通过中止查询和确认。

在该步骤之后,横截面编号是已知的,并且可以搜索具有该横截面编号的条。只有在开始和结束时具有此横截面的钢筋:

' Zeichenkette für Stabliste anlegen und zu null setzen
Dim mems_str As String
mems_str = vbanullstr

' Alle Stäbe aus RFEM holen
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Schleife über alle Stäbe
For i = 0 To UBound(mems, 1)
' Wenn ein Stab diese Querschnittsnummer am Anfang und am Ende hat,
' dann wird dessen Nummer in die Zeichenkette übernommen
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

' Programm beenden, wenn kein Stab gefunden wurde
If mems_str = vbanullstr Then
Err.Raise 514, "Get members" , "No member with cross-section "" " & crsc_desc & " "" found!"
End If

获取附加模块的界面

与模块的连接就像与RFEM或RSTAB的连接一样。唯一的区别是打开已打开的实例或打开新实例之间没有区别,因为总有一个已经打开的实例:

' Interface für Modul holen
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule( "STEEL_EC3" )

Als nächstes werden alle vorhandenen Modulfälle gelöscht:

' Anzahl der vorhandenen Modulfälle holen
Dim count As Long
count = iStec3.moGetCaseCount

' Falls Fälle vorhanden sind, immer den ersten in der Tabelle löschen
If count > 0 Then
For i = 0 To count - 1
iStec3.moDeleteCase i, AT_INDEX
Next i
End If

然后可以创建所需的大小写,并可以通过先前创建的字符串输入设计的条形:

' Modulfall "Optimization" anlegen
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization" )

' Stäbe für Bemessung setzen
iStec3Case.moSetMemberList mems_str

最后,添加了所需的负载组合:

' Lastkombinationen setzen
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