Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions Examples/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import sys
sys.path.append(".")
sys.path.append("../RFEM")
sys.path.append("../UnitTests")
#print(sys.path)

from RFEM.enums import *
from RFEM.window import *
from RFEM.dataTypes import *
from RFEM.initModel import *
from RFEM.BasicObjects.material import *
from RFEM.BasicObjects.section import *
from RFEM.BasicObjects.thickness import *
from RFEM.BasicObjects.node import *
from RFEM.BasicObjects.line import *
from RFEM.BasicObjects.member import *
from RFEM.BasicObjects.surface import *
from RFEM.BasicObjects.solid import *
from RFEM.BasicObjects.opening import *
from RFEM.BasicObjects.lineSet import *
from RFEM.BasicObjects.memberSet import *
from RFEM.BasicObjects.surfaceSet import *
from RFEM.BasicObjects.solidSet import *
from RFEM.TypesForNodes.nodalSupport import *
from RFEM.TypesForMembers.memberHinge import *
from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import *
from RFEM.LoadCasesAndCombinations.loadCase import *
from RFEM.Loads.nodalLoad import *
from RFEM.Loads.memberLoad import *
from RFEM.Loads.surfaceLoad import *

#import pytest
from UnitTests import test_loads

#test_loads.test_free_polygon_load()
#test_loads.test_imposed_nodal_deformation()
test_loads.test_imposed_line_deformation()



print('Fertig!')
44 changes: 44 additions & 0 deletions RFEM/Loads/imposedLineDeformation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from RFEM.initModel import Model, clearAtributes, ConvertToDlString

class ImposedLineDeformation():

LineDeformationParams = {'imposed_displacement_line_start_x' : 0.0,
'imposed_displacement_line_start_y' : 0.0,
'imposed_displacement_line_start_z': 0.003,
'imposed_rotation_line_start' : 0.0,
'imposed_displacement_line_end_x': 0.0,
'imposed_displacement_line_end_y': 0.0,
'imposed_displacement_line_end_z': 0.0002,
'imposed_rotation_line_end': 0.0}

def __init__(self,
no: int = 1,
load_case_no: int = 1,
line_no: str = '1',
comment: str = '',
params: dict = LineDeformationParams):

# Client model | Imposed Line Deformation
clientObject = Model.clientModel.factory.create('ns0:imposed_line_deformation')

# Clears object atributes | Sets all atributes to None
clearAtributes(clientObject)

# Load No.
clientObject.no = no

# Load Case No.
clientObject.load_case = load_case_no

# Line No.
clientObject.lines = ConvertToDlString(line_no)

# Comment
clientObject.comment = comment

# Adding optional parameters via dictionary
for key in params:
clientObject[key] = params[key]

# Add Nodal Support to client model
Model.clientModel.service.set_imposed_line_deformation(load_case_no, clientObject)
32 changes: 31 additions & 1 deletion UnitTests/test_loads.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
from RFEM.Loads.surfaceLoad import SurfaceLoad
from RFEM.Loads.freeLoad import FreeLoad
from RFEM.Loads.imposedNodalDeformation import ImposedNodalDeformation

from RFEM.TypesForLines.lineSupport import LineSupport
from RFEM.Loads.imposedLineDeformation import ImposedLineDeformation
if Model.clientModel is None:
Model()

Expand Down Expand Up @@ -1134,3 +1135,32 @@ def test_imposed_nodal_deformation():

assert imposed_nodal_deformation.imposed_displacement.x == 0.005
assert imposed_nodal_deformation.imposed_rotation.y == 0.02


### Imposed Line Deformation ###

def test_imposed_line_deformation():

Model.clientModel.service.delete_all()
Model.clientModel.service.begin_modification()

Node(1, 0.0, 0.0, 0.0)
Node(2, 10.0, 0.0, 0.0)

Line(1, '1 2')

LineSupport(1,'1', LineSupportType.FIXED)

StaticAnalysisSettings(1, 'LINEAR', StaticAnalysisType.GEOMETRICALLY_LINEAR)

LoadCase(1, 'DEAD')

ImposedLineDeformation(1, 1, '1')

Model.clientModel.service.finish_modification()

imposed_line_deformation = Model.clientModel.service.get_imposed_line_deformation(1, 1)

assert imposed_line_deformation.imposed_displacement_line_start_z == 0.003
assert imposed_line_deformation.imposed_displacement_line_end_z == 0.0002