Vorbereitungen
Für das Beispiel und die Programmierung wird Folgendes benötigt:
- RFEM 6
- EXCEL
- Python
- Dlubal RFEM_Python_Client
- Python-Bibliothek xlwings
- Ein Editor zum Schreiben des Programms
Ausgehend davon, dass RFEM 6, EXCEL und Python bereits installiert sind, muss als Nächstes die Bibliotheken RFEM_Python_Client installiert werden. Wir bieten hierfür diverse Lernvideos und Hilfeseiten an. Folgende Links sind für die Installation besonders wichtig. Sie zeigen die Installation und die ersten Schritte in der Programmierung:
- Bevor Sie beginnen
- Programmieren mit RFEM 6 und Python | 003 Installierung
- Programmieren mit RFEM 6 und Python | 004 Bibliotheken
- Programmieren mit RFEM 6 und Python | 005 Beispiel | Kragarm
In den Videos wird auch auf Programmeditoren eingegangen. Für das Beispiel ist unerheblich, welcher Editor genutzt wird. Danach muss noch xlwings installiert werden, Hinweise dazu finden Sie auf der Webseite zur Bibliothek:
Der vollständige Code zum Beispiel befindet sich im RFEM_Python_Client in folgendem Pfad:
- RFEM_Python_Client/tree/main/Examples/SteelDesign/
Die Datei SteelDesignExcel.py ist das Python-Programm (Script) und SteelDesignExcel.xlsm ist die zugehörige EXCEL-Datei.
Beispiel für Programmierung
Die Bibliothek xlwings bietet mehrere Möglichkeiten zur Kombination von Python und EXCEL. Es ist zum einen möglich, aus einem Python-Programm (besser Python-Script) heraus EXCEL zu steuern und auch aus EXCEL heraus ein Python-Script zu starten. Beim Starten aus EXCEL kann man entweder das eingebaute Plugin nutzen oder eine Sub-Routine erstellen, welche dann das Python-Script startet. Die Details dazu können hier eingesehen werden:
Das Beispiel nutzt die Variante, bei der das Python-Script über das eingebaute Plugin gestartet wird (siehe Abbildung). Für diese Nutzung gibt es zwei Voraussetzungen. Das Python-Script muss den gleichen Namen haben wie die EXCEL-Datei und es muss eine main-Funktion enthalten, da diese dann über das Plugin ausgeführt wird.
Hier der erste Teil der main-Funktion:
...
# Open the excel sheet
wb = xw.Book.caller()
# Read inputs
inputSheet = wb.sheets('Inputs')
frame_number = 6
width = 10
frame_length = 4
console_height = 3
column_height = 4
gable_height = 2
# Geometric Inputs
frame_number = int(inputSheet["G6"].value) # number of frames
width = inputSheet["G7"].value # Width of Frame
frame_length = inputSheet["G8"].value # Frame Length
console_height = inputSheet["G9"].value # Height of Console
column_height = inputSheet["G10"].value # Height of Column
gable_height = inputSheet["G11"].value # Height of Gable
...
Wenn xlwings aus einem Python-Script direkt (nicht über EXCEL) genutzt wird, muss zuerst eine Datei geöffnet werden:
wb = xw.Book('userSheet.xlsm')
Wenn die Nutzung aus EXCEL heraus erfolgt, dann wird die Anbindung über den folgenden Befehl hergestellt:
wb = xw.Book.caller()
Die Variable wb beinhaltet die komplette Arbeitsmappe (Workbook) wo mithilfe der Methode sheets() dann einzelne Arbeitsblätter herausgeholt werden können. Im Beispiel wird das Arbeitsblatt "Inputs" geöffnet und über die eckigen Klammern erfolgt der Zugriff auf einzelne Zellen. Mit der Eigenschaft value kann der Wert einer Zelle ausgelesen oder auch modifiziert werden. Diese Umsetzung ist dann am Ende des Beispiels zu finden:
…
# Writing Results to Output Sheets
nodaldeformation["A2"].value = node_number
nodaldeformation["B2"].value = nodeSupportType
nodaldeformation["C2"].value = nodeDisp_abs
nodaldeformation["D2"].value = nodeDisp_x
nodaldeformation["E2"].value = nodeDisp_y
nodaldeformation["F2"].value = nodeDisp_z
nodaldeformation["G2"].value = nodeRotation_x
nodaldeformation["H2"].value = nodeRotation_y
nodaldeformation["I2"].value = nodeRotation_z
…
Im konkreten Fall wird die Lastkombination 7 ausgelesen. In Abbildung 1 werden die Verformungen der Stäbe in EXCEL dargestellt und zum Vergleich in Abbildung 2 die Ergebnisse aus RFEM 6.
Zusammenfassung
Im Beispiel wird ersichtlich, dass die Nutzung nach dem Einrichten aller erforderlichen Elemente relativ einfach gestaltet ist. EXCEL wird hier vor allem als grafische Oberfläche genutzt und VBA Kenntnisse sind nicht erforderlich. Es ist auch möglich, dass Berechnungen in EXCEL (auch über VBA) durchgeführt werden und Python mit xlwings nur Daten importiert bzw. exportiert.