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 anlegencrsc_desc = "IPE 300"
' Alle Querschnitte aus RFEM holenDim crscs() As RFEM5.CrossSectioncrscs = iModelData.GetCrossSections
' Schleife über alle QuerschnitteDim crsc_no As Longcrsc_no = -1Dim i As LongFor 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 IfNext i
' Programm beenden, wenn der gewünschte Querschnitt nicht gefunden wurdeIf 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 setzenDim mems_str As Stringmems_str = vbanullstr
' Alle Stäbe aus RFEM holenDim mems() As RFEM5.Membermems = iModelData.GetMembers
' Schleife über alle StäbeFor 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 IfNext i
' Programm beenden, wenn kein Stab gefunden wurdeIf 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 holenDim iStec3 As STEEL_EC3.ModuleSet iStec3 = iModel.GetModule("STEEL_EC3")
Als nächstes werden alle vorhandenen Modulfälle gelöscht:
' Anzahl der vorhandenen Modulfälle holenDim count As Longcount = iStec3.moGetCaseCount
' Falls Fälle vorhanden sind, immer den ersten in der Tabelle löschenIf count > 0 Then For i = 0 To count - 1 iStec3.moDeleteCase i, AT_INDEX Next iEnd 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" anlegenDim iStec3Case As STEEL_EC3.ICaseSet iStec3Case = iStec3.moSetCase(1, "Optimization")
' Stäbe für Bemessung setzeniStec3Case.moSetMemberList mems_str
Zu guter Letzt werden noch die gewünschten Lastfallkombinationen eingetragen:
' Lastkombinationen setzenDim iStec3_uls_loads(0 To 2) As STEEL_EC3.ULS_LOAD
iStec3_uls_loads(0).DesignSituation = DS_FUNDAMENTALiStec3_uls_loads(0).No = 1iStec3_uls_loads(0).Type = ILOAD_GROUP
iStec3_uls_loads(1).DesignSituation = DS_FUNDAMENTALiStec3_uls_loads(1).No = 2iStec3_uls_loads(1).Type = ILOAD_GROUP
iStec3_uls_loads(2).DesignSituation = DS_FUNDAMENTALiStec3_uls_loads(2).No = 3iStec3_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.