580x
005367
23. März 2023

Knotenverformung mit Python auslesen

Wie kann ich mit einem Python-Programm die Verformung an einem bestimmten Knoten auslesen?


Antwort:

In dem Beispielprogramm wird zunächst ein Kragträger aus einem IPE 200 erzeugt. Dieser wird mit einer Stablast von 3,5 kN belastet und es wird die Berechnung durchgeführt.

In der Zeile 34 wird auf diese Tabelle zugegriffen:

Die Methode ResultTables.NodesDeformations() benötigt 3 Argumente. Zuerst wird festgelegt, welche Art von Ergebnissen ausgelesen werden sollen. Das können Ergebnisse von

  • Lastfällen
  • Lastkombinationen
  • Ergebniskombinationen
  • Bemessungssituationen
  • Bauzuständen

sein.

Dann wird die Nummer des Lastfalls, der Lastkombination usw. angegeben. Zum Schuss wird die Knotennummer der Methode übergeben.

Der Rückgabewert d der Methode ist eine Liste, die ein Dictonary enthält. In der Zeile 37 wird d komplett ausgegeben. In der Zeile 40 wird gezeigt, wie auf einen speziellen Wert zugegriffen werden kann. [0] ist dabei der Listen-Index und ['displacement_z'] der Key des Dictonarys.


            

from RFEM.enums import *
from RFEM.initModel import *
from RFEM.BasicObjects.material import Material
from RFEM.BasicObjects.section import Section
from RFEM.BasicObjects.node import Node
from RFEM.BasicObjects.member import Member
from RFEM.TypesForNodes.nodalSupport import NodalSupport
from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings
from RFEM.LoadCasesAndCombinations.loadCase import LoadCase
from RFEM.Loads.memberLoad import MemberLoad
from RFEM.Results.resultTables import ResultTables

Model(True, "Beam.rf6")
Model.clientModel.service.delete_all()
Model.clientModel.service.begin_modification()

Material(1, 'S235')
Section(1, 'IPE 200')

Node(1, 0.0, 0.0, 0.0)
Node(2, 5.0, 0.0, 0.0)

Member.Beam(1, 1, 2, start_section_no=1, end_section_no=1)

NodalSupport(1, '1', NodalSupportType.FIXED)

StaticAnalysisSettings.GeometricallyLinear(1, "Linear")
LoadCase(1, 'Load', [True, 0.0, 0.0, 1.0])

MemberLoad(1, 1, '1', magnitude=3500)

Calculate_all()

d = ResultTables.NodesDeformations(CaseObjectType.E_OBJECT_TYPE_LOAD_CASE, 1, 2)

# all:
print(d)

# displacement in Z
print(d[0]['displacement_z'])

Model.clientModel.service.finish_modification()



Autor

Herr Faulstich ist mit der Qualitätssicherung des Programms RFEM betraut und außerdem im Kundensupport tätig.