# Schritt 1: Importieren der Bibliotheken
from RFEM.enums import *
from RFEM.initModel import *
from RFEM.BasicObjects.node import Node
from RFEM.BasicObjects.material import Material
from RFEM.BasicObjects.section import Section
from RFEM.BasicObjects.member import Member
from RFEM.TypesForNodes.nodalSupport import *
from RFEM.Loads.nodalLoad import *
from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import *
from RFEM.LoadCasesAndCombinations.loadCase import *

# Schritt 2: Modell initialisieren
Model(new_model=True, model_name='meinModell')
Model.clientModel.service.begin_modification('new')

# Shritt 3: Knoten
Node(1, 0, 0, 0)
l = float(input('Länge des Kragträgers (m): '))
Node(2, l, 0, 0)

# Schritt 4: Querschnitt
Section(1, 'IPE 200')

# Schritt 5: Material
Material(1, 'S235')

# Schritt 6: Balken
Member(1, 1, 2, 0.0, 1, 1)

# Schritt 7: Knotenlager zuweisen
NodalSupport(1, '1', NodalSupportType.FIXED)

# Schritt 8: Lastfall
LoadCase(1, 'LF1', [False])

# Schritt 9: Knotenlast
f = float(input('Kraft (kN): '))
NodalLoad(1, 1, '2', LoadDirectionType.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W, f*1000)

# Schritt 10: Analysetyp / Statikanalyse-Einstellungen
StaticAnalysisSettings(1, '1. Ordnung', StaticAnalysisType.GEOMETRICALLY_LINEAR)

# Schritt 11: Alles berechnen
Calculate_all()

# Schritt 12: Veränderungen beenden und speichern
Model.clientModel.service.finish_modification()