Praktische Anwendungen mit Python und RFEM 6 | Generator für 2D-Fachwerkträger
Fachbeitrag
Der kürzlich eingeführte WebService bietet Anwendern die Möglichkeit, mit RFEM 6 in einer Programmiersprache ihrer Wahl zu kommunizieren. Zudem wird die Funktionalität durch unsere High-Level Functions (HLF)-Library erweitert. Die Bibliotheken sind für Python, JavaScript und C# verfügbar. Dieser Beitrag behandelt einen praktischen Anwendungsfall zur Programmierung eines 2D-Truss-Generators (Fachwerkträger in 2D) mit Python. Das ist "Learning by doing", wie es so schön heißt.
Überblick
Die Leistungsfähigkeit von RFEM 6 über die grafische Benutzeroberfläche (GUI) hinaus zu nutzen und den Modell- und Bemessungsprozess zu steuern bzw. zu automatisieren, ist ein erheblicher Vorteil. Die Möglichkeiten der Programmierung mit RFEM 6 gehen jedoch über die reine automatische Steuerung hinaus. Anwender können die HLF-Bibliothek in RFEM 6 mit anderen gängigen HLF-Bibliotheken kombinieren, um maßgeschneiderte Anwendungen zu entwickeln.
In diesem Beitrag wird ein Generator für 2D-Fachwerkträger vorgestellt. Der 2D-Fachwerkgenerator wurde in Python geschrieben und nutzt leistungsstarke Python-Bibliotheken wie PyQt und Numpy zusammen mit der RFEM-HLF. Das Endergebnis ist eine grafische Benutzeroberfläche, die eine flexible Erzeugung von Fachwerkträgern ermöglicht.
Grundlagen
In diesem Beitrag werden nur Teile des Codes hervorgehoben, der eigens für seine Anwendung bei der Entwicklung des 2D-Fachwerkgenerators geschrieben wurde. Die Grundlagen der Programmierung mit RFEM 6 und Python finden Sie in unserer kurzen 6-teiligen Videoreihe unter folgendem Link:
Code
Der Code für das vorliegende Beispiel ist in der bereits erwähnten HLF-Bibliothek (RFEM_Python_Client/Examples/TrussGenerator_2D) zu finden. Der Code wird als Open Source bereitgestellt und soll den Nutzern hoffentlich Anregungen für eigene Projekte geben. Details zum Arbeiten mit der HLF in RFEM (z. B. Klonen des Repositorys) werden in der oben verlinkten Videoreihe erläutert.
Bestimmte Teile des Codes
Try and Except
Wie bereits erwähnt, werden in diesem Beispiel viele verschiedene Bibliotheken in Verbindung mit der RFEM-HLF verwendet (z. B. Numpy und PyQt5). Sollten Anwender keine bestimmte Bibliothek installiert haben, führt ein "Import"-Befehl zu einem Fehler. Um dieses potenzielle Problem zu umgehen, werden Try- und Except-Blöcke verwendet. Der "Import" fällt unter den try-Block und sollte dieser fehlschlagen, geht der Code in den except-Block, der den Anwender auffordert, die erforderlichen Bibliotheken mit pip zu installieren.
GUI mit PyQt5 erstellen
PQt5 ist eine Bibliothek zur Erstellung von GUIs. Ein Großteil des Codes besteht aus den Definitionen und Anweisungen, die PyQt5 zum Aufbau der 2D Truss Generator-GUI benötigt.
Eine Dokumentation zur Verwendung von PyQt5 finden Sie unter diesem Link:
Eine Fülle von Tutorials findet man auch auf YouTube.
Definition des Fachwerkträgers
Mit den RFEM-HLFs kann ein Fachwerkträger schnell definiert werden. Wenn Sie Unterstützung bei der Programmierung des Fachwerkträgers brauchen, dann schauen Sie sich das sechste Video in der oben genannten Videoreihe an.
Variablen, die in den PyQt5-Definitionen initialisiert wurden, werden hier auch als Argumente für die RFEM-Fachwerkträgerdefinitionen integriert. Dadurch wird eine Interoperabilität zwischen den beiden Bibliotheken hergestellt.
Eine Reihe von try-, except- und if-Anweisungen werden implementiert, um die in der GUI bereitgestellten Informationen zu überprüfen.
Schlussbemerkungen
Dieser Beitrag soll einen kurzen Überblick darüber geben, wie die GUI eines parametrischen 2D-Truss Generators erstellt wurde. Sollten zusätzliche Informationen erforderlich sein, verwenden Sie bitte die Kommentarfunktion unten. Wir werden Ihnen gerne antworten.
Autor

Björn Steinhagen, B.Sc.
Product Engineering
Herr Steinhagen unterstützt die Entwicklung und Qualitätssicherung der Dlubal-Programme.
Schlüsselwörter
Python Webservice GUI Programmierung
Links
- PyQt5-Referenzhandbuch
- Programmieren mit RFEM 6 und Python | 006 Beispiel | Ebenes Fachwerk
- E-Learning Videos | Programmieren mit RFEM 6 und Python
Schreiben Sie einen Kommentar...
Schreiben Sie einen Kommentar...
- Aufrufe 764x
- Aktualisiert 24. Januar 2023
Kontakt
Haben Sie Fragen oder brauchen Sie einen Rat? Kontaktieren Sie uns über unseren kostenlosen E-Mail-, Chat- bzw. Forum-Support oder nutzen Sie die häufig gestellten Fragen (FAQs) rund um die Uhr.
-
Die Lastverteilung auf meine Stäbe sieht anders aus, wenn die Lastübertragungsfläche im Vergleich zu den Lastassistenten verwendet wird. Was ist der Grund dafür?
- Mein Träger hat eine kontinuierliche seitliche Abstützung und daher ist Biegedrillknicken (BGDK) nicht von Belang. Wie definiere ich die Knicklänge?
- Ich erhalte eine Fehlermeldung „Flächen mit inkompatiblem Typ... (Flächen in der obersten Ebene von Geschossen müssen vom Typ "Lastübertragung" sein), wenn ich die Berechnung ausführe. Was ist der Grund dafür?
- Wie kann ich effektiv an mehreren Flächen Liniengelenke definieren?
- Wie werden die Überfestigkeitsbeiwerteo in die ASCE 7-Lastkombinationen einbezogen?
- Wie kann ich den/die Redundanzfaktor(en) ρ in die Lastkombinationen nach ASCE 7 einbeziehen?
- Meine Nutzlast ist kleiner gleich 100 psf. Wie kann ich den reduzierten Lastfaktor in den Lastkombinationen nach ASCE 7 berücksichtigen?
- Ich kann die seismischen Lastfälle in meinen generierten ASCE 7-Lastkombinationen (LK) nicht finden. Wie kann ich sie hinzufügen?
- Wie erstelle ich in RFEM 6 eine Imperfektion auf Basis einer Eigenform?
Produkte zu diesem Thema