1029x
001571
20. Juli 2020

[EN] KB 001639 | Transformation einer Rippe in ein Flächenmodell mit Ergebnisstab mittels VBA

Thema:
Transformation einer Rippe in ein Flächenmodell mit Ergebnisstab mittels VBA

Anmerkung:
Wenn eine Rippe Teil einer nichtlinearen Bemessung ist oder biegesteif an folgende Wände übergeht, sollte statt eines Stabes eine Fläche für die Modellierung verwendet werden. Damit die Rippe dennoch als Stab bemessen werden kann, wird ein Ergebnisstab mit der richtigen Exzentrizität benötigt, welcher die Flächenschnittgrößen in Stabschnittgrößen transformiert.

Beschreibung:
Da die Modellierung einer solchen flächenbasierten Rippe mit Ergebnisstab deutlich komplizierter ist als das Anlegen eines Stabes vom Typ Rippe, soll das folgende Programm in EXCEL-VBA die Umwandlung einer stabbasierten Rippe in ein Flächenmodell samt Ergebnisstab übernehmen.

Für die Transformation einer Rippe in ein Flächenmodell sind folgende Schritte notwendig:

1.
Rippenparameter auslesen (Querschnitt, Orientierung et cetera)
2.
Rippenfläche anlegen
3.
Ergebnisstab anlegen
4.
Rippenstab löschen

Im Folgenden werden exemplarisch Ausschnitte aus dem gesamten Quellcode verwendet. Der vollständige Code kann als Datei heruntergeladen werden.

Rippenparameter auslesen

Der Nutzer soll die Möglichkeit haben, die zu transformierende Rippe per Selektion in der Programmoberfläche auszuwählen. Dazu muss mit der Funktion EnableSelections gearbeitet werden. Solange EnableSelections mit true aktiviert wurde, werden nur selektierte Elemente aus RFEM gelesen. Das Auslesen des selektierten Stabes sieht dann wie folgt aus.

'   get interface of active model
Set iMod = iApp.GetActiveModel

'   get interface of (structural) model data
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData

'   get selected member
iModData.EnableSelections True

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

iModData.EnableSelections False

Für die Modellierung der Rippe werden folgende Parameter benötigt:

Rippenquerschnitt, Flächennummern und mitwirkende Breiten
Rippenorientierung
Material der Rippe

In RFEM ist eine Rippe ein Stabtyp. Für die Programmierung über die COM-Schnittstelle bedeutet das, dass die Daten einer Rippe über zwei verschiedene Schnittstellen geholt werden müssen. Es gibt zum einen die Schnittstelle für den Stab und zum anderen die Schnittstelle für die Rippe. Das Interface zu einer Rippe kann über IModelData.GetRib geholt werden. GetRib erwartet die Rippennummer, welche im Stab über Member.RibNo enthalten ist.

'   get parameters of rib
'   #####################
Dim iRb As RFEM5.IRib
Set iRb = iModData.GetRib(selMem.RibNo, AtNo)

Dim selRb As RFEM5.Rib
selRb = iRb.GetData

Dim rbCrsc As RFEM5.RibCrossSection
rbCrsc = iRb.GetRibCrossSection

Das Interface zur Rippe bietet dann zwei verschiedene Elemente an: die allgemeinen Rippendaten über die Struktur Rib und die Daten zum Rippenquerschnitt über RibCrossSection. Rib beinhaltet die Flächennummern, die Lage der Rippe und die mitwirkenden Breiten. RibCrossSection beinhaltet die Bezeichnung und die Abmessungen des internen Rippenquerschnitts, welcher auch von RF-BETON Stäbe verwendet wird (ITCU).

Zusätzlich wird noch die Orientierung benötigt, welche über das lokale Achsensystem des Stabes verfügbar ist. Zugang zum Achsensystem bekommt man über die Schnittstelle zum Stab. Die Funktion IMemer.GetLocalCoordinateSystem gibt die Struktur CoordinateSystem zurück.

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

GetLocalCoordinateSystem erwartet noch die x-Stelle des Stabes, welche hier auf 0.0 beziehungsweise den Anfang gesetzt wurde. Neben den genannten Parametern wird noch das Material des Stabes benötigt, welches man über den Querschnitt des Stabes erhält.

Dim selCrsc As RFEM5.CrossSection
selCrsc = iModData.GetCrossSection(selMem.StartCrossSectionNo, AtNo).GetData

Rippenfläche anlegen

Das Programm wird zunächst nur für gerade Rippen auf der positiven z-Seite angelegt. Da die Rippe auch schräg im Raum liegen kann, sollte die Fläche mit Hilfe der Staborientierung angelegt werden. Die Variable cosy für das lokale Stabachsensystem beinhaltet den Richtungsvektor für die lokale z-Achse cosy.AxisZ mit seinen drei Werten x,y, und z. Dieser Vektor ist normiert, sodass er multipliziert mit der Höhe der Rippe die Entfernung und Richtung der Unterkante der Rippe angibt. Für die Begrenzungslinien der Rippenfläche wird also dieser Vektor mit der Rippenhöhe multipliziert und jeweils zum Anfangs- und Endknoten addiert. Damit ergeben sich die beiden Endknoten der Unterkantenlinie der Rippenfläche. Zu beachten ist noch, dass zur Rippenhöhe auch die halbe Flächendicke der mitwirkenden Breite gehört. Zur Vereinfachung wird nur die Flächendicke der ersten Seite (-y im lokalen Achsensystem) aus dem Rippenquerschnitt verwendet (UpperLeftFlangeThickness). Nachdem die Knoten zur Verfügung stehen, können die Begrenzungsl...