Relevante Stäbe herausfiltern
Ziel soll es sein, dass nur Stäbe eines bestimmten Querschnitts in die Bemessung des EC3-Moduls übernommen werden. Für das folgende Beispiel sollen alle Stäbe mit dem Querschnitts „IPE 300“ herausgefiltert werden. Dazu werden zuerst alle Querschnitte vom Hauptprogramm geholt:
' Zeichenkette des gewünschten Querschnitts anlegen
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
Dim i As 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
Der Abgleich der Querschnittsbezeichnung soll möglichst allgemein erfolgen. Dazu wird zunächst über "LCase" sowohl die Querschnittsbezeichnung als auch die zu suchende Zeichenkette auf Kleinbuchstaben gesetzt und dann nach der Zeichenkette in der Querschnittsbezeichnung gesucht. Falls kein passender Querschnitt gefunden wurde, bleibt die Querschnittsnummer auf -1, was dann abgefragt und mit einem Abbruch quittiert werden kann.
Nach diesem Schritt ist die Querschnittsnummer bekannt und die Stäbe mit dieser Querschnittsnummer können gesucht werden. Dabei sollen nur die Stäbe übernommen werden, welche am Anfang und am Ende diesen Querschnitt haben:
' 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
Interface des Zusatzmoduls holen
Die Anbindung an ein Modul gestaltet sich genau wie die Anbindung an RFEM oder RSTAB. Einziger Unterschied ist, dass hier nicht unterschieden wird zwischen dem Öffnen einer bereits offenen Instanz oder dem Öffnen einer neuen Instanz, da hier immer eine bereits offene Instanz vorliegt:
' 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
Danach kann der gewünschte Fall angelegt und über die zuvor erstellte Zeichenkette die Stäbe für die Bemessung eingetragen werden:
' 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
Zu guter Letzt werden noch die gewünschten Lastfallkombinationen eingetragen:
' 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
Zusammenfassung und Ausblick
Die hier dargestellten Vorgehensweisen sind stellvertretend für alle Module, welche mit COM angesteuert werden können. Der Quellcode und die Excel-Datei helfen, um die Thematik noch besser nachvollziehen zu können. Im nächsten Beitrag soll dann noch mehr in die Tiefe gegangen und die Verknüpfung zwischen Elementen im Modul und im Hauptprogramm hergestellt werden.