From 935ebca44dc9d0a73dc1ca5bfb52e18fa7f470fc Mon Sep 17 00:00:00 2001 From: MichalO Date: Mon, 27 Dec 2021 15:37:37 +0100 Subject: [PATCH] Major rework: - unit tests running see UnitTests/README.md - added template for unit tests - all files unified - added script for executing all examples - corrected pylint errors/warnings/messages - enabled commented out tests deleted: BaseSettings_test.py - superfluous; same function already in unit tests Member_test.py - replaced with test_Member_test.py added: Examples.py - execute all Examples template.py - unit-test template test_Member_test.py - Examples replacement --- Examples/BaseSettings_test.py | 22 --- Examples/Cantilever/Demo1.py | 3 +- Examples/CantileverQt/Main.py | 2 +- Examples/GetRFEMData/GetOptimizedValues.py | 6 +- .../GlobalParametersAndFormulas.py | 12 +- Examples/main.py | 11 +- RFEM/BasicObjects/line.py | 4 +- RFEM/BasicObjects/member.py | 176 +++++++++--------- RFEM/BasicObjects/thickness.py | 12 +- .../staticAnalysisSettings.py | 4 +- RFEM/Loads/freeLoad.py | 18 +- RFEM/Loads/lineLoad.py | 86 ++++----- RFEM/Loads/memberLoad.py | 26 +-- RFEM/Loads/membersetload.py | 26 +-- RFEM/Loads/surfaceLoad.py | 2 +- RFEM/Loads/surfacesetload.py | 19 +- RFEM/SpecialObjects/enlargedColumnHead.py | 5 +- RFEM/SpecialObjects/intersection.py | 5 +- RFEM/SpecialObjects/resultSection.py | 5 +- RFEM/SpecialObjects/rigidLink.py | 2 +- RFEM/SpecialObjects/structureModification.py | 2 +- RFEM/SpecialObjects/surfaceContact.py | 2 +- .../SpecialObjects/surfaceResultAdjustment.py | 2 +- RFEM/Tools/centreOfGravityAndObjectInfo.py | 8 +- RFEM/TypesForLines/lineHinge.py | 2 +- RFEM/TypesForLines/lineMeshRefinements.py | 2 +- RFEM/TypesForLines/lineSupport.py | 2 +- RFEM/TypesForLines/lineWeldedJoint.py | 2 +- .../memberDefinableStiffness.py | 2 +- RFEM/TypesForMembers/memberEccentricity.py | 2 +- RFEM/TypesForMembers/memberNonlinearity.py | 2 +- .../memberResultIntermediatePoints.py | 2 +- .../memberStiffnessModification.py | 2 +- RFEM/TypesForMembers/memberSupport.py | 2 +- RFEM/TypesForNodes/nodalMeshRefinement.py | 2 +- RFEM/TypesForSolids/solidContact.py | 2 +- RFEM/TypesForSolids/solidGas.py | 2 +- RFEM/TypesForSolids/solidMeshRefinement.py | 2 +- .../surfaceContactType.py | 2 +- RFEM/TypesForSurfaces/surfaceEccentricity.py | 2 +- .../surfaceMeshRefinements.py | 2 +- .../surfaceStiffnessModification.py | 2 +- RFEM/baseSettings.py | 4 +- RFEM/initModel.py | 110 ++++++++--- UnitTests/Examples.py | 23 +++ UnitTests/template.py | 73 ++++++++ UnitTests/test_BaseSettings_test.py | 17 +- UnitTests/test_DesignSituations.py | 10 +- UnitTests/test_Free_Load_Test.py | 10 +- UnitTests/test_GlobalParameters_Test.py | 12 +- UnitTests/test_LineLoads_Test.py | 9 +- UnitTests/test_LoadCases_Test.py | 11 +- .../test_LoadDistributionSurface_Test.py | 9 +- UnitTests/test_MemberLoad_test.py | 10 +- UnitTests/test_MemberSetLoad_test.py | 10 +- .../test_Member_test.py | 12 +- UnitTests/test_MembraneSurface_Test.py | 11 +- ...test_MembraneWithoutTensionSurface_Test.py | 9 +- UnitTests/test_MeshGenerationStatistics.py | 19 +- UnitTests/test_NodalLoad_test.py | 7 +- UnitTests/test_RigidSurface_Test.py | 8 +- UnitTests/test_SolidLoads.py | 16 +- UnitTests/test_SpectralSettings_test.py | 17 +- UnitTests/test_StandardSurface_Test.py | 8 +- UnitTests/test_SurfaceLoad_test.py | 19 +- UnitTests/test_SurfaceSetLoad_test.py | 10 +- UnitTests/test_Thickness_Test.py | 12 +- .../test_WithoutThicknessSurface_Test.py | 10 +- UnitTests/test_basic_objects.py | 12 +- UnitTests/test_loads.py | 9 +- UnitTests/test_member.py | 17 +- UnitTests/test_modalAnalysis_test.py | 31 ++- UnitTests/test_objectInformation.py | 24 ++- UnitTests/test_stabilitysettings.py | 12 +- UnitTests/test_staticAnalysisSetting.py | 43 ++--- docs/docs/docsource/examples/demo1.py | 2 +- docs/docsource/examples/demo1.py | 2 +- 77 files changed, 656 insertions(+), 458 deletions(-) delete mode 100644 Examples/BaseSettings_test.py create mode 100644 UnitTests/Examples.py create mode 100644 UnitTests/template.py rename Examples/Member_test.py => UnitTests/test_Member_test.py (97%) diff --git a/Examples/BaseSettings_test.py b/Examples/BaseSettings_test.py deleted file mode 100644 index c63b45e8..00000000 --- a/Examples/BaseSettings_test.py +++ /dev/null @@ -1,22 +0,0 @@ -import sys -import os -PROJECT_ROOT = os.path.abspath(os.path.join( - os.path.dirname(__file__), - os.pardir) -) -sys.path.append(PROJECT_ROOT) -from RFEM.initModel import * -from RFEM.enums import * -from RFEM.baseSettings import BaseSettings - -if __name__ == '__main__': - - Model() - Model.clientModel.service.begin_modification() - - # Set Base Settings - BaseSettings(12, GlobalAxesOrientationType.E_GLOBAL_AXES_ORIENTATION_ZUP, LocalAxesOrientationType.E_LOCAL_AXES_ORIENTATION_ZUP, [0.001, 0.002, 0.003, 0.004]) - - print('Ready!') - - Model.clientModel.service.finish_modification() diff --git a/Examples/Cantilever/Demo1.py b/Examples/Cantilever/Demo1.py index ec688579..9a842f77 100644 --- a/Examples/Cantilever/Demo1.py +++ b/Examples/Cantilever/Demo1.py @@ -25,7 +25,7 @@ f = float(input('Force in kN: ')) Model(True, "Demo1") # crete new model called Demo1 - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.begin_modification() Material(1, 'S235') @@ -65,4 +65,3 @@ print ("Model dimension x " + str(modelStatus.property_dimensions.x)) print ("Model dimension y " + str(modelStatus.property_dimensions.y)) print ("Model dimension z " + str(modelStatus.property_dimensions.z)) - diff --git a/Examples/CantileverQt/Main.py b/Examples/CantileverQt/Main.py index 2dce510f..d17d45a2 100644 --- a/Examples/CantileverQt/Main.py +++ b/Examples/CantileverQt/Main.py @@ -58,7 +58,7 @@ def onOK(self): # RFEM 6 Model(True, "CantileverQt") # crete new model called CantileverQt - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.begin_modification() Material(1, 'S235') diff --git a/Examples/GetRFEMData/GetOptimizedValues.py b/Examples/GetRFEMData/GetOptimizedValues.py index ed8f3de2..8ab0b8a7 100644 --- a/Examples/GetRFEMData/GetOptimizedValues.py +++ b/Examples/GetRFEMData/GetOptimizedValues.py @@ -5,15 +5,15 @@ print('basename: ', baseName) print('dirname: ', dirName) sys.path.append(dirName + r'/../..') -from RFEM.initModel import Model, method_exists +from RFEM.initModel import Model, CheckIfMethodOrTypeExists if __name__ == "__main__": Model() - if method_exists(Model.clientModel,'get_optimized_formula_parameters'): + if CheckIfMethodOrTypeExists(Model.clientModel,'get_optimized_formula_parameters'): optimizationResults = Model.clientModel.service.get_optimized_formula_parameters() - if len(optimizationResults): + if len(optimizationResults) > 0: for i in range(0, len(optimizationResults.row)): for j in range(0, len(optimizationResults.row[i].section)): diff --git a/Examples/GetRFEMData/GlobalParametersAndFormulas.py b/Examples/GetRFEMData/GlobalParametersAndFormulas.py index ad3167b7..169b9977 100644 --- a/Examples/GetRFEMData/GlobalParametersAndFormulas.py +++ b/Examples/GetRFEMData/GlobalParametersAndFormulas.py @@ -6,17 +6,17 @@ print('dirname: ', dirName) sys.path.append(dirName + r'/../..') -from RFEM.initModel import Model, method_exists +from RFEM.initModel import Model, CheckIfMethodOrTypeExists from RFEM.enums import ObjectTypes if __name__ == "__main__": Model() - method_exists(Model.clientModel,'ns0:object_location') - method_exists(Model.clientModel,'ns0:object_parameter_location_type') - method_exists(Model.clientModel,'ns0:object_parameter_location_type.parameter_path_in_nested_models_hierarchy') - method_exists(Model.clientModel,'ns0:object_parameter_location_type.parameter_path_in_nested_models_hierarchy.node') - method_exists(Model.clientModel,'get_formula') + CheckIfMethodOrTypeExists(Model.clientModel,'ns0:object_location') + CheckIfMethodOrTypeExists(Model.clientModel,'ns0:object_parameter_location_type') + CheckIfMethodOrTypeExists(Model.clientModel,'ns0:object_parameter_location_type.parameter_path_in_nested_models_hierarchy') + CheckIfMethodOrTypeExists(Model.clientModel,'ns0:object_parameter_location_type.parameter_path_in_nested_models_hierarchy.node') + CheckIfMethodOrTypeExists(Model.clientModel,'get_formula') objectLocation = Model.clientModel.factory.create('ns0:object_location') objectLocation.type = ObjectTypes.E_OBJECT_TYPE_SECTION.name diff --git a/Examples/main.py b/Examples/main.py index 32c298b3..b765a53d 100644 --- a/Examples/main.py +++ b/Examples/main.py @@ -1,14 +1,19 @@ import sys import os +baseName = os.path.basename(__file__) +dirName = os.path.dirname(__file__) +print('basename: ', baseName) +print('dirname: ', dirName) + PROJECT_ROOT = os.path.abspath(os.path.join( os.path.dirname(__file__), os.pardir) ) sys.path.append(PROJECT_ROOT) -from RFEM.enums import NodalSupportType, StaticAnalysisType, LoadDirectionType, MemberLoadDistribution, MemberLoadDirection +from RFEM.enums import NodalSupportType, StaticAnalysisType, LoadDirectionType, MemberLoadDistribution, MemberLoadDirection, MemberRotationSpecificationType from RFEM.window import window from RFEM.dataTypes import inf -from RFEM.initModel import Model, MemberRotationSpecificationType, Calculate_all, insertSpaces, modelLst +from RFEM.initModel import Model, Calculate_all, insertSpaces, modelLst from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.thickness import Thickness @@ -32,7 +37,7 @@ def main(hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_spacing, new_model, model_name, delete, reset): # ------------------------------------------------------------- Model(new_model, model_name, delete, reset) - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.begin_modification() # ------------------------------------------------------------- # Materials Material(1) diff --git a/RFEM/BasicObjects/line.py b/RFEM/BasicObjects/line.py index 349aae00..30dceb18 100644 --- a/RFEM/BasicObjects/line.py +++ b/RFEM/BasicObjects/line.py @@ -129,7 +129,7 @@ def Circle(self, clientObject.circle_center_coordinate_2 = center_of_cirle[1] clientObject.circle_center_coordinate_3 = center_of_cirle[2] - clientObject.circle_radius = circle_radius, + clientObject.circle_radius = circle_radius # Point of normal to circle plane clientObject.circle_normal_coordinate_1 = point_of_normal_to_circle_plane[0] @@ -339,7 +339,7 @@ def NURBS(self, print("Number of control points must comply with number of weights!") nurbs_control_points = [] - for i in range(len(control_points)): + for i,j in enumerate(control_points): point = Model.clientModel.factory.create('ns0:line_nurbs_control_points_by_components') point.no = i+1 point.global_coordinate_x = control_points[i][0] diff --git a/RFEM/BasicObjects/member.py b/RFEM/BasicObjects/member.py index 38240b0d..6247d24a 100644 --- a/RFEM/BasicObjects/member.py +++ b/RFEM/BasicObjects/member.py @@ -1,5 +1,5 @@ -from RFEM.enums import MemberType -from RFEM.initModel import * +from RFEM.enums import MemberType, MemberRotationSpecificationType, MemberSectionDistributionType, MemberTypeRibAlignment, MemberReferenceLengthWidthType, MemberResultBeamIntegration +from RFEM.initModel import Model, clearAtributes class Member(): def __init__(self, @@ -102,7 +102,7 @@ def Beam(self, rotation_parameters (list): Rotation Parameters start_section_no (int): Tag of Start Section end_section_no (int): End of End Section - distribution_parameters (list): Distrobution Parameters + distribution_parameters (list): Distribution Parameters comment (str, optional): Comment params (dict, optional): Parameters @@ -159,103 +159,103 @@ def Beam(self, clientObject.section_distribution_type = section_distribution_type.name if section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_LINEAR: - clientObject.section_alignment == distribution_parameters[0] + clientObject.section_alignment = distribution_parameters[0].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_TAPERED_AT_BOTH_SIDES: try: - type(distribution_parameters[0]) == bool - type(distribution_parameters[1]) == bool + isinstance(distribution_parameters[0], bool) + isinstance(distribution_parameters[1], bool) except: - raise Exception("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[1] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[2] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[2] - if distribution_parameters[1] == True: + if distribution_parameters[1]: clientObject.section_distance_from_end_relative = distribution_parameters[3] - elif distribution_parameters[1] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[3] clientObject.section_alignment = distribution_parameters[4].name clientObject.section_internal = distribution_parameters[5] elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_TAPERED_AT_START_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_TAPERED_AT_END_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_end_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_SADDLE: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_SADDLE. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_SADDLE. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_end_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name clientObject.section_internal = distribution_parameters[3] elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_OFFSET_AT_BOTH_SIDES: try: - type(distribution_parameters[0]) == bool - type(distribution_parameters[1]) == bool + isinstance(distribution_parameters[0], bool) + isinstance(distribution_parameters[1], bool) except: - raise Exception("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[1] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[2] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[2] - if distribution_parameters[1] == True: + if distribution_parameters[1]: clientObject.section_distance_from_end_relative = distribution_parameters[3] - elif distribution_parameters[1] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[3] clientObject.section_alignment = distribution_parameters[4].name clientObject.section_internal = distribution_parameters[5] elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_OFFSET_AT_START_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_OFFSET_AT_END_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_end_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name @@ -267,7 +267,7 @@ def Beam(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -389,7 +389,7 @@ def Rigid(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -496,7 +496,7 @@ def Rib(self, try: section_distribution_type.name == "MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_UNIFORM" or section_distribution_type.name == "MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_LINEAR" except: - raise Exception("WARNING: Only Uniform and Linear section distributions are available for Rib member. Kindly check inputs and correctness.") + raise TypeError("WARNING: Only Uniform and Linear section distributions are available for Rib member. Kindly check inputs and correctness.") # Start Section No. clientObject.section_start = start_section_no @@ -622,7 +622,7 @@ def Truss(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -737,7 +737,7 @@ def TrussOnlyN(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -852,7 +852,7 @@ def Tension(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -967,7 +967,7 @@ def Compression(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1082,7 +1082,7 @@ def Buckling(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1195,7 +1195,7 @@ def Cable(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1344,103 +1344,103 @@ def ResultBeam(self, clientObject.result_beam_radius = integration_parameters[0] if section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_LINEAR: - clientObject.section_alignment == distribution_parameters[0] + clientObject.section_alignment = distribution_parameters[0].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_TAPERED_AT_BOTH_SIDES: try: - type(distribution_parameters[0]) == bool - type(distribution_parameters[1]) == bool + isinstance(distribution_parameters[0], bool) + isinstance(distribution_parameters[1], bool) except: - raise Exception("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[1] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[2] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[2] - if distribution_parameters[1] == True: + if distribution_parameters[1]: clientObject.section_distance_from_end_relative = distribution_parameters[3] - elif distribution_parameters[1] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[3] clientObject.section_alignment = distribution_parameters[4].name clientObject.section_internal = distribution_parameters[5] elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_TAPERED_AT_START_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_TAPERED_AT_END_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_TAPERED_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_end_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_SADDLE: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_SADDLE. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_SADDLE. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_end_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name clientObject.section_internal = distribution_parameters[3] elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_OFFSET_AT_BOTH_SIDES: try: - type(distribution_parameters[0]) == bool - type(distribution_parameters[1]) == bool + isinstance(distribution_parameters[0], bool) + isinstance(distribution_parameters[1], bool) except: - raise Exception("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First two parameters should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_BOTH_SIDES. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[1] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[2] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[2] - if distribution_parameters[1] == True: + if distribution_parameters[1]: clientObject.section_distance_from_end_relative = distribution_parameters[3] - elif distribution_parameters[1] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[3] clientObject.section_alignment = distribution_parameters[4].name clientObject.section_internal = distribution_parameters[5] elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_OFFSET_AT_START_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_START_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_start_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_start_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_start_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name elif section_distribution_type == MemberSectionDistributionType.SECTION_DISTRIBUTION_TYPE_OFFSET_AT_END_OF_MEMBER: try: - type(distribution_parameters[0]) == bool + isinstance(distribution_parameters[0], bool) except: - raise Exception("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") + raise TypeError("WARNING: First parameter should be type bool for SECTION_DISTRIBUTION_TYPE_OFFSET_AT_END_OF_MEMBER. Kindly check list inputs completeness and correctness.") clientObject.section_distance_from_end_is_defined_as_relative = distribution_parameters[0] - if distribution_parameters[0] == True: + if distribution_parameters[0]: clientObject.section_distance_from_end_relative = distribution_parameters[1] - elif distribution_parameters[0] == False: + else: clientObject.section_distance_from_end_absolute = distribution_parameters[1] clientObject.section_alignment = distribution_parameters[2].name @@ -1452,7 +1452,7 @@ def ResultBeam(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1560,7 +1560,7 @@ def DefinableStiffness(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1654,7 +1654,7 @@ def CouplingRigidRigid(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1730,7 +1730,7 @@ def CouplingRigidHinge(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1806,7 +1806,7 @@ def CouplingHingeRigid(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name @@ -1882,7 +1882,7 @@ def CouplingHingeHinge(self, clientObject.rotation_help_node = rotation_parameters[0] clientObject.rotation_plane_type = rotation_parameters[1].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_INSIDE_NODE: - clientObject.rotation_plane_type == rotation_parameters[0].name + clientObject.rotation_plane_type = rotation_parameters[0].name elif rotation_specification_type == MemberRotationSpecificationType.COORDINATE_SYSTEM_ROTATION_VIA_SURFACE: clientObject.rotation_surface = rotation_parameters[0] clientObject.rotation_surface_plane_type = rotation_parameters[1].name diff --git a/RFEM/BasicObjects/thickness.py b/RFEM/BasicObjects/thickness.py index e205a18e..77cf8175 100644 --- a/RFEM/BasicObjects/thickness.py +++ b/RFEM/BasicObjects/thickness.py @@ -2,7 +2,7 @@ from RFEM.enums import ThicknessOrthotropyType from RFEM.enums import ThicknessShapeOrthotropySelfWeightDefinitionType from RFEM.enums import ThicknessStiffnessMatrixSelfWeightDefinitionType -from RFEM.initModel import * +from RFEM.initModel import Model, CheckAddonStatus, clearAtributes, SetAddonStatus from math import pi class Thickness(): @@ -348,6 +348,8 @@ def Layers(self, params: dict = {}): ''' + Available only for Special Solution Add-on Multilayer Surfaces. + Args: no (int): Thickness Tag name (str): Thickness Name @@ -357,6 +359,10 @@ def Layers(self, params (dict, optional): Parameters ''' + # Check if Multilayer Surfaces Add-on is ON. + if not CheckAddonStatus(Model.clientModel, "multilayer_surfaces_active"): + SetAddonStatus(Model.clientModel, "multilayer_surfaces_active", True) + # Client model | Thickness clientObject = Model.clientModel.factory.create('ns0:thickness') @@ -367,7 +373,7 @@ def Layers(self, clientObject.no = no # Thickness Name - if name is not None: + if name: clientObject.user_defined_name_enabled = True clientObject.name = name @@ -377,7 +383,7 @@ def Layers(self, # Layers clientObject.layers_reference_table = Model.clientModel.factory.create('ns0:thickness.layers_reference_table') - for i in range(len(layers)): + for i,j in enumerate(layers): tlrt = Model.clientModel.factory.create('ns0:thickness_layers_reference_table') tlrt.no = no tlrt.layer_no = i+1 diff --git a/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py b/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py index a8e20b96..589a456f 100644 --- a/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py +++ b/RFEM/LoadCasesAndCombinations/staticAnalysisSettings.py @@ -137,7 +137,7 @@ def GeometricallyLinear(self, # raise Exception ('WARNING: Mass conversion factor in direction z at index 3 has to be of type "float" or "int"') clientObject.mass_conversion_enabled = mass_conversion[0] - if mass_conversion[0] != False: + if mass_conversion[0]: clientObject.mass_conversion_factor_in_direction_x = mass_conversion[1] clientObject.mass_conversion_factor_in_direction_y = mass_conversion[2] clientObject.mass_conversion_factor_in_direction_z = mass_conversion[3] @@ -473,7 +473,7 @@ def SecondOrderPDelta (self, # raise Exception ('WARNING: Mass conversion factor in direction z at index 3 has to be of type "float" or "int"') clientObject.mass_conversion_enabled = mass_conversion[0] - if mass_conversion[0] != False: + if mass_conversion[0]: clientObject.mass_conversion_factor_in_direction_x = mass_conversion[1] clientObject.mass_conversion_factor_in_direction_y = mass_conversion[2] clientObject.mass_conversion_factor_in_direction_z = mass_conversion[3] diff --git a/RFEM/Loads/freeLoad.py b/RFEM/Loads/freeLoad.py index 97e0e51d..5dd258ab 100644 --- a/RFEM/Loads/freeLoad.py +++ b/RFEM/Loads/freeLoad.py @@ -248,7 +248,7 @@ def RectangularLoad(self, clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters') varying_in_z = load_location_parameter[4] - for i in range(len(varying_in_z)): + for i,j in enumerate(varying_in_z): frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters') frllvp.no = i+1 frllvp.distance = varying_in_z[i][0] @@ -272,7 +272,7 @@ def RectangularLoad(self, clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters') varying_along_perimeter = load_location_parameter[7] - for i in range(len(varying_along_perimeter)): + for i,j in enumerate(varying_along_perimeter): frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters') frllvapp.no = i+1 frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180) @@ -289,7 +289,7 @@ def RectangularLoad(self, clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters') varying_in_z = load_location_parameter[4] - for i in range(len(varying_in_z)): + for i,j in enumerate(varying_in_z): frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters') frllvp.no = i+1 frllvp.distance = varying_in_z[i][0] @@ -306,7 +306,7 @@ def RectangularLoad(self, clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters') varying_along_perimeter = load_location_parameter[8] - for i in range(len(varying_along_perimeter)): + for i,j in enumerate(varying_along_perimeter): frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters') frllvapp.no = i+1 frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180) @@ -334,7 +334,7 @@ def RectangularLoad(self, clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters') varying_in_z = load_location_parameter[4] - for i in range(len(varying_in_z)): + for i,j in enumerate(varying_in_z): frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters') frllvp.no = i+1 frllvp.distance = varying_in_z[i][0] @@ -358,7 +358,7 @@ def RectangularLoad(self, clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters') varying_along_perimeter = load_location_parameter[7] - for i in range(len(varying_along_perimeter)): + for i,j in enumerate(varying_along_perimeter): frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters') frllvapp.no = i+1 frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180) @@ -375,7 +375,7 @@ def RectangularLoad(self, clientObject.load_varying_in_z_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_in_z_parameters') varying_in_z = load_location_parameter[4] - for i in range(len(varying_in_z)): + for i,j in enumerate(varying_in_z): frllvp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_in_z_parameters') frllvp.no = i+1 frllvp.distance = varying_in_z[i][0] @@ -392,7 +392,7 @@ def RectangularLoad(self, clientObject.load_varying_along_perimeter_parameters = Model.clientModel.factory.create('ns0:free_rectangular_load.load_varying_along_perimeter_parameters') varying_along_perimeter = load_location_parameter[8] - for i in range(len(varying_along_perimeter)): + for i,j in enumerate(varying_along_perimeter): frllvapp = Model.clientModel.factory.create('ns0:free_rectangular_load_load_varying_along_perimeter_parameters') frllvapp.no = i+1 frllvapp.alpha = varying_along_perimeter[i][0] * (pi/180) @@ -536,7 +536,7 @@ def PolygonLoad(self, # Load Location clientObject.load_location = Model.clientModel.factory.create('ns0:free_polygon_load.load_location') - for i in range(len(load_location)): + for i,j in enumerate(load_location): fplld = Model.clientModel.factory.create('ns0:free_polygon_load_load_location') fplld.no = i+1 fplld.first_coordinate = load_location[i][0] diff --git a/RFEM/Loads/lineLoad.py b/RFEM/Loads/lineLoad.py index 044743c4..1006c639 100644 --- a/RFEM/Loads/lineLoad.py +++ b/RFEM/Loads/lineLoad.py @@ -1,4 +1,4 @@ -from RFEM.initModel import * +from RFEM.initModel import Model, ConvertToDlString, clearAtributes from RFEM.enums import * class LineLoad(): @@ -113,10 +113,10 @@ def Force(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_1": if len(load_parameter) != 3: raise Exception('WARNING: The load parameter needs to be of length 3. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool: + if not isinstance(load_parameter[0], bool): raise Exception ('WARNING: Load parameter at index 0 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.magnitude = load_parameter[1] clientObject.distance_a_absolute = load_parameter[2] else: @@ -126,19 +126,19 @@ def Force(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_N": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool: + if not isinstance(load_parameter[0], bool): raise Exception ('WARNING: Load parameter at index 0 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude = load_parameter[2] clientObject.count_n = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -146,24 +146,24 @@ def Force(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_2x2": if len(load_parameter) != 7: raise Exception('WARNING: The load parameter needs to be of length 7. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool and type(load_parameter[2]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool) or not isinstance(load_parameter[2], bool): raise Exception ('WARNING: Load parameter at index 0, 1 and 2 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.distance_c_is_defined_as_relative = load_parameter[2] clientObject.magnitude = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] - if load_parameter[2] == False: + if not load_parameter[2]: clientObject.distance_c_absolute = load_parameter[6] else: clientObject.distance_c_relative = load_parameter[6] @@ -171,19 +171,19 @@ def Force(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_2": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude_1 = load_parameter[2] clientObject.magnitude_2 = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -196,7 +196,7 @@ def Force(self, clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): if len(load_parameter[i]) != 3: raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.') mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters') @@ -211,19 +211,19 @@ def Force(self, elif load_distribution.name == "LOAD_DISTRIBUTION_TRAPEZOIDAL": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude_1 = load_parameter[2] clientObject.magnitude_2 = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -231,19 +231,19 @@ def Force(self, elif load_distribution.name == "LOAD_DISTRIBUTION_TAPERED": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude_1 = load_parameter[2] clientObject.magnitude_2 = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -262,7 +262,7 @@ def Force(self, print("WARNING: LineLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): if len(load_parameter[i]) != 3: raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.') mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters') @@ -343,10 +343,10 @@ def Moment(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_1": if len(load_parameter) != 3: raise Exception('WARNING: The load parameter needs to be of length 3. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool: + if not isinstance(load_parameter[0], bool): raise Exception ('WARNING: Load parameter at index 0 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.magnitude = load_parameter[1] clientObject.distance_a_absolute = load_parameter[2] else: @@ -356,19 +356,19 @@ def Moment(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_N": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude = load_parameter[2] clientObject.count_n = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -376,24 +376,24 @@ def Moment(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_2x2": if len(load_parameter) != 7: raise Exception('WARNING: The load parameter needs to be of length 7. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool and type(load_parameter[2]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool) or not isinstance(load_parameter[2], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.distance_c_is_defined_as_relative = load_parameter[2] clientObject.magnitude = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] - if load_parameter[2] == False: + if not load_parameter[2]: clientObject.distance_c_absolute = load_parameter[6] else: clientObject.distance_c_relative = load_parameter[6] @@ -401,19 +401,19 @@ def Moment(self, elif load_distribution.name == "LOAD_DISTRIBUTION_CONCENTRATED_2": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude_1 = load_parameter[2] clientObject.magnitude_2 = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -426,7 +426,7 @@ def Moment(self, clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): if len(load_parameter[i]) != 3: raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.') mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters') @@ -441,19 +441,19 @@ def Moment(self, elif load_distribution.name == "LOAD_DISTRIBUTION_TRAPEZOIDAL": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude_1 = load_parameter[2] clientObject.magnitude_2 = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -461,19 +461,19 @@ def Moment(self, elif load_distribution.name == "LOAD_DISTRIBUTION_TAPERED": if len(load_parameter) != 6: raise Exception('WARNING: The load parameter needs to be of length 6. Kindly check list inputs for completeness and correctness.') - if type(load_parameter[0]) != bool and type(load_parameter[1]) != bool: + if not isinstance(load_parameter[0], bool) or not isinstance(load_parameter[1], bool): raise Exception ('WARNING: Load parameter at index 0 and 1 to be of type "bool"') clientObject.distance_a_is_defined_as_relative = load_parameter[0] clientObject.distance_b_is_defined_as_relative = load_parameter[1] clientObject.magnitude_1 = load_parameter[2] clientObject.magnitude_2 = load_parameter[3] - if load_parameter[0] == False: + if not load_parameter[0]: clientObject.distance_a_absolute = load_parameter[4] else: clientObject.distance_a_relative = load_parameter[4] - if load_parameter[1] == False: + if not load_parameter[1]: clientObject.distance_b_absolute = load_parameter[5] else: clientObject.distance_b_relative = load_parameter[5] @@ -492,7 +492,7 @@ def Moment(self, print("WARNING: LineLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:line_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): if len(load_parameter[i]) != 3: raise Exception('WARNING: The load parameter sub-lists need to be of length 3. Kindly check sub-list inputs for completeness and correctness.') mlvlp = Model.clientModel.factory.create('ns0:line_load_varying_load_parameters') @@ -560,12 +560,12 @@ def Mass(self, clientObject.load_distribution= load_distribution.name # Individual Mass Components - if type(individual_mass_components) != bool: + if not isinstance(individual_mass_components, bool): raise Exception('WARNING: Input to be of type "bool"') clientObject.individual_mass_components = individual_mass_components # Mass magnitude - if individual_mass_components == False: + if not individual_mass_components: if len(mass_components) != 1: raise Exception('WARNING: The mass components parameter for global mass assignment needs to be of length 1. Kindly check list inputs for completeness and correctness.') clientObject.mass_global = mass_components[0] diff --git a/RFEM/Loads/memberLoad.py b/RFEM/Loads/memberLoad.py index d77633ba..f816a1a6 100644 --- a/RFEM/Loads/memberLoad.py +++ b/RFEM/Loads/memberLoad.py @@ -215,7 +215,7 @@ def Force(self, clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -273,7 +273,7 @@ def Force(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -294,7 +294,7 @@ def Force(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -503,7 +503,7 @@ def Moment(self, clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -561,7 +561,7 @@ def Moment(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -791,7 +791,7 @@ def Temperature(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -948,7 +948,7 @@ def TemperatureChange(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1094,7 +1094,7 @@ def AxialStrain(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1298,7 +1298,7 @@ def Precamber(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1524,7 +1524,7 @@ def Displacement(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1589,7 +1589,7 @@ def Displacement(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1759,7 +1759,7 @@ def Rotation(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1824,7 +1824,7 @@ def Rotation(self, print("WARNING: MemberLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] diff --git a/RFEM/Loads/membersetload.py b/RFEM/Loads/membersetload.py index 3aaa589d..c6a4c234 100644 --- a/RFEM/Loads/membersetload.py +++ b/RFEM/Loads/membersetload.py @@ -232,7 +232,7 @@ def Force(self, clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -298,7 +298,7 @@ def Force(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -319,7 +319,7 @@ def Force(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -550,7 +550,7 @@ def Moment(self, clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -620,7 +620,7 @@ def Moment(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -867,7 +867,7 @@ def Temperature(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1037,7 +1037,7 @@ def TemperatureChange(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1196,7 +1196,7 @@ def AxialStrain(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1412,7 +1412,7 @@ def Precamber(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1652,7 +1652,7 @@ def Displacement(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1734,7 +1734,7 @@ def Displacement(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -1918,7 +1918,7 @@ def Rotation(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -2000,7 +2000,7 @@ def Rotation(self, print("WARNING: MemberSetLoad no: %x, load case: %x - Wrong data input." % (no, load_case_no)) clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:member_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:member_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] diff --git a/RFEM/Loads/surfaceLoad.py b/RFEM/Loads/surfaceLoad.py index 5c70b3bf..64cd8ab1 100644 --- a/RFEM/Loads/surfaceLoad.py +++ b/RFEM/Loads/surfaceLoad.py @@ -162,7 +162,7 @@ def Force(self, elif load_distribution == SurfaceLoadDistribution.LOAD_DISTRIBUTION_VARYING_IN_Z: clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:surface_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:surface_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] diff --git a/RFEM/Loads/surfacesetload.py b/RFEM/Loads/surfacesetload.py index cbcce97d..2f730f4b 100644 --- a/RFEM/Loads/surfacesetload.py +++ b/RFEM/Loads/surfacesetload.py @@ -127,8 +127,9 @@ def Force(self, clientObject.node_2 = load_parameter[4] clientObject.node_3 = load_parameter[5] - elif load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X or load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y\ - or load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z: + elif load_distribution in (SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, + SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y, + SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z): clientObject.magnitude_1 = load_parameter[0] clientObject.magnitude_2 = load_parameter[1] @@ -161,7 +162,7 @@ def Force(self, elif load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_VARYING_IN_Z: clientObject.varying_load_parameters = Model.clientModel.factory.create('ns0:surface_set_load.varying_load_parameters') - for i in range(len(load_parameter)): + for i,j in enumerate(load_parameter): mlvlp = Model.clientModel.factory.create('ns0:surface_set_load_varying_load_parameters') mlvlp.no = i+1 mlvlp.distance = load_parameter[i][0] @@ -250,8 +251,9 @@ def Temperature(self, clientObject.node_2 = load_parameter[7] clientObject.node_3 = load_parameter[8] - elif load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X or load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y\ - or load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z: + elif load_distribution in (SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, + SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y, + SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z): clientObject.magnitude_t_c_1 = load_parameter[0] clientObject.magnitude_delta_t_1 = load_parameter[1] clientObject.magnitude_t_c_2 = load_parameter[2] @@ -356,8 +358,9 @@ def AxialStrain(self, clientObject.node_2 = load_parameter[7] clientObject.node_3 = load_parameter[8] - elif load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X or load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y\ - or load_distribution == SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z: + elif load_distribution in (SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, + SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y, + SurfaceSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z): clientObject.magnitude_axial_strain_1x = load_parameter[0] clientObject.magnitude_axial_strain_1y = load_parameter[1] clientObject.magnitude_axial_strain_2x = load_parameter[2] @@ -561,4 +564,4 @@ def Mass(self, clientObject[key] = params[key] # Add Surface Load to client model - Model.clientModel.service.set_surface_set_load(load_case_no, clientObject) \ No newline at end of file + Model.clientModel.service.set_surface_set_load(load_case_no, clientObject) diff --git a/RFEM/SpecialObjects/enlargedColumnHead.py b/RFEM/SpecialObjects/enlargedColumnHead.py index dcd01fef..81ed24a2 100644 --- a/RFEM/SpecialObjects/enlargedColumnHead.py +++ b/RFEM/SpecialObjects/enlargedColumnHead.py @@ -15,9 +15,12 @@ def __init__(self, # Enlarged Column Head No. clientObject.no = no + # Comment + clientObject.comment = comment + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] # Add Enlarged Column Head to client model - Model.clientModel.service.set_enlarged_column_head(clientObject) \ No newline at end of file + Model.clientModel.service.set_enlarged_column_head(clientObject) diff --git a/RFEM/SpecialObjects/intersection.py b/RFEM/SpecialObjects/intersection.py index bb1a345e..dda943a3 100644 --- a/RFEM/SpecialObjects/intersection.py +++ b/RFEM/SpecialObjects/intersection.py @@ -15,9 +15,12 @@ def __init__(self, # Intersection No. clientObject.no = no + # Comment + clientObject.comment = comment + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] # Add Intersection to client model - Model.clientModel.service.set_intersection(clientObject) \ No newline at end of file + Model.clientModel.service.set_intersection(clientObject) diff --git a/RFEM/SpecialObjects/resultSection.py b/RFEM/SpecialObjects/resultSection.py index 02f4c899..8aba5361 100644 --- a/RFEM/SpecialObjects/resultSection.py +++ b/RFEM/SpecialObjects/resultSection.py @@ -15,9 +15,12 @@ def __init__(self, # Result Section No. clientObject.no = no + # Comment + clientObject.comment = comment + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] # Add Result Section to client model - Model.clientModel.service.set_result_section(clientObject) \ No newline at end of file + Model.clientModel.service.set_result_section(clientObject) diff --git a/RFEM/SpecialObjects/rigidLink.py b/RFEM/SpecialObjects/rigidLink.py index 81f241fe..44ed202c 100644 --- a/RFEM/SpecialObjects/rigidLink.py +++ b/RFEM/SpecialObjects/rigidLink.py @@ -95,4 +95,4 @@ def Diapragm(self, clientObject[key] = params[key] # Add rigid link to client model - Model.clientModel.service.set_rigid_link(clientObject) \ No newline at end of file + Model.clientModel.service.set_rigid_link(clientObject) diff --git a/RFEM/SpecialObjects/structureModification.py b/RFEM/SpecialObjects/structureModification.py index 64048627..01e4182a 100644 --- a/RFEM/SpecialObjects/structureModification.py +++ b/RFEM/SpecialObjects/structureModification.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Structure Modification to client model - Model.clientModel.service.set_structure_modification(clientObject) \ No newline at end of file + Model.clientModel.service.set_structure_modification(clientObject) diff --git a/RFEM/SpecialObjects/surfaceContact.py b/RFEM/SpecialObjects/surfaceContact.py index bae0620b..a63680d9 100644 --- a/RFEM/SpecialObjects/surfaceContact.py +++ b/RFEM/SpecialObjects/surfaceContact.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Surfaces Contact to client model - Model.clientModel.service.set_surfaces_contact(clientObject) \ No newline at end of file + Model.clientModel.service.set_surfaces_contact(clientObject) diff --git a/RFEM/SpecialObjects/surfaceResultAdjustment.py b/RFEM/SpecialObjects/surfaceResultAdjustment.py index fbc9a4eb..1cd38cc9 100644 --- a/RFEM/SpecialObjects/surfaceResultAdjustment.py +++ b/RFEM/SpecialObjects/surfaceResultAdjustment.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Surface Result Adjustmentto client model - Model.clientModel.service.set_surface_results_adjustment(clientObject) \ No newline at end of file + Model.clientModel.service.set_surface_results_adjustment(clientObject) diff --git a/RFEM/Tools/centreOfGravityAndObjectInfo.py b/RFEM/Tools/centreOfGravityAndObjectInfo.py index 196fa985..902f167c 100644 --- a/RFEM/Tools/centreOfGravityAndObjectInfo.py +++ b/RFEM/Tools/centreOfGravityAndObjectInfo.py @@ -1,7 +1,9 @@ -from RFEM.initModel import * -from RFEM.enums import * +from RFEM.initModel import Model +from RFEM.enums import ObjectTypes, SelectedObjectInformation class ObjectInformation(): + # missing def __init__( with definition of self and its variables + # object_type, no, parent_no, information, row_key and result. def CentreOfGravity(self, type = ObjectTypes.E_OBJECT_TYPE_MEMBER, @@ -106,4 +108,4 @@ def __AreaVolumeMassInformationLength(self): elif self.information.name == "VOLUME": return self.result['section'][self.row_key].rows[0][1].value elif self.information.name == "MASS": - return self.result['section'][self.row_key].rows[0][2].value \ No newline at end of file + return self.result['section'][self.row_key].rows[0][2].value diff --git a/RFEM/TypesForLines/lineHinge.py b/RFEM/TypesForLines/lineHinge.py index 645de02b..3779d974 100644 --- a/RFEM/TypesForLines/lineHinge.py +++ b/RFEM/TypesForLines/lineHinge.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Line Hinge to client model - Model.clientModel.service.set_line_hinge(clientObject) \ No newline at end of file + Model.clientModel.service.set_line_hinge(clientObject) diff --git a/RFEM/TypesForLines/lineMeshRefinements.py b/RFEM/TypesForLines/lineMeshRefinements.py index 64df0dc8..93546f64 100644 --- a/RFEM/TypesForLines/lineMeshRefinements.py +++ b/RFEM/TypesForLines/lineMeshRefinements.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Line Mesh Refinement to client model - Model.clientModel.service.set_line_mesh_refinement(clientObject) \ No newline at end of file + Model.clientModel.service.set_line_mesh_refinement(clientObject) diff --git a/RFEM/TypesForLines/lineSupport.py b/RFEM/TypesForLines/lineSupport.py index 2e3e1c56..ed83bcc9 100644 --- a/RFEM/TypesForLines/lineSupport.py +++ b/RFEM/TypesForLines/lineSupport.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Line Support to client model - Model.clientModel.service.set_line_support(clientObject) \ No newline at end of file + Model.clientModel.service.set_line_support(clientObject) diff --git a/RFEM/TypesForLines/lineWeldedJoint.py b/RFEM/TypesForLines/lineWeldedJoint.py index c0e63e76..1be693d9 100644 --- a/RFEM/TypesForLines/lineWeldedJoint.py +++ b/RFEM/TypesForLines/lineWeldedJoint.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Line welded joint to client model - Model.clientModel.service.set_line_welded_joint(clientObject) \ No newline at end of file + Model.clientModel.service.set_line_welded_joint(clientObject) diff --git a/RFEM/TypesForMembers/memberDefinableStiffness.py b/RFEM/TypesForMembers/memberDefinableStiffness.py index 83b7f5e1..07d6947f 100644 --- a/RFEM/TypesForMembers/memberDefinableStiffness.py +++ b/RFEM/TypesForMembers/memberDefinableStiffness.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Definable Stffness to client model - Model.clientModel.service.set_member_definable_stiffness(clientObject) \ No newline at end of file + Model.clientModel.service.set_member_definable_stiffness(clientObject) diff --git a/RFEM/TypesForMembers/memberEccentricity.py b/RFEM/TypesForMembers/memberEccentricity.py index 2d448ee9..4ba7194f 100644 --- a/RFEM/TypesForMembers/memberEccentricity.py +++ b/RFEM/TypesForMembers/memberEccentricity.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Eccentricity to client model - Model.clientModel.service.set_member_eccentricity(clientObject) \ No newline at end of file + Model.clientModel.service.set_member_eccentricity(clientObject) diff --git a/RFEM/TypesForMembers/memberNonlinearity.py b/RFEM/TypesForMembers/memberNonlinearity.py index 088507ee..5f00acbe 100644 --- a/RFEM/TypesForMembers/memberNonlinearity.py +++ b/RFEM/TypesForMembers/memberNonlinearity.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Nonlinearity to client model - Model.clientModel.service.set_member_nonlinearity(clientObject) \ No newline at end of file + Model.clientModel.service.set_member_nonlinearity(clientObject) diff --git a/RFEM/TypesForMembers/memberResultIntermediatePoints.py b/RFEM/TypesForMembers/memberResultIntermediatePoints.py index 17883ec4..41190f0b 100644 --- a/RFEM/TypesForMembers/memberResultIntermediatePoints.py +++ b/RFEM/TypesForMembers/memberResultIntermediatePoints.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Result Intermediate Point to client model - Model.clientModel.service.set_member_result_intermediate_point(clientObject) \ No newline at end of file + Model.clientModel.service.set_member_result_intermediate_point(clientObject) diff --git a/RFEM/TypesForMembers/memberStiffnessModification.py b/RFEM/TypesForMembers/memberStiffnessModification.py index e48e73f7..603c97e1 100644 --- a/RFEM/TypesForMembers/memberStiffnessModification.py +++ b/RFEM/TypesForMembers/memberStiffnessModification.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Stiffness Modification to client model - Model.clientModel.service.set_member_stiffness_modification(clientObject) \ No newline at end of file + Model.clientModel.service.set_member_stiffness_modification(clientObject) diff --git a/RFEM/TypesForMembers/memberSupport.py b/RFEM/TypesForMembers/memberSupport.py index 4ccb2166..b5189caa 100644 --- a/RFEM/TypesForMembers/memberSupport.py +++ b/RFEM/TypesForMembers/memberSupport.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Member Support to client model - Model.clientModel.service.set_member_support(clientObject) \ No newline at end of file + Model.clientModel.service.set_member_support(clientObject) diff --git a/RFEM/TypesForNodes/nodalMeshRefinement.py b/RFEM/TypesForNodes/nodalMeshRefinement.py index 07091844..33734ac5 100644 --- a/RFEM/TypesForNodes/nodalMeshRefinement.py +++ b/RFEM/TypesForNodes/nodalMeshRefinement.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Nodal Mesh Refinement to client model - Model.clientModel.service.set_nodal_mesh_refinement(clientObject) \ No newline at end of file + Model.clientModel.service.set_nodal_mesh_refinement(clientObject) diff --git a/RFEM/TypesForSolids/solidContact.py b/RFEM/TypesForSolids/solidContact.py index f37a42ed..0c0ed929 100644 --- a/RFEM/TypesForSolids/solidContact.py +++ b/RFEM/TypesForSolids/solidContact.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Solid Contact to client model - Model.clientModel.service.set_solid_contacts(clientObject) \ No newline at end of file + Model.clientModel.service.set_solid_contacts(clientObject) diff --git a/RFEM/TypesForSolids/solidGas.py b/RFEM/TypesForSolids/solidGas.py index 6e5cfd91..20cf59fb 100644 --- a/RFEM/TypesForSolids/solidGas.py +++ b/RFEM/TypesForSolids/solidGas.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Solid Gas to client model - Model.clientModel.service.set_solid_gas(clientObject) \ No newline at end of file + Model.clientModel.service.set_solid_gas(clientObject) diff --git a/RFEM/TypesForSolids/solidMeshRefinement.py b/RFEM/TypesForSolids/solidMeshRefinement.py index cef1e313..ab077b45 100644 --- a/RFEM/TypesForSolids/solidMeshRefinement.py +++ b/RFEM/TypesForSolids/solidMeshRefinement.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Solid Mesh Refinement to client model - Model.clientModel.service.set_solid_mesh_refinement(clientObject) \ No newline at end of file + Model.clientModel.service.set_solid_mesh_refinement(clientObject) diff --git a/RFEM/TypesForSpecialObjects/surfaceContactType.py b/RFEM/TypesForSpecialObjects/surfaceContactType.py index 867d2d41..615c9e12 100644 --- a/RFEM/TypesForSpecialObjects/surfaceContactType.py +++ b/RFEM/TypesForSpecialObjects/surfaceContactType.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Surface Contact Type to client model - Model.clientModel.service.set_surfaces_contact_type(clientObject) \ No newline at end of file + Model.clientModel.service.set_surfaces_contact_type(clientObject) diff --git a/RFEM/TypesForSurfaces/surfaceEccentricity.py b/RFEM/TypesForSurfaces/surfaceEccentricity.py index eb54685c..7e0fb7e8 100644 --- a/RFEM/TypesForSurfaces/surfaceEccentricity.py +++ b/RFEM/TypesForSurfaces/surfaceEccentricity.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Surface Eccentricity to client model - Model.clientModel.service.set_surface_eccentricity(clientObject) \ No newline at end of file + Model.clientModel.service.set_surface_eccentricity(clientObject) diff --git a/RFEM/TypesForSurfaces/surfaceMeshRefinements.py b/RFEM/TypesForSurfaces/surfaceMeshRefinements.py index 95548006..697562e4 100644 --- a/RFEM/TypesForSurfaces/surfaceMeshRefinements.py +++ b/RFEM/TypesForSurfaces/surfaceMeshRefinements.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Surface Mesh Refinement to client model - Model.clientModel.service.set_surface_mesh_refinement(clientObject) \ No newline at end of file + Model.clientModel.service.set_surface_mesh_refinement(clientObject) diff --git a/RFEM/TypesForSurfaces/surfaceStiffnessModification.py b/RFEM/TypesForSurfaces/surfaceStiffnessModification.py index 4cf78108..0b38981f 100644 --- a/RFEM/TypesForSurfaces/surfaceStiffnessModification.py +++ b/RFEM/TypesForSurfaces/surfaceStiffnessModification.py @@ -23,4 +23,4 @@ def __init__(self, clientObject[key] = params[key] # Add Surface Stifness Modification to client model - Model.clientModel.service.set_surface_stiffness_modification(clientObject) \ No newline at end of file + Model.clientModel.service.set_surface_stiffness_modification(clientObject) diff --git a/RFEM/baseSettings.py b/RFEM/baseSettings.py index ca07d16f..cbfc8ec5 100644 --- a/RFEM/baseSettings.py +++ b/RFEM/baseSettings.py @@ -1,5 +1,5 @@ -from RFEM.initModel import * -from RFEM.enums import * +from RFEM.initModel import Model, clearAtributes +from RFEM.enums import GlobalAxesOrientationType, LocalAxesOrientationType class BaseSettings(): def __init__(self, diff --git a/RFEM/initModel.py b/RFEM/initModel.py index f5419526..ecd019e6 100644 --- a/RFEM/initModel.py +++ b/RFEM/initModel.py @@ -1,7 +1,6 @@ import sys -from RFEM.enums import * -#import json -#import xml.etree.ElementTree as ET +import csv +from RFEM.enums import ObjectTypes, ModelType # Import SUDS module try: @@ -90,7 +89,7 @@ import subprocess try: subprocess.call('python -m pip install xmltodict --user') - import requests + import xmltodict except: print('WARNING: Installation of xmltodict library failed!') print('Please use command "pip install xmltodict --user" in your Command Prompt.') @@ -100,8 +99,6 @@ input('Press Enter to exit...') sys.exit() -import csv - # Connect to server # Check server port range set in "Program Options & Settings" # By default range is set between 8081 ... 8089 @@ -128,10 +125,14 @@ # Without next 4 lines the connection lasts only 1 request, # the message: 'Application is locked by external connection' # is blinking whole time and the execution is unnecessarily long. -session = requests.Session() -adapter = requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1) -session.mount('http://', adapter) -trans = suds_requests.RequestsTransport(session) +# This solution works with unit-tests. +def persistent(): + session = requests.Session() + adapter = requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1) + session.mount('http://', adapter) + return suds_requests.RequestsTransport(session) + +trans = persistent() class Model(): clientModel = None @@ -142,10 +143,10 @@ def __init__(self, reset: bool=False): cModel = None - modelLst = client.service.get_model_list() + modelLs = client.service.get_model_list() if new_model: - if modelLst and model_name in modelLst.name: + if modelLs and model_name in modelLs.name: new = client.service.open_model(model_name) + 'wsdl' cModel = Client(new, transport=trans) cModel.service.delete_all_results() @@ -155,8 +156,8 @@ def __init__(self, cModel = Client(new, transport=trans) else: modelIndex = 0 - for i in range(len(modelLst)): - if modelLst[i] == model_name: + for i,j in enumerate(modelLs): + if modelLs[i] == model_name: modelIndex = i new = client.service.get_model(modelIndex) + 'wsdl' cModel = Client(new, transport=trans) @@ -243,30 +244,91 @@ def ConvertToDlString(s): s = ' '.join(new_lst) return s -def method_exists(client, method_or_type): +def CheckIfMethodOrTypeExists(modelClient, method_or_type, unitTestMode=False): """ Check if SOAP method or type is present in your version of RFEM/RSTAB. + Use it only in your examples. + Unit tests except msg from SUDS where this is checked already. Args: - client (Model.clientModel) + modelClient (Model.clientModel) method_or_type (string): method or type of SOAP client Returns: - [type]: bool + bool: Status of method or type. Note: To get list of methods invoke: list_of_methods = [method for method in Model.clientModel.wsdl.services[0].ports[0]] """ - if client is None: - print("WARNING: Client is not initialized.") - return False - if method_or_type in str(client): - return True - else: - print("WARNING: Used method/type: %s is not implemented in Web Services yet." % (method_or_type)) + assert modelClient is not None, "WARNING: modelClient is not initialized." + + if method_or_type not in str(modelClient): + if unitTestMode: + return True + else: + assert False, "WARNING: Used method/type: %s is not implemented in Web Services yet." % (method_or_type) + + return not unitTestMode + + +def CheckAddonStatus(modelClient, addOn = "stress_analysis_active"): + """ + Check if Add-on is reachable and active. + For some types of objects, specific Add-ons need to be ennabled. + + Args: + modelClient (Model.clientModel) + method_or_type (string): method or type of SOAP client + + Returns: + (bool): Status of Add-on + """ + if modelClient is None: + print("WARNING: modelClient is not initialized.") return False + addons = modelClient.service.get_addon_statuses() + dct = {} + for lstType in addons: + if not isinstance(lstType[1], bool) and len(lstType[1]) > 1: + addon = [lst for lst in lstType[1]] + for item in addon: + dct[str(item[0])] = bool(item[1]) + elif isinstance(lstType[1], bool): + dct[str(lstType[0])] = bool(lstType[1]) + else: + assert False + + # sanity check + assert addOn in dct, "WARNING: %s Add-on can not be reached." % (addOn) + + return dct[addOn] + +def SetAddonStatus(modelClient, addOn = "stress_analysis_active", status = True): + """ + Activate or deactivate Add-on. + For some types of objects, specific Add-ons need to be ennabled. + + Args: + modelClient (Model.clientModel) + method_or_type (string): method or type of SOAP client + status (bool): in/active + """ + + # this will also provide sanity check + currentStatus = CheckAddonStatus(modelClient, addOn) + if currentStatus != status: + addonLst = modelClient.service.get_addon_statuses() + if addOn in addonLst['__keylist__']: + addonLst[addOn] = status + else: + for listType in addonLst['__keylist__']: + if not isinstance(addonLst[listType], bool) and addOn in addonLst[listType]: + addonLst[listType][addOn] = status + + modelClient.service.set_addon_statuses(addonLst) + def CalculateSelectedCases(loadCases: list = None, designSituations: list = None, loadCombinations: list = None): ''' This method calculate just selected objects - load cases, desingSituations, loadCombinations diff --git a/UnitTests/Examples.py b/UnitTests/Examples.py new file mode 100644 index 00000000..7fe220fc --- /dev/null +++ b/UnitTests/Examples.py @@ -0,0 +1,23 @@ +import os +import sys +import subprocess +from fnmatch import fnmatch +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) + +root = PROJECT_ROOT+"\\Examples" +pattern = "*.py" + +def test_examples(): + """ + Run this function in order to execute all *.py files in Examples folder. + This routine is exempt from standard pytest collection because it requires manual input. + """ + for path, subdirs, files in os.walk(root): + for name in files: + if fnmatch(name, pattern) and name != "__init__.py": + example = os.path.join(path, name) + subprocess.call(example, shell=True) diff --git a/UnitTests/template.py b/UnitTests/template.py new file mode 100644 index 00000000..65a1d8d5 --- /dev/null +++ b/UnitTests/template.py @@ -0,0 +1,73 @@ +######################################################### +## This is the unit test template. +## All good practices and requirements related to unit tests +## will be recorded here. Feel free to add whatever you feel +## as important or new to unit tests and testing procedure. +######################################################### + +# Name of the test module/file starts with test_... +# Feel free to start the unit test by copying the content of this file +# to ensure that the latest requirements are met. + +# import only used modules +# avoid wild-card import (from RFEM.enums import *) is possible +import os +import sys +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) + +import pytest +from RFEM.initModel import Model, CheckIfMethodOrTypeExists +# Unused imports are displayed in dark green. +from RFEM.enums import MemberType + +# When running tests individually the Model needs to be explicitly initialized. +# If all tests are executed together this expresion is False. +if Model.clientModel is None: + Model() + +# 'pytestmark' sets same parameters (in this case 'skipif') to all functions in the module or class at once. +#pytestmark = pytest.mark.skipif(CheckIfMethodOrTypeExists(Model... + +# Use 'skipif' if you wish to skip individual test function conditionally +@pytest.mark.skipif(CheckIfMethodOrTypeExists(Model().clientModel,'set_model_settings_and_options', True), reason="set_model_settings_and_options not in RFEM yet") + +# Name of the test function starts with test_... +# If no specific need to atomize the testing procedure, pack as much funtionality as possible in one test. +# Write sepatate test when used method/type is not in RFEM yet, to be able to skip it for example. +def template(): + """ + Optional docstring describing the testing procedure + """ + # In every test function run 'reset' first to clean up the model. + # It is important to run it before begin_modification or after finish_modification, + # otherwise begin_modification doesn't take effect. + Model.clientModel.service.reset() + + # Speed up the execution of the test. + Model.clientModel.service.begin_modification() + + # Body of testing procedure + # IMPORTANT: + # Every functionality needs to be tested only once. + # Avoid duplicating since it only adds to cost of maintaining tests. + + # The best way to test corrrectness is either run Calculate_all or asserts. + # Get the object set by test and verify its parameterts. Asserts are + # well recieved by pytest and messages are reported to user. + assert Model.clientModel is not None, "WARNING: clientModel is not initialized" + + Model.clientModel.service.finish_modification() + +# No print("Ready") is necessary. Pytest doesnt print stdout to user if not specified. +# No return code is necessary. Pytest doesn't use it. + +# BEFORE COMMIT: + # - use formating (SHIFT + ALT + F) & linter (pylint UnitTests\template.py) + # - clean up all unused/prototype code + # - run all tests and examples to ensure everything works + +### END OF UNIT TEST TEMPLATE ### diff --git a/UnitTests/test_BaseSettings_test.py b/UnitTests/test_BaseSettings_test.py index 21f67c58..5bf5bacb 100644 --- a/UnitTests/test_BaseSettings_test.py +++ b/UnitTests/test_BaseSettings_test.py @@ -6,24 +6,19 @@ ) sys.path.append(PROJECT_ROOT) import pytest -from RFEM.enums import * +from RFEM.enums import GlobalAxesOrientationType, LocalAxesOrientationType from RFEM.baseSettings import BaseSettings -from RFEM.initModel import method_exists +from RFEM.initModel import Model, CheckIfMethodOrTypeExists -def test_base_settings_implemented(): - - exist = method_exists(clientModel,'set_model_settings_and_options') - assert exist == False #test fail once method is in T9 master or GM - -@pytest.mark.skip("all tests still WIP") +@pytest.mark.skipif(CheckIfMethodOrTypeExists(Model().clientModel,'set_model_settings_and_options', True), reason="set_model_settings_and_options not in RFEM yet") def test_baseSettings(): + if Model.clientModel is None: + Model() + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Set Base Settings BaseSettings(12, GlobalAxesOrientationType.E_GLOBAL_AXES_ORIENTATION_ZUP, LocalAxesOrientationType.E_LOCAL_AXES_ORIENTATION_ZUP, [0.001, 0.002, 0.003, 0.004]) - print('Ready!') - Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_DesignSituations.py b/UnitTests/test_DesignSituations.py index 76735582..7411d098 100644 --- a/UnitTests/test_DesignSituations.py +++ b/UnitTests/test_DesignSituations.py @@ -10,13 +10,17 @@ # Import der Bibliotheken from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings from RFEM.LoadCasesAndCombinations.designSituation import DesignSituation +if Model.clientModel is None: + Model() + def test_design_situation(): - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() StaticAnalysisSettings() @@ -58,4 +62,4 @@ def test_design_situation(): DesignSituation(11, design_situation_type= 6195, active= False) ds = Model.clientModel.service.get_design_situation(11) assert ds.no == 11 - Model.clientModel.service.finish_modification() \ No newline at end of file + Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_Free_Load_Test.py b/UnitTests/test_Free_Load_Test.py index a49a849b..2bbdbea1 100644 --- a/UnitTests/test_Free_Load_Test.py +++ b/UnitTests/test_Free_Load_Test.py @@ -18,9 +18,13 @@ from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings from RFEM.LoadCasesAndCombinations.loadCase import LoadCase +if Model.clientModel is None: + Model() + def test_free_load(): - Model(True, "FreeLoad") - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() Material(1, 'S235') @@ -205,8 +209,6 @@ def test_free_load(): [[1, 4], [0, 6], [2, 6]], [1500, 7500, 2, 1]) - #print(Model.clientModel) #Calculate_all() - print('Ready!') Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_GlobalParameters_Test.py b/UnitTests/test_GlobalParameters_Test.py index 1b5452c4..9f155de4 100644 --- a/UnitTests/test_GlobalParameters_Test.py +++ b/UnitTests/test_GlobalParameters_Test.py @@ -14,10 +14,14 @@ from RFEM.globalParameter import GlobalParameter from RFEM.initModel import * +if Model.clientModel is None: + Model() + def test_global_parameters(): - Model.clientModel.service.begin_modification('new') - #not yet implemented in RFEM6 GM + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() + GlobalParameter.AddParameter(GlobalParameter, no= 1, name= 'Test_1', @@ -63,6 +67,4 @@ def test_global_parameters(): definition_parameter= [0.25], comment= 'Comment_5') - print('Ready!') - - Model.clientModel.service.finish_modification() \ No newline at end of file + Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_LineLoads_Test.py b/UnitTests/test_LineLoads_Test.py index 973f8210..976ccb5f 100644 --- a/UnitTests/test_LineLoads_Test.py +++ b/UnitTests/test_LineLoads_Test.py @@ -20,10 +20,13 @@ from RFEM.BasicObjects.surface import Surface from RFEM.LoadCasesAndCombinations.loadCase import LoadCase +if Model.clientModel is None: + Model() + def test_line_loads(): - Model(True, "LineLoads") - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Creating a lot of lines for line load testing @@ -155,7 +158,5 @@ def test_line_loads(): individual_mass_components=True, mass_components=[1000,1000,10000]) - print('Ready!') - Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_LoadCases_Test.py b/UnitTests/test_LoadCases_Test.py index acf2a9ca..197e20f0 100644 --- a/UnitTests/test_LoadCases_Test.py +++ b/UnitTests/test_LoadCases_Test.py @@ -7,16 +7,23 @@ sys.path.append(PROJECT_ROOT) # Import der Bibliotheken +import pytest from RFEM.enums import * from RFEM.initModel import * from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings from RFEM.LoadCasesAndCombinations.loadCase import LoadCase +if Model.clientModel is None: + Model() + +@pytest.mark.skip("all tests still WIP") def test_load_case(): - Model(True, "LoadCases") - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() StaticAnalysisSettings() + # DIN_Action_Category will only work with German localization LoadCase.StaticAnalysis(LoadCase, 1, 'SW', True, 1, DIN_Action_Category['1A'], [True, 0, 0, 1]) LoadCase.StaticAnalysis(LoadCase, 2, 'SDL', True, 1, DIN_Action_Category['1C'], [True, 0.1, 0.1, 0]) LoadCase.StaticAnalysis(LoadCase, 3, 'Snow', True, 1, DIN_Action_Category['4A'], [False]) diff --git a/UnitTests/test_LoadDistributionSurface_Test.py b/UnitTests/test_LoadDistributionSurface_Test.py index b71a3177..4637e769 100644 --- a/UnitTests/test_LoadDistributionSurface_Test.py +++ b/UnitTests/test_LoadDistributionSurface_Test.py @@ -18,9 +18,13 @@ from RFEM.BasicObjects.line import Line from RFEM.BasicObjects.surface import Surface +if Model.clientModel is None: + Model() + def test_load_distribution_surface(): - Model(True, "LoadDistributionSurfaces") - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Testing the Default Function Node(1, 0, -30, 0), Node(2, 10, -30, 0), Node(3, 10, -20, 0), Node(4, 0, -20, 0) @@ -36,4 +40,3 @@ def test_load_distribution_surface(): surface_weight_enabled=True, surface_weight=10, loaded_lines='6 7 8', excluded_lines='5') Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_MemberLoad_test.py b/UnitTests/test_MemberLoad_test.py index 6b874409..40568bad 100644 --- a/UnitTests/test_MemberLoad_test.py +++ b/UnitTests/test_MemberLoad_test.py @@ -13,11 +13,15 @@ from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.material import Material -from RFEM.initModel import * +from RFEM.initModel import Model, Calculate_all from RFEM.enums import * +if Model.clientModel is None: + Model() + def test_member_loads(): - Model(True, "MemberLoad") + + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -255,7 +259,5 @@ def test_member_loads(): Calculate_all() - print('Ready!') - Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_MemberSetLoad_test.py b/UnitTests/test_MemberSetLoad_test.py index 16fe769c..cb5fef04 100644 --- a/UnitTests/test_MemberSetLoad_test.py +++ b/UnitTests/test_MemberSetLoad_test.py @@ -14,11 +14,15 @@ from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.material import Material -from RFEM.initModel import * +from RFEM.initModel import Model, Calculate_all from RFEM.enums import * +if Model.clientModel is None: + Model() + def test_member_set_load(): - Model(True, "MemberSetLoad") + + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -252,7 +256,5 @@ def test_member_set_load(): Calculate_all() - print('Ready!') - Model.clientModel.service.finish_modification() diff --git a/Examples/Member_test.py b/UnitTests/test_Member_test.py similarity index 97% rename from Examples/Member_test.py rename to UnitTests/test_Member_test.py index d5cdf277..99de17cd 100644 --- a/Examples/Member_test.py +++ b/UnitTests/test_Member_test.py @@ -6,7 +6,7 @@ ) sys.path.append(PROJECT_ROOT) from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.thickness import Thickness @@ -15,9 +15,13 @@ from RFEM.TypesForMembers.memberHinge import MemberHinge from RFEM.TypesForMembers.memberDefinableStiffness import MemberDefinableStiffness -if __name__ == '__main__': +if Model.clientModel is None: + Model() - Model.clientModel.service.begin_modification('new') +def test_all_member_types(): + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() Material(1, 'S235') Material(2, 'C30/37') @@ -131,6 +135,4 @@ # Member Coupling Hinge Hinge Member.CouplingHingeHinge(0, 30, 59, 60) - print('Ready!') - Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_MembraneSurface_Test.py b/UnitTests/test_MembraneSurface_Test.py index 8c2eb3f8..9a00de2a 100644 --- a/UnitTests/test_MembraneSurface_Test.py +++ b/UnitTests/test_MembraneSurface_Test.py @@ -11,16 +11,20 @@ # Import the relevant Libraries from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.thickness import Thickness from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.line import Line from RFEM.BasicObjects.surface import Surface +if Model.clientModel is None: + Model() + def test_membrane_surface(): - Model(True, "MemberSurface") - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Testing the standard surface function Node(1, 0, -30, 0), Node(2, 10, -30, 0), Node(3, 10, -20, 0), Node(4, 0, -20, 0) @@ -73,4 +77,3 @@ def test_membrane_surface(): Surface.Membrane(Surface, 5, SurfaceGeometry.GEOMETRY_QUADRANGLE, [17, 18, 19, 20], '13 14 15 16') Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_MembraneWithoutTensionSurface_Test.py b/UnitTests/test_MembraneWithoutTensionSurface_Test.py index 52d8908d..c43d063b 100644 --- a/UnitTests/test_MembraneWithoutTensionSurface_Test.py +++ b/UnitTests/test_MembraneWithoutTensionSurface_Test.py @@ -18,9 +18,13 @@ from RFEM.BasicObjects.line import Line from RFEM.BasicObjects.surface import Surface +if Model.clientModel is None: + Model() + def test_membrane_without_tension_surface(): - Model(True, "MembraneWithoutTensinSurface") - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Testing the standard surface function Node(1, 0, -30, 0), Node(2, 10, -30, 0), Node(3, 10, -20, 0), Node(4, 0, -20, 0) @@ -73,4 +77,3 @@ def test_membrane_without_tension_surface(): Surface.WithoutMemberaneTension(Surface, 4, SurfaceGeometry.GEOMETRY_QUADRANGLE, [17, 18, 19, 20], '13 14 15 16') Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_MeshGenerationStatistics.py b/UnitTests/test_MeshGenerationStatistics.py index 4812a2bd..3f94c134 100644 --- a/UnitTests/test_MeshGenerationStatistics.py +++ b/UnitTests/test_MeshGenerationStatistics.py @@ -12,17 +12,16 @@ from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.thickness import Thickness from RFEM.BasicObjects.material import Material -from RFEM.initModel import * +from RFEM.initModel import Model, CheckIfMethodOrTypeExists, GenerateMesh, GetMeshStatics from RFEM.enums import * -def test_generation_mesh_implemented(): +if Model.clientModel is None: + Model() - exist = method_exists(clientModel,'generate_mesh') - assert exist == False #test fail once method is in T9 master or GM - -@pytest.mark.skip("all tests still WIP") +@pytest.mark.skipif(CheckIfMethodOrTypeExists(Model.clientModel,'generate_mesh', True), reason="generate_mesh not in RFEM yet") def test_generation_of_mesh_statistics(): - # modal analysis not yet implemmented in released RFEM6 + + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -45,11 +44,7 @@ def test_generation_of_mesh_statistics(): GenerateMesh() - print('Ready!') - Model.clientModel.service.finish_modification() + # Missing validation mesh_stats = GetMeshStatics() - - print(mesh_stats) - diff --git a/UnitTests/test_NodalLoad_test.py b/UnitTests/test_NodalLoad_test.py index 22579b72..f8468c7a 100644 --- a/UnitTests/test_NodalLoad_test.py +++ b/UnitTests/test_NodalLoad_test.py @@ -16,9 +16,12 @@ from RFEM.initModel import * from RFEM.enums import * +if Model.clientModel is None: + Model() def test_nodal_load(): - Model(True, "NodalLoad") + + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -75,7 +78,5 @@ def test_nodal_load(): Calculate_all() - print('Ready!') - Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_RigidSurface_Test.py b/UnitTests/test_RigidSurface_Test.py index 845d934d..8a2f338b 100644 --- a/UnitTests/test_RigidSurface_Test.py +++ b/UnitTests/test_RigidSurface_Test.py @@ -18,9 +18,13 @@ from RFEM.BasicObjects.line import Line from RFEM.BasicObjects.surface import Surface +if Model.clientModel is None: + Model() + def test_rigid_surface(): - Model(True, "RigidSurface") - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Testing the standard surface function Node(1, 0, -30, 0), Node(2, 10, -30, 0), Node(3, 10, -20, 0), Node(4, 0, -20, 0) diff --git a/UnitTests/test_SolidLoads.py b/UnitTests/test_SolidLoads.py index a81da991..ed6ffedd 100644 --- a/UnitTests/test_SolidLoads.py +++ b/UnitTests/test_SolidLoads.py @@ -1,3 +1,11 @@ +import sys +import os +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) + from RFEM.Loads.solidLoad import SolidLoad from RFEM.Loads.solidSetLoad import SolidSetLoad from RFEM.enums import * @@ -14,8 +22,13 @@ from RFEM.LoadCasesAndCombinations.loadCase import LoadCase from RFEM.Loads.nodalLoad import NodalLoad +if Model.clientModel is None: + Model() + def test_solid_loads(): - Model.clientModel.service.begin_modification('new') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() Material(1, 'S235') @@ -154,6 +167,5 @@ def test_solid_loads(): SolidSetLoad.Gass() #Calculate_all() - print('Ready!') Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_SpectralSettings_test.py b/UnitTests/test_SpectralSettings_test.py index 4e6d8413..1c0089b4 100644 --- a/UnitTests/test_SpectralSettings_test.py +++ b/UnitTests/test_SpectralSettings_test.py @@ -9,19 +9,16 @@ from RFEM.initModel import * from RFEM.BasicObjects.material import Material from RFEM.LoadCasesAndCombinations.spectralAnalysisSettings import SpectralAnalysisSettings -import pytest -def test_spectral_analysis_implemented(): +if Model.clientModel is None: + Model() - exist = method_exists(Model.clientModel,'set_spectral_analysis_settings') - assert exist == False #test fail once method is in T9 master or GM - -@pytest.mark.skip("all tests still WIP") def test_spectral_analysis_settings(): - #spectral analysis is not yet supported in released RFEM6 in WS - Model(True, "SpectralSettings") - Model.clientModel.service.begin_modification('new') + CheckIfMethodOrTypeExists(Model.clientModel,'set_spectral_analysis_settings') + + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Create Material Material(1, 'S235') @@ -34,6 +31,4 @@ def test_spectral_analysis_settings(): SpectralAnalysisSettings(5, 'SpectralSettings_5', PeriodicResponseCombinationRule.CQC, DirectionalComponentCombinationRule.SCALED_SUM, damping_for_cqc_rule=CqsDampingRule.DIFFERENT_FOR_EACH_MODE) SpectralAnalysisSettings(6, 'SpectralSettings_6', PeriodicResponseCombinationRule.CQC, DirectionalComponentCombinationRule.ABSOLUTE_SUM) - print('Ready!') - Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_StandardSurface_Test.py b/UnitTests/test_StandardSurface_Test.py index 3059a35d..0217b258 100644 --- a/UnitTests/test_StandardSurface_Test.py +++ b/UnitTests/test_StandardSurface_Test.py @@ -18,10 +18,13 @@ from RFEM.BasicObjects.line import Line from RFEM.BasicObjects.surface import Surface +if Model.clientModel is None: + Model() + def test_standard_surface(): - Model(True, "StandardSurface") - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Testing the standard surface function Node(1, 0, -30, 0), Node(2, 10, -30, 0), Node(3, 10, -20, 0), Node(4, 0, -20, 0) @@ -74,4 +77,3 @@ def test_standard_surface(): Surface.Standard(Surface, 4, SurfaceGeometry.GEOMETRY_QUADRANGLE, [17, 18, 19, 20], '13 14 15 16') Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_SurfaceLoad_test.py b/UnitTests/test_SurfaceLoad_test.py index 0f1efce7..5476a19f 100644 --- a/UnitTests/test_SurfaceLoad_test.py +++ b/UnitTests/test_SurfaceLoad_test.py @@ -14,12 +14,15 @@ from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.thickness import Thickness from RFEM.BasicObjects.material import Material -from RFEM.initModel import * +from RFEM.initModel import Model, Calculate_all from RFEM.enums import * +if Model.clientModel is None: + Model() + def test_surface_loads(): - Model(True, "SurfaceLoad") + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -68,9 +71,8 @@ def test_surface_loads(): SurfaceLoad.Force(0, 4, 1, '1', SurfaceLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, SurfaceLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, load_parameter=[5000, 6000, 3, 4]) ## Force Type Surface Load with RADIAL Load Distribution ## - - #SurfaceLoad.Force(0, 5, 1, '1', SurfaceLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, SurfaceLoadDistribution.LOAD_DISTRIBUTION_RADIAL, - #(5000, 6000, 3, 4, SurfaceLoadAxisDefinitionType.AXIS_DEFINITION_TWO_POINTS, [1,2,3], [4,5,6])) + SurfaceLoad.Force(0, 5, 1, '1', SurfaceLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, SurfaceLoadDistribution.LOAD_DISTRIBUTION_RADIAL, + (5000, 6000, 3, 4, SurfaceLoadAxisDefinitionType.AXIS_DEFINITION_TWO_POINTS, [1,2,3], [4,5,6])) ## Temperature Type Surface Load with UNIFORM Load Distribution ## SurfaceLoad.Temperature(0, 6, 1, '1', SurfaceLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, load_parameter=[18, 2]) @@ -94,14 +96,11 @@ def test_surface_loads(): SurfaceLoad.Precamber(0, 12, 1, '1', 50) ## Rotary Motion Surface Load ## - #SurfaceLoad.RotaryMotion(0, 13, 1, '1', load_parameter=[1, 2, SurfaceLoadAxisDefinitionType.AXIS_DEFINITION_TWO_POINTS, [1,2,3], [4,5,6]]) + SurfaceLoad.RotaryMotion(0, 13, 1, '1', load_parameter=[1, 2, SurfaceLoadAxisDefinitionType.AXIS_DEFINITION_TWO_POINTS, [1,2,3], [4,5,6]]) ## Mass Type Surface Load ## - #SurfaceLoad.Mass(0, 14, 1, '1', individual_mass_components=True, mass_parameter=[500, 600, 700]) + SurfaceLoad.Mass(0, 14, 1, '1', individual_mass_components=True, mass_parameter=[500, 600, 700]) Calculate_all() - print('Ready!') - Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_SurfaceSetLoad_test.py b/UnitTests/test_SurfaceSetLoad_test.py index 6d614cf7..26b0a89f 100644 --- a/UnitTests/test_SurfaceSetLoad_test.py +++ b/UnitTests/test_SurfaceSetLoad_test.py @@ -15,12 +15,15 @@ from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.thickness import Thickness from RFEM.BasicObjects.material import Material -from RFEM.initModel import * +from RFEM.initModel import Model, Calculate_all from RFEM.enums import * +if Model.clientModel is None: + Model() + def test_surface_set_load(): - Model(True, "SurfaceSetLoad") + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -139,7 +142,4 @@ def test_surface_set_load(): Calculate_all() - print('Ready!') - Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_Thickness_Test.py b/UnitTests/test_Thickness_Test.py index fa16cd47..919bd207 100644 --- a/UnitTests/test_Thickness_Test.py +++ b/UnitTests/test_Thickness_Test.py @@ -13,10 +13,13 @@ from RFEM.BasicObjects.thickness import Thickness from RFEM.BasicObjects.node import Node +if Model.clientModel is None: + Model() + def test_thickness(): - Model(True, "Thickness") - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() Material(1, 'C30/37') ## THICKNESS TYPE @@ -68,13 +71,15 @@ def test_thickness(): properties= [0.1, 0.5], comment= 'Comment') - # # Layers + # Layers + """ skipped Thickness.Layers(Thickness, no= 7, name= 'Layers', layers= [[1, 1, 0.123, 0, 'Schicht 1'], [0, 1, 0.456, 90, 'Schicht 2']], comment= 'Comment') + """ # Shape Orthotropy Thickness.ShapeOrthotropy(Thickness, @@ -100,6 +105,5 @@ def test_thickness(): comment= 'Comment') #Calculate_all() - print('Ready!') Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_WithoutThicknessSurface_Test.py b/UnitTests/test_WithoutThicknessSurface_Test.py index be9abd66..18c15bce 100644 --- a/UnitTests/test_WithoutThicknessSurface_Test.py +++ b/UnitTests/test_WithoutThicknessSurface_Test.py @@ -11,17 +11,20 @@ ## Import the relevant Libraries from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.thickness import Thickness from RFEM.BasicObjects.node import Node from RFEM.BasicObjects.line import Line from RFEM.BasicObjects.surface import Surface +if Model.clientModel is None: + Model() + def test_without_thickness_surface(): - Model(True, "WithoutThicknessSurface") - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() # Testing the standard surface function Node(1, 0, -30, 0), Node(2, 10, -30, 0), Node(3, 10, -20, 0), Node(4, 0, -20, 0) @@ -74,4 +77,3 @@ def test_without_thickness_surface(): Surface.WithoutThickness(Surface, 4, SurfaceGeometry.GEOMETRY_QUADRANGLE, [17, 18, 19, 20], '13 14 15 16') Model.clientModel.service.finish_modification() - diff --git a/UnitTests/test_basic_objects.py b/UnitTests/test_basic_objects.py index 911503f8..2bf85494 100644 --- a/UnitTests/test_basic_objects.py +++ b/UnitTests/test_basic_objects.py @@ -5,8 +5,9 @@ os.pardir) ) sys.path.append(PROJECT_ROOT) +import pytest from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.thickness import Thickness @@ -19,6 +20,9 @@ from RFEM.BasicObjects.memberSet import MemberSet from RFEM.BasicObjects.memberByLine import MemberByLine +if Model.clientModel is None: + Model() + def test_line_init(): Model.clientModel.service.reset() @@ -366,11 +370,10 @@ def test_thickness_4corners(): Node(3, 3, 3, 0) Node(4, 0, 3, 0) - Thickness.Variable_4SurfaceCorners - Model.clientModel.service.finish_modification() - Thickness.Variable_4SurfaceCorners(0, 1, '4', 1, [0.2, 1, 0.15, 2, 0.1, 3, 0.05, 4]) + Model.clientModel.service.finish_modification() + thickness = Model.clientModel.service.get_thickness(1) assert thickness.type == "TYPE_VARIABLE_FOUR_SURFACE_CORNERS" @@ -392,6 +395,7 @@ def test_thickness_circle(): assert thickness.type == "TYPE_VARIABLE_CIRCLE" assert thickness.thickness_circle_line == 0.1 +@pytest.mark.skip("all tests still WIP") def test_thickness_layers(): Model.clientModel.service.reset() diff --git a/UnitTests/test_loads.py b/UnitTests/test_loads.py index 01db4ea5..90151ea7 100644 --- a/UnitTests/test_loads.py +++ b/UnitTests/test_loads.py @@ -6,7 +6,7 @@ ) sys.path.append(PROJECT_ROOT) from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.thickness import Thickness @@ -21,10 +21,12 @@ from RFEM.Loads.lineLoad import LineLoad from RFEM.Loads.nodalLoad import NodalLoad from RFEM.Loads.surfaceLoad import SurfaceLoad -from RFEM.Loads.lineLoad import LineLoad +from RFEM.Loads.freeLoad import FreeLoad -### Nodal Load Unit Tests ### +if Model.clientModel is None: + Model() +### Nodal Load Unit Tests ### def test_nodal_load_init(): Model.clientModel.service.reset() @@ -1099,4 +1101,3 @@ def test_free_polygon_load(): assert free_load.no == 1 assert free_load.magnitude_uniform == 5000 - diff --git a/UnitTests/test_member.py b/UnitTests/test_member.py index 385bda5f..0a292352 100644 --- a/UnitTests/test_member.py +++ b/UnitTests/test_member.py @@ -1,21 +1,24 @@ import os import sys -baseName = os.path.basename(__file__) -dirName = os.path.dirname(__file__) -print('basename: ', baseName) -print('dirname: ', dirName) -sys.path.append(dirName + r'/..') +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model 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.TypesForMembers.memberDefinableStiffness import MemberDefinableStiffness +import pytest +if Model.clientModel is None: + Model() - +pytestmark = pytest.mark.skip(False, reason="This test can be skipped/deleted since test_member_test does the same.") def test_init(): Model.clientModel.service.reset() diff --git a/UnitTests/test_modalAnalysis_test.py b/UnitTests/test_modalAnalysis_test.py index 48caa61a..79e9e8d6 100644 --- a/UnitTests/test_modalAnalysis_test.py +++ b/UnitTests/test_modalAnalysis_test.py @@ -1,3 +1,12 @@ +import sys +import pytest +import os +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) + from RFEM.enums import * from RFEM.initModel import * from RFEM.BasicObjects.material import Material @@ -8,25 +17,14 @@ from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings from RFEM.LoadCasesAndCombinations.loadCase import LoadCase from RFEM.LoadCasesAndCombinations.modalAnalysisSettings import ModalAnalysisSettings -import sys -import pytest -import os -PROJECT_ROOT = os.path.abspath(os.path.join( - os.path.dirname(__file__), - os.pardir) -) -sys.path.append(PROJECT_ROOT) - -def test_modal_analysis_implemented(): - exist = method_exists(clientModel,'set_modal_analysis_settings') - assert exist == False #test fail once method is in T9 master or GM +if Model.clientModel is None: + Model() -@pytest.mark.skip("all tests still WIP") +@pytest.mark.skipif(CheckIfMethodOrTypeExists(Model.clientModel,'set_modal_analysis_settings', True), reason="set_modal_analysis_settings not in RFEM yet") def test_modal_analysis_settings(): - # modal analysis not yet implemmented in released RFEM6 - Model(True, "ModalAnalysis") + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() # Create Material @@ -61,9 +59,8 @@ def test_modal_analysis_settings(): } # Load Case Modal LoadCase(2, 'MODAL',params=modalParams) - Calculate_all() - print('Ready!') + Calculate_all() Model.clientModel.service.finish_modification() diff --git a/UnitTests/test_objectInformation.py b/UnitTests/test_objectInformation.py index 426d378a..cca219e8 100644 --- a/UnitTests/test_objectInformation.py +++ b/UnitTests/test_objectInformation.py @@ -7,8 +7,8 @@ sys.path.append(PROJECT_ROOT) # Import the relevant Libraries -from RFEM.enums import * -from RFEM.initModel import * +from RFEM.enums import SelectedObjectInformation +from RFEM.initModel import CheckIfMethodOrTypeExists, Model from RFEM.BasicObjects.material import Material from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.thickness import Thickness @@ -17,10 +17,19 @@ from RFEM.BasicObjects.member import Member from RFEM.BasicObjects.surface import Surface from RFEM.Tools.centreOfGravityAndObjectInfo import ObjectInformation +from math import sqrt +import pytest +if Model.clientModel is None: + Model() + +# pytestmark sets same parameters (in this case skipif) to all functions in the module or class +pytestmark = pytest.mark.skipif(CheckIfMethodOrTypeExists(Model.clientModel,'ns0:array_of_get_center_of_gravity_and_objects_info_elements_type', True), + reason="ns0:array_of_get_center_of_gravity_and_objects_info_elements_type not in RFEM yet") def test_centre_of_gravity(): - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() x1, y1, z1, = 0, 0, 0 x2, y2, z2 = 4, 10, -6 @@ -34,7 +43,6 @@ def test_centre_of_gravity(): CoG_X = (x2 - x1) / 2 CoG_Y = (y2 - y1) / 2 CoG_Z = (z2 - z1) / 2 - L = round(sqrt((x2 - x1)**2 + (y2 - y1)**2 + (z2 - z1)**2),3) assert CoG_X == ObjectInformation.CentreOfGravity(ObjectInformation, coord= 'X') assert CoG_Y == ObjectInformation.CentreOfGravity(ObjectInformation, coord= 'Y') @@ -42,7 +50,8 @@ def test_centre_of_gravity(): def test_member_information(): - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() x1, y1, z1, = 0, 0, 0 x2, y2, z2 = 4, 10, -6 @@ -64,7 +73,8 @@ def test_member_information(): def test_surface_information(): - Model.clientModel.service.begin_modification('new') + Model.clientModel.service.reset() + Model.clientModel.service.begin_modification() x1, y1, z1 = 0 , 0, 0 x2, y2, z2 = 10, 0, 0 @@ -85,4 +95,4 @@ def test_surface_information(): assert round(A,3) == ObjectInformation.SurfaceInformation(ObjectInformation, information= SelectedObjectInformation.AREA) assert round(V,3) == ObjectInformation.SurfaceInformation(ObjectInformation, information= SelectedObjectInformation.VOLUME) - assert round(M,3) == ObjectInformation.SurfaceInformation(ObjectInformation, information= SelectedObjectInformation.MASS) \ No newline at end of file + assert round(M,3) == ObjectInformation.SurfaceInformation(ObjectInformation, information= SelectedObjectInformation.MASS) diff --git a/UnitTests/test_stabilitysettings.py b/UnitTests/test_stabilitysettings.py index de801f28..bd5994a5 100644 --- a/UnitTests/test_stabilitysettings.py +++ b/UnitTests/test_stabilitysettings.py @@ -7,10 +7,13 @@ ) sys.path.append(PROJECT_ROOT) from RFEM.enums import * -from RFEM.initModel import * +from RFEM.initModel import Model, CheckIfMethodOrTypeExists from RFEM.LoadCasesAndCombinations.stabilityAnalysisSettings import StabilityAnalysisSettings -@pytest.mark.skip("all tests still WIP") +if Model.clientModel is None: + Model() + +pytestmark = pytest.mark.skipif(CheckIfMethodOrTypeExists(Model.clientModel,'ns0:stability_analysis_settings', True), reason="Type ns0:stability_analysis_settings not in RFEM yet") def test_stability_analysis_settings_init(): Model.clientModel.service.reset() @@ -33,7 +36,6 @@ def test_stability_analysis_settings_init(): assert stability_analysis_settings.minimum_initial_strain == 1e-05 assert stability_analysis_settings.number_of_lowest_eigenvalues == 4 -@pytest.mark.skip("all tests still WIP") def test_stability_analysis_settings_eigenvalue_method(): Model.clientModel.service.reset() @@ -66,7 +68,6 @@ def test_stability_analysis_settings_eigenvalue_method(): assert stability_analysis_settings.minimum_initial_strain == 2.5e-05 assert stability_analysis_settings.number_of_lowest_eigenvalues == 5 -@pytest.mark.skip("all tests still WIP") def test_stability_analysis_settings_incrementaly_method_with_eigenvalue(): Model.clientModel.service.reset() @@ -110,7 +111,6 @@ def test_stability_analysis_settings_incrementaly_method_with_eigenvalue(): assert stability_analysis_settings.stopping_of_load_increasing_limit_result_displacement == 0.1 assert stability_analysis_settings.stopping_of_load_increasing_result == 'RESULT_TYPE_DISPLACEMENT_U' -@pytest.mark.skip("all tests still WIP") def test_stability_analysis_settings_incrementaly_method_without_eigenvalue(): Model.clientModel.service.reset() @@ -137,4 +137,4 @@ def test_stability_analysis_settings_incrementaly_method_without_eigenvalue(): assert stability_analysis_settings.load_factor_increment == 0.25 assert stability_analysis_settings.maximum_number_of_load_increments == 125 assert stability_analysis_settings.refinement_of_the_last_load_increment == 5 - assert stability_analysis_settings.save_results_of_all_increments == False \ No newline at end of file + assert stability_analysis_settings.save_results_of_all_increments == False diff --git a/UnitTests/test_staticAnalysisSetting.py b/UnitTests/test_staticAnalysisSetting.py index 41372c67..f481390e 100644 --- a/UnitTests/test_staticAnalysisSetting.py +++ b/UnitTests/test_staticAnalysisSetting.py @@ -1,46 +1,29 @@ import sys import os + PROJECT_ROOT = os.path.abspath(os.path.join( os.path.dirname(__file__), os.pardir) ) sys.path.append(PROJECT_ROOT) +from RFEM.initModel import Model from RFEM.enums import * from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings -def test_default(): - - Model.clientModel.service.begin_modification() - - # Set Base Settings - StaticAnalysisSettings(1, 'Geometrisch-linear', StaticAnalysisType.GEOMETRICALLY_LINEAR) +if Model.clientModel is None: + Model() - Model.clientModel.service.finish_modification() - -def test_GeometricallyLinear(): +def test_StaticAnalysisSettings(): + Model.clientModel.service.reset() Model.clientModel.service.begin_modification() - # Set Base Settings - StaticAnalysisSettings.GeometricallyLinear(1,2,'Geometric-linear',[True, 1.5, True],False,False,StaticAnalysisSettingsMethodOfEquationSystem.METHOD_OF_EQUATION_SYSTEM_DIRECT,StaticAnalysisSettingsPlateBendingTheory.PLATE_BENDING_THEORY_MINDLIN,[True,0,0,1.0]) - - Model.clientModel.service.finish_modification() - -def test_LargeDeformation(): - - Model.clientModel.service.begin_modification() - - # Set Base Settings - StaticAnalysisSettings.LargeDeformation(1,standard_precision_and_tolerance_settings = [True, 0.01, 0.01, 1.0],) - - Model.clientModel.service.finish_modification() - -def test_SecondOrderPDelta(): - - Model.clientModel.service.begin_modification() - - # Set Base Settings - StaticAnalysisSettings.SecondOrderPDelta(1) + # Set Static Analysis Settings + StaticAnalysisSettings(1, 'Geometrisch-linear', StaticAnalysisType.GEOMETRICALLY_LINEAR) + StaticAnalysisSettings.GeometricallyLinear(1,2,'Geometric-linear',[True, 1.5, True],False,False, + StaticAnalysisSettingsMethodOfEquationSystem.METHOD_OF_EQUATION_SYSTEM_DIRECT, + StaticAnalysisSettingsPlateBendingTheory.PLATE_BENDING_THEORY_MINDLIN,[True,0,0,1.0]) + StaticAnalysisSettings.LargeDeformation(1,3,standard_precision_and_tolerance_settings = [True, 0.01, 0.01, 1.0]) + StaticAnalysisSettings.SecondOrderPDelta(1,4) Model.clientModel.service.finish_modification() - diff --git a/docs/docs/docsource/examples/demo1.py b/docs/docs/docsource/examples/demo1.py index 3cc460c4..3888e8bd 100644 --- a/docs/docs/docsource/examples/demo1.py +++ b/docs/docs/docsource/examples/demo1.py @@ -29,7 +29,7 @@ l = float(input('Length of the cantilever in m: ')) f = float(input('Force in kN: ')) - clientModel.service.begin_modification('new') + clientModel.service.begin_modification() Material(1, 'S235') diff --git a/docs/docsource/examples/demo1.py b/docs/docsource/examples/demo1.py index 3cc460c4..3888e8bd 100644 --- a/docs/docsource/examples/demo1.py +++ b/docs/docsource/examples/demo1.py @@ -29,7 +29,7 @@ l = float(input('Length of the cantilever in m: ')) f = float(input('Force in kN: ')) - clientModel.service.begin_modification('new') + clientModel.service.begin_modification() Material(1, 'S235')