diff --git a/Examples/test.py b/Examples/test.py new file mode 100644 index 00000000..a50641a4 --- /dev/null +++ b/Examples/test.py @@ -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!') \ No newline at end of file diff --git a/RFEM/Loads/imposedLineDeformation.py b/RFEM/Loads/imposedLineDeformation.py new file mode 100644 index 00000000..f7ea8567 --- /dev/null +++ b/RFEM/Loads/imposedLineDeformation.py @@ -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) diff --git a/UnitTests/test_loads.py b/UnitTests/test_loads.py index 428e2afc..0c633d66 100644 --- a/UnitTests/test_loads.py +++ b/UnitTests/test_loads.py @@ -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() @@ -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 +