From 191729232eaf17be66470b49eb40ba8448f8463c Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Fri, 8 Oct 2021 14:03:54 +0200 Subject: [PATCH 1/5] Bugfix in solidSet.py --- RFEM/BasicObjects/solidSet.py | 6 +++--- testSolidLoads.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/RFEM/BasicObjects/solidSet.py b/RFEM/BasicObjects/solidSet.py index 004aadf1..09b111c8 100644 --- a/RFEM/BasicObjects/solidSet.py +++ b/RFEM/BasicObjects/solidSet.py @@ -19,7 +19,7 @@ def __init__(self, clientObject.no = no # Solids number - clientObject.solides = ConvertToDlString(solids_no) + clientObject.solids = ConvertToDlString(solids_no) # Solid Set Type clientObject.set_type = solid_set_type.name @@ -51,7 +51,7 @@ def ContinuousSolids(self, clientObject.no = no # Solids number - clientObject.solides = ConvertToDlString(solids_no) + clientObject.solids = ConvertToDlString(solids_no) # Solid Set Type clientObject.set_type = solid_set_type.name @@ -83,7 +83,7 @@ def GroupOfSolids(self, clientObject.no = no # Solids number - clientObject.solides = ConvertToDlString(solids_no) + clientObject.solids = ConvertToDlString(solids_no) # Solid Set Type clientObject.set_type = solid_set_type.name diff --git a/testSolidLoads.py b/testSolidLoads.py index bd26bbce..a4ed1dc9 100644 --- a/testSolidLoads.py +++ b/testSolidLoads.py @@ -151,7 +151,7 @@ Solid(3, '13-17,12', 1) # Solid Set - SolidSet.ContinuousSolids(SolidSet, 1, '2 3') + SolidSet.ContinuousSolids(SolidSet, 1, '2 3',) #Calculate_all() print('Ready!') From 50baabb711d7ea96c55f9aa28267a6666fe93f60 Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Fri, 22 Oct 2021 15:35:52 +0200 Subject: [PATCH 2/5] __init__() implemented --- RFEM/Loads/solidSetLoad.py | 285 +++++++++++++++++++++++++++++++++++++ RFEM/enums.py | 19 ++- testSolidLoads.py | 8 +- 3 files changed, 309 insertions(+), 3 deletions(-) create mode 100644 RFEM/Loads/solidSetLoad.py diff --git a/RFEM/Loads/solidSetLoad.py b/RFEM/Loads/solidSetLoad.py new file mode 100644 index 00000000..6ac3df6e --- /dev/null +++ b/RFEM/Loads/solidSetLoad.py @@ -0,0 +1,285 @@ +from RFEM.initModel import * +from RFEM.enums import * + +class SolidSetLoad(): + + def __init__(self, + no: int =1, + load_case_no: int = 1, + solid_sets_no: str= '1', + load_type = SolidSetLoadType.LOAD_TYPE_FORCE, + load_distribution = SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, + load_direction = SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, + magnitude: float = 0, + comment: str = '', + params: dict = {}): + + # Client model | Solid Load + clientObject = clientModel.factory.create('ns0:solid_set_load') + + # Clears object attributes | Sets all attributes to None + clearAtributes(clientObject) + + # Load No. + clientObject.no = no + + # Load Case No. + clientObject.load_case = load_case_no + + # Assigned Solid No. + clientObject.solid_sets = ConvertToDlString(solid_sets_no) + + # Load Type + clientObject.load_type = load_type.name + + # Load Distribution + clientObject.load_distribution = load_distribution.name + + # Load Direction + clientObject.load_direction = load_direction.name + + # Load Magnitude + clientObject.uniform_magnitude = magnitude + + # Comment + clientObject.comment = comment + + # Adding optional parameters via dictionary + for key in params: + clientObject[key] = params[key] + + # Add Solid Load to client model + clientModel.service.set_solid_load(load_case_no, clientObject) + + + def Force(self, + no: int =1, + load_case_no: int = 1, + solids_no: str= '1', + load_direction = SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, + magnitude: float = 0, + comment: str = '', + params: dict = {}): + + # Client model | Solid Load + clientObject = clientModel.factory.create('ns0:solid_load') + + # Clears object attributes | Sets all attributes to None + clearAtributes(clientObject) + + # Load No. + clientObject.no = no + + # Load Case No. + clientObject.load_case = load_case_no + + # Assigned Solid No. + clientObject.solids = ConvertToDlString(solids_no) + + # Load Type + clientObject.load_type = SolidLoadType.LOAD_TYPE_FORCE.name + + # Load Distribution + clientObject.load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM.name + + # Load Direction + clientObject.load_direction = load_direction.name + + # Load Magnitude + clientObject.uniform_magnitude = magnitude + + # Comment + clientObject.comment = comment + + # Adding optional parameters via dictionary + for key in params: + clientObject[key] = params[key] + + # Add Solid Load to client model + clientModel.service.set_solid_load(load_case_no, clientObject) + + + def Temperature(self, + no: int = 1, + load_case_no: int = 1, + solids_no: str= '1', + load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, + load_parameter = None, + comment: str = '', + params: dict = {}): + ''' + load_parameter: + LOAD_DISTRIBUTION_UNIFORM: load_parameter = magnitude + LOAD_DISTRIBUTION_LINEAR_IN_X: load_parameter = [magnitude_1, magnitude_2, node_1, node_2] + LOAD_DISTRIBUTION_LINEAR_IN_Y: load_parameter = [magnitude_1, magnitude_2, node_1, node_2] + LOAD_DISTRIBUTION_LINEAR_IN_Z: load_parameter = [magnitude_1, magnitude_2, node_1, node_2] + params: + {''} + ''' + # Client model | Solid Load + clientObject = clientModel.factory.create('ns0:solid_load') + + # Clears object attributes | Sets all attributes to None + clearAtributes(clientObject) + + # Load No. + clientObject.no = no + + # Load Case No. + clientObject.load_case = load_case_no + + # Assigned Solid No. + clientObject.solids = ConvertToDlString(solids_no) + + # Load Type + clientObject.load_type = SolidLoadType.LOAD_TYPE_TEMPERATURE.name + + # Load Distribution + if load_distribution.name == "LOAD_DISTRIBUTION_UNIFORM": + clientObject.uniform_magnitude = load_parameter + else: + clientObject.magnitude_1 = load_parameter[1] + clientObject.magnitude_2 = load_parameter[2] + clientObject.node_1 = load_parameter[3] + clientObject.node_2 = load_parameter[4] + + clientObject.load_distribution = load_distribution.name + + # Comment + clientObject.comment = comment + + # Adding optional parameters via dictionary + for key in params: + clientObject[key] = params[key] + + # Add Solid Load to client model + clientModel.service.set_solid_load(load_case_no, clientObject) + + + def Strain(self, + no: int = 1, + load_case_no: int = 1, + solids_no: str= '1', + load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, + load_parameter = None, + comment: str = '', + params: dict = {}): + ''' + load_parameter: + LOAD_DISTRIBUTION_UNIFORM: load_parameter = [strain_uniform_magnitude_x, strain_uniform_magnitude_y, strain_uniform_magnitude_z] + LOAD_DISTRIBUTION_LINEAR_IN_X: load_parameter = [strain_magnitude_x1, strain_magnitude_y1, strain_magnitude_z1, strain_magnitude_x2, strain_magnitude_y2, strain_magnitude_z2, node_1, node_2] + LOAD_DISTRIBUTION_LINEAR_IN_Y: load_parameter = [strain_magnitude_x1, strain_magnitude_y1, strain_magnitude_z1, strain_magnitude_x2, strain_magnitude_y2, strain_magnitude_z2, node_1, node_2] + LOAD_DISTRIBUTION_LINEAR_IN_Z: load_parameter = [strain_magnitude_x1, strain_magnitude_y1, strain_magnitude_z1, strain_magnitude_x2, strain_magnitude_y2, strain_magnitude_z2, node_1, node_2] + params: + {''} + ''' + # Client model | Solid Load + clientObject = clientModel.factory.create('ns0:solid_load') + + # Clears object attributes | Sets all attributes to None + clearAtributes(clientObject) + + # Load No. + clientObject.no = no + + # Load Case No. + clientObject.load_case = load_case_no + + # Assigned Solid No. + clientObject.solids = ConvertToDlString(solids_no) + + # Load Type + clientObject.load_type = SolidLoadType.LOAD_TYPE_STRAIN.name + + # Load Distribution + if load_distribution.name == "LOAD_DISTRIBUTION_UNIFORM": + clientObject.strain_uniform_magnitude_x = load_parameter[1] + clientObject.strain_uniform_magnitude_y = load_parameter[2] + clientObject.strain_uniform_magnitude_z = load_parameter[3] + else: + clientObject.strain_magnitude_x1 = load_parameter[1] + clientObject.strain_magnitude_y1 = load_parameter[2] + clientObject.strain_magnitude_z1 = load_parameter[3] + clientObject.strain_magnitude_x2 = load_parameter[4] + clientObject.strain_magnitude_y2 = load_parameter[5] + clientObject.strain_magnitude_z2 = load_parameter[6] + clientObject.node_1 = load_parameter[7] + clientObject.node_2 = load_parameter[8] + + clientObject.load_distribution = load_distribution.name + + # Comment + clientObject.comment = comment + + # Adding optional parameters via dictionary + for key in params: + clientObject[key] = params[key] + + # Add Solid Load to client model + clientModel.service.set_solid_load(load_case_no, clientObject) + + + def Motion(self, + no: int = 1, + load_case_no: int = 1, + solids_no: str= '1', + load_parameter = None, + comment: str = '', + params: dict = {}): + ''' + load_parameter: + load_parameter = [angular_velocity, angular_acceleration, axis_definition_p1_x, axis_definition_p1_y, axis_definition_p1_z, axis_definition_p2_x, axis_definition_p2_y, axis_definition_p2_z] + params: + {''} + ''' + # Client model | Solid Load + clientObject = clientModel.factory.create('ns0:solid_load') + + # Clears object attributes | Sets all attributes to None + clearAtributes(clientObject) + + # Load No. + clientObject.no = no + + # Load Case No. + clientObject.load_case = load_case_no + + # Assigned Solid No. + clientObject.solids = ConvertToDlString(solids_no) + + # Load Type + clientObject.load_type = SolidLoadType.LOAD_TYPE_ROTARY_MOTION.name + + # Velocity + clientObject.angular_velocity = load_parameter[1] + + # Acceleration + clientObject.angular_acceleration = load_parameter[2] + + # Axis Definition + clientObject.axis_definition_p1_x = load_parameter[3] + clientObject.axis_definition_p1_y = load_parameter[4] + clientObject.axis_definition_p1_z = load_parameter[5] + clientObject.axis_definition_p2_x = load_parameter[6] + clientObject.axis_definition_p2_y = load_parameter[7] + clientObject.axis_definition_p2_z = load_parameter[8] + + # Comment + clientObject.comment = comment + + # Adding optional parameters via dictionary + for key in params: + clientObject[key] = params[key] + + # Add Solid Load to client model + clientModel.service.set_solid_load(load_case_no, clientObject) + + + def Buoyancy(): + print('The function Buoyancy() is not implemented yet.') + pass + + + def Gass(): + print('The function Gass() is not implemented yet.') + pass \ No newline at end of file diff --git a/RFEM/enums.py b/RFEM/enums.py index 7643a287..bb28dbdb 100644 --- a/RFEM/enums.py +++ b/RFEM/enums.py @@ -430,4 +430,21 @@ class SolidLoadDirection(Enum): Solid Load Load Direction | Enum ''' LOAD_DIRECTION_GLOBAL_X_OR_USER_DEFINED_U_TRUE, LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE = range(3) - \ No newline at end of file + +class SolidSetLoadType(Enum): + ''' + Solidset Load Load Type | Enum + ''' + LOAD_TYPE_BUOYANCY, LOAD_TYPE_FORCE, LOAD_TYPE_GAS, LOAD_TYPE_ROTARY_MOTION, LOAD_TYPE_STRAIN, LOAD_TYPE_TEMPERATURE = range(6) + +class SolidSetLoadDistribution(Enum): + ''' + Solidset Load Load Distribution | Enum + ''' + LOAD_DISTRIBUTION_LINEAR_IN_X, LOAD_DISTRIBUTION_LINEAR_IN_Y, LOAD_DISTRIBUTION_LINEAR_IN_Z, LOAD_DISTRIBUTION_UNIFORM = range(4) + +class SolidSetLoadDirection(Enum): + ''' + Solidset Load Load Direction | Enum + ''' + LOAD_DIRECTION_GLOBAL_X_OR_USER_DEFINED_U_TRUE, LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE = range(3) \ No newline at end of file diff --git a/testSolidLoads.py b/testSolidLoads.py index a4ed1dc9..7241744b 100644 --- a/testSolidLoads.py +++ b/testSolidLoads.py @@ -1,4 +1,5 @@ from RFEM.Loads.solidLoad import SolidLoad +from RFEM.Loads.solidSetLoad import SolidSetLoad from RFEM.enums import * from RFEM.window import * from RFEM.dataTypes import * @@ -76,6 +77,7 @@ LoadCase(1 , 'Test load case', AnalysisType.ANALYSIS_TYPE_STATIC, 1, 1, True, 0.0, 0.0, 1.0) NodalLoad(1, 1, '1', LoadDirectionType.LOAD_DIRECTION_LOCAL_X, 12.8) + ''' SolidLoad(1, 1, '1', SolidLoadType.LOAD_TYPE_FORCE, SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, 1289.0, 'My Comment') SolidLoad.Force(SolidLoad, 2, 1, '1', SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, 8569.21, 'My 2nd Comment') @@ -91,7 +93,7 @@ SolidLoad.Strain(SolidLoad, 11, 1, '1', SolidLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Z, 0.01, 0.02, 0.03, 5, 0.04, 0.05, 0.06, 1) SolidLoad.Motion(SolidLoad, 12, 1, '1', 5, 2, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) - + ''' # Solid 2 Node(9, 0.0, 20.0, 0.0) Node(10, 10.0, 20.0, 0.0) @@ -151,7 +153,9 @@ Solid(3, '13-17,12', 1) # Solid Set - SolidSet.ContinuousSolids(SolidSet, 1, '2 3',) + SolidSet.ContinuousSolids(SolidSet, 1, '2 3') + + SolidSetLoad(1, 1, '1', SolidSetLoadType.LOAD_TYPE_FORCE, SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, 58.9, 'Ny Comment') #Calculate_all() print('Ready!') From 246f2394904e3f1843ca8f2439fd820ff9ca778e Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Fri, 5 Nov 2021 13:37:49 +0100 Subject: [PATCH 3/5] Implementaion of all methods finished --- RFEM/Loads/solidSetLoad.py | 50 +++++++++++++++++++------------------- testSolidLoads.py | 13 +++++++--- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/RFEM/Loads/solidSetLoad.py b/RFEM/Loads/solidSetLoad.py index 6ac3df6e..e3201be8 100644 --- a/RFEM/Loads/solidSetLoad.py +++ b/RFEM/Loads/solidSetLoad.py @@ -49,20 +49,20 @@ def __init__(self, clientObject[key] = params[key] # Add Solid Load to client model - clientModel.service.set_solid_load(load_case_no, clientObject) + clientModel.service.set_solid_set_load(load_case_no, clientObject) def Force(self, no: int =1, load_case_no: int = 1, - solids_no: str= '1', - load_direction = SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, + solid_sets_no: str= '1', + load_direction = SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, magnitude: float = 0, comment: str = '', params: dict = {}): # Client model | Solid Load - clientObject = clientModel.factory.create('ns0:solid_load') + clientObject = clientModel.factory.create('ns0:solid_set_load') # Clears object attributes | Sets all attributes to None clearAtributes(clientObject) @@ -74,13 +74,13 @@ def Force(self, clientObject.load_case = load_case_no # Assigned Solid No. - clientObject.solids = ConvertToDlString(solids_no) + clientObject.solid_sets = ConvertToDlString(solid_sets_no) # Load Type - clientObject.load_type = SolidLoadType.LOAD_TYPE_FORCE.name + clientObject.load_type = SolidSetLoadType.LOAD_TYPE_FORCE.name # Load Distribution - clientObject.load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM.name + clientObject.load_distribution = SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM.name # Load Direction clientObject.load_direction = load_direction.name @@ -96,14 +96,14 @@ def Force(self, clientObject[key] = params[key] # Add Solid Load to client model - clientModel.service.set_solid_load(load_case_no, clientObject) + clientModel.service.set_solid_set_load(load_case_no, clientObject) def Temperature(self, no: int = 1, load_case_no: int = 1, - solids_no: str= '1', - load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, + solid_sets_no: str= '1', + load_distribution = SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, load_parameter = None, comment: str = '', params: dict = {}): @@ -117,7 +117,7 @@ def Temperature(self, {''} ''' # Client model | Solid Load - clientObject = clientModel.factory.create('ns0:solid_load') + clientObject = clientModel.factory.create('ns0:solid_set_load') # Clears object attributes | Sets all attributes to None clearAtributes(clientObject) @@ -129,10 +129,10 @@ def Temperature(self, clientObject.load_case = load_case_no # Assigned Solid No. - clientObject.solids = ConvertToDlString(solids_no) + clientObject.solid_sets = ConvertToDlString(solid_sets_no) # Load Type - clientObject.load_type = SolidLoadType.LOAD_TYPE_TEMPERATURE.name + clientObject.load_type = SolidSetLoadType.LOAD_TYPE_TEMPERATURE.name # Load Distribution if load_distribution.name == "LOAD_DISTRIBUTION_UNIFORM": @@ -153,14 +153,14 @@ def Temperature(self, clientObject[key] = params[key] # Add Solid Load to client model - clientModel.service.set_solid_load(load_case_no, clientObject) + clientModel.service.set_solid_set_load(load_case_no, clientObject) def Strain(self, no: int = 1, load_case_no: int = 1, - solids_no: str= '1', - load_distribution = SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, + solid_sets_no: str= '1', + load_distribution = SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, load_parameter = None, comment: str = '', params: dict = {}): @@ -174,7 +174,7 @@ def Strain(self, {''} ''' # Client model | Solid Load - clientObject = clientModel.factory.create('ns0:solid_load') + clientObject = clientModel.factory.create('ns0:solid_set_load') # Clears object attributes | Sets all attributes to None clearAtributes(clientObject) @@ -186,10 +186,10 @@ def Strain(self, clientObject.load_case = load_case_no # Assigned Solid No. - clientObject.solids = ConvertToDlString(solids_no) + clientObject.solid_sets = ConvertToDlString(solid_sets_no) # Load Type - clientObject.load_type = SolidLoadType.LOAD_TYPE_STRAIN.name + clientObject.load_type = SolidSetLoadType.LOAD_TYPE_STRAIN.name # Load Distribution if load_distribution.name == "LOAD_DISTRIBUTION_UNIFORM": @@ -216,13 +216,13 @@ def Strain(self, clientObject[key] = params[key] # Add Solid Load to client model - clientModel.service.set_solid_load(load_case_no, clientObject) + clientModel.service.set_solid_set_load(load_case_no, clientObject) def Motion(self, no: int = 1, load_case_no: int = 1, - solids_no: str= '1', + solid_sets_no: str= '1', load_parameter = None, comment: str = '', params: dict = {}): @@ -233,7 +233,7 @@ def Motion(self, {''} ''' # Client model | Solid Load - clientObject = clientModel.factory.create('ns0:solid_load') + clientObject = clientModel.factory.create('ns0:solid_set_load') # Clears object attributes | Sets all attributes to None clearAtributes(clientObject) @@ -245,10 +245,10 @@ def Motion(self, clientObject.load_case = load_case_no # Assigned Solid No. - clientObject.solids = ConvertToDlString(solids_no) + clientObject.solid_sets = ConvertToDlString(solid_sets_no) # Load Type - clientObject.load_type = SolidLoadType.LOAD_TYPE_ROTARY_MOTION.name + clientObject.load_type = SolidSetLoadType.LOAD_TYPE_ROTARY_MOTION.name # Velocity clientObject.angular_velocity = load_parameter[1] @@ -272,7 +272,7 @@ def Motion(self, clientObject[key] = params[key] # Add Solid Load to client model - clientModel.service.set_solid_load(load_case_no, clientObject) + clientModel.service.set_solid_set_load(load_case_no, clientObject) def Buoyancy(): diff --git a/testSolidLoads.py b/testSolidLoads.py index 7241744b..015f9605 100644 --- a/testSolidLoads.py +++ b/testSolidLoads.py @@ -75,9 +75,10 @@ StaticAnalysisSettings(1, 'Geometric linear', StaticAnalysisType.GEOMETRICALLY_LINEAR) LoadCase(1 , 'Test load case', AnalysisType.ANALYSIS_TYPE_STATIC, 1, 1, True, 0.0, 0.0, 1.0) - - NodalLoad(1, 1, '1', LoadDirectionType.LOAD_DIRECTION_LOCAL_X, 12.8) + ''' + NodalLoad(1, 1, '1', LoadDirectionType.LOAD_DIRECTION_LOCAL_X, 12.8) + SolidLoad(1, 1, '1', SolidLoadType.LOAD_TYPE_FORCE, SolidLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, 1289.0, 'My Comment') SolidLoad.Force(SolidLoad, 2, 1, '1', SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Z_OR_USER_DEFINED_W_TRUE, 8569.21, 'My 2nd Comment') @@ -155,7 +156,13 @@ # Solid Set SolidSet.ContinuousSolids(SolidSet, 1, '2 3') - SolidSetLoad(1, 1, '1', SolidSetLoadType.LOAD_TYPE_FORCE, SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, 58.9, 'Ny Comment') + SolidSetLoad(1, 1, '1', SolidSetLoadType.LOAD_TYPE_FORCE, SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, 58.9*1000, 'My Comment') + SolidSetLoad.Force(SolidSetLoad, 2, 1, '1', SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, 8974.123, 'My 2nd Comment') + SolidSetLoad.Temperature(SolidSetLoad, 3, 1, '1', SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, [25489], 'My 3rd Comment') + #SolidSetLoad.Temperature(SolidSetLoad, 4, 1, '1', SolidSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, [1.5, 8.9, 16, 15], 'My 3rd Comment') + SolidLoad.Temperature(SolidLoad, 1, 1, '1', SolidLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, ) + + #Calculate_all() print('Ready!') From e4c6057ed3add26f761b4d81b566b8c443913044 Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Fri, 5 Nov 2021 14:06:35 +0100 Subject: [PATCH 4/5] Bug fixing --- RFEM/Loads/solidSetLoad.py | 46 +++++++++++++++++++------------------- testSolidLoads.py | 10 +++++---- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/RFEM/Loads/solidSetLoad.py b/RFEM/Loads/solidSetLoad.py index e3201be8..b6f009dd 100644 --- a/RFEM/Loads/solidSetLoad.py +++ b/RFEM/Loads/solidSetLoad.py @@ -138,10 +138,10 @@ def Temperature(self, if load_distribution.name == "LOAD_DISTRIBUTION_UNIFORM": clientObject.uniform_magnitude = load_parameter else: - clientObject.magnitude_1 = load_parameter[1] - clientObject.magnitude_2 = load_parameter[2] - clientObject.node_1 = load_parameter[3] - clientObject.node_2 = load_parameter[4] + clientObject.magnitude_1 = load_parameter[0] + clientObject.magnitude_2 = load_parameter[1] + clientObject.node_1 = load_parameter[2] + clientObject.node_2 = load_parameter[3] clientObject.load_distribution = load_distribution.name @@ -193,18 +193,18 @@ def Strain(self, # Load Distribution if load_distribution.name == "LOAD_DISTRIBUTION_UNIFORM": - clientObject.strain_uniform_magnitude_x = load_parameter[1] - clientObject.strain_uniform_magnitude_y = load_parameter[2] - clientObject.strain_uniform_magnitude_z = load_parameter[3] + clientObject.strain_uniform_magnitude_x = load_parameter[0] + clientObject.strain_uniform_magnitude_y = load_parameter[1] + clientObject.strain_uniform_magnitude_z = load_parameter[2] else: - clientObject.strain_magnitude_x1 = load_parameter[1] - clientObject.strain_magnitude_y1 = load_parameter[2] - clientObject.strain_magnitude_z1 = load_parameter[3] - clientObject.strain_magnitude_x2 = load_parameter[4] - clientObject.strain_magnitude_y2 = load_parameter[5] - clientObject.strain_magnitude_z2 = load_parameter[6] - clientObject.node_1 = load_parameter[7] - clientObject.node_2 = load_parameter[8] + clientObject.strain_magnitude_x1 = load_parameter[0] + clientObject.strain_magnitude_y1 = load_parameter[1] + clientObject.strain_magnitude_z1 = load_parameter[2] + clientObject.strain_magnitude_x2 = load_parameter[3] + clientObject.strain_magnitude_y2 = load_parameter[4] + clientObject.strain_magnitude_z2 = load_parameter[5] + clientObject.node_1 = load_parameter[6] + clientObject.node_2 = load_parameter[7] clientObject.load_distribution = load_distribution.name @@ -251,18 +251,18 @@ def Motion(self, clientObject.load_type = SolidSetLoadType.LOAD_TYPE_ROTARY_MOTION.name # Velocity - clientObject.angular_velocity = load_parameter[1] + clientObject.angular_velocity = load_parameter[0] # Acceleration - clientObject.angular_acceleration = load_parameter[2] + clientObject.angular_acceleration = load_parameter[1] # Axis Definition - clientObject.axis_definition_p1_x = load_parameter[3] - clientObject.axis_definition_p1_y = load_parameter[4] - clientObject.axis_definition_p1_z = load_parameter[5] - clientObject.axis_definition_p2_x = load_parameter[6] - clientObject.axis_definition_p2_y = load_parameter[7] - clientObject.axis_definition_p2_z = load_parameter[8] + clientObject.axis_definition_p1_x = load_parameter[2] + clientObject.axis_definition_p1_y = load_parameter[3] + clientObject.axis_definition_p1_z = load_parameter[4] + clientObject.axis_definition_p2_x = load_parameter[5] + clientObject.axis_definition_p2_y = load_parameter[6] + clientObject.axis_definition_p2_z = load_parameter[7] # Comment clientObject.comment = comment diff --git a/testSolidLoads.py b/testSolidLoads.py index 015f9605..7f67cc1c 100644 --- a/testSolidLoads.py +++ b/testSolidLoads.py @@ -159,10 +159,12 @@ SolidSetLoad(1, 1, '1', SolidSetLoadType.LOAD_TYPE_FORCE, SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, SolidSetLoadDirection.LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, 58.9*1000, 'My Comment') SolidSetLoad.Force(SolidSetLoad, 2, 1, '1', SolidLoadDirection.LOAD_DIRECTION_GLOBAL_Y_OR_USER_DEFINED_V_TRUE, 8974.123, 'My 2nd Comment') SolidSetLoad.Temperature(SolidSetLoad, 3, 1, '1', SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, [25489], 'My 3rd Comment') - #SolidSetLoad.Temperature(SolidSetLoad, 4, 1, '1', SolidSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, [1.5, 8.9, 16, 15], 'My 3rd Comment') - SolidLoad.Temperature(SolidLoad, 1, 1, '1', SolidLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, ) - - + SolidSetLoad.Temperature(SolidSetLoad, 4, 1, '1', SolidSetLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_X, [1.5, 8.9, 16, 15], 'My 3rd Comment') + SolidSetLoad.Strain(SolidSetLoad, 5, 1, '1', SolidSetLoadDistribution.LOAD_DISTRIBUTION_UNIFORM, [0.1, 0.2, 0.3], 'My Comment') + SolidSetLoad.Strain(SolidSetLoad, 6, 1, '1', SolidLoadDistribution.LOAD_DISTRIBUTION_LINEAR_IN_Y, [0.1, 0.2, 0.3, 0.1, 0.2, 0.3, 13, 16]) + SolidSetLoad.Motion(SolidSetLoad, 7, 1, '1', [1.5, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]) + SolidSetLoad.Buoyancy() + SolidSetLoad.Gass() #Calculate_all() print('Ready!') From 1b98bd624925591ce557127abd8e5e15a2ada4cc Mon Sep 17 00:00:00 2001 From: Jaroslav Broz Date: Wed, 10 Nov 2021 11:33:47 +0100 Subject: [PATCH 5/5] Regular expresion check corrections --- RFEM/Loads/solidSetLoad.py | 53 +++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/RFEM/Loads/solidSetLoad.py b/RFEM/Loads/solidSetLoad.py index b6f009dd..dc8ff5e0 100644 --- a/RFEM/Loads/solidSetLoad.py +++ b/RFEM/Loads/solidSetLoad.py @@ -22,13 +22,13 @@ def __init__(self, # Load No. clientObject.no = no - + # Load Case No. clientObject.load_case = load_case_no - + # Assigned Solid No. clientObject.solid_sets = ConvertToDlString(solid_sets_no) - + # Load Type clientObject.load_type = load_type.name @@ -40,17 +40,17 @@ def __init__(self, # Load Magnitude clientObject.uniform_magnitude = magnitude - + # Comment clientObject.comment = comment - + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] # Add Solid Load to client model clientModel.service.set_solid_set_load(load_case_no, clientObject) - + def Force(self, no: int =1, @@ -60,7 +60,7 @@ def Force(self, magnitude: float = 0, comment: str = '', params: dict = {}): - + # Client model | Solid Load clientObject = clientModel.factory.create('ns0:solid_set_load') @@ -69,13 +69,13 @@ def Force(self, # Load No. clientObject.no = no - + # Load Case No. clientObject.load_case = load_case_no - + # Assigned Solid No. clientObject.solid_sets = ConvertToDlString(solid_sets_no) - + # Load Type clientObject.load_type = SolidSetLoadType.LOAD_TYPE_FORCE.name @@ -98,7 +98,6 @@ def Force(self, # Add Solid Load to client model clientModel.service.set_solid_set_load(load_case_no, clientObject) - def Temperature(self, no: int = 1, load_case_no: int = 1, @@ -124,13 +123,13 @@ def Temperature(self, # Load No. clientObject.no = no - + # Load Case No. clientObject.load_case = load_case_no - + # Assigned Solid No. clientObject.solid_sets = ConvertToDlString(solid_sets_no) - + # Load Type clientObject.load_type = SolidSetLoadType.LOAD_TYPE_TEMPERATURE.name @@ -142,12 +141,12 @@ def Temperature(self, clientObject.magnitude_2 = load_parameter[1] clientObject.node_1 = load_parameter[2] clientObject.node_2 = load_parameter[3] - + clientObject.load_distribution = load_distribution.name # Comment clientObject.comment = comment - + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] @@ -155,7 +154,6 @@ def Temperature(self, # Add Solid Load to client model clientModel.service.set_solid_set_load(load_case_no, clientObject) - def Strain(self, no: int = 1, load_case_no: int = 1, @@ -181,13 +179,13 @@ def Strain(self, # Load No. clientObject.no = no - + # Load Case No. clientObject.load_case = load_case_no - + # Assigned Solid No. clientObject.solid_sets = ConvertToDlString(solid_sets_no) - + # Load Type clientObject.load_type = SolidSetLoadType.LOAD_TYPE_STRAIN.name @@ -205,12 +203,12 @@ def Strain(self, clientObject.strain_magnitude_z2 = load_parameter[5] clientObject.node_1 = load_parameter[6] clientObject.node_2 = load_parameter[7] - + clientObject.load_distribution = load_distribution.name # Comment clientObject.comment = comment - + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] @@ -218,7 +216,6 @@ def Strain(self, # Add Solid Load to client model clientModel.service.set_solid_set_load(load_case_no, clientObject) - def Motion(self, no: int = 1, load_case_no: int = 1, @@ -240,10 +237,10 @@ def Motion(self, # Load No. clientObject.no = no - + # Load Case No. clientObject.load_case = load_case_no - + # Assigned Solid No. clientObject.solid_sets = ConvertToDlString(solid_sets_no) @@ -266,20 +263,18 @@ def Motion(self, # Comment clientObject.comment = comment - + # Adding optional parameters via dictionary for key in params: clientObject[key] = params[key] - + # Add Solid Load to client model clientModel.service.set_solid_set_load(load_case_no, clientObject) - def Buoyancy(): print('The function Buoyancy() is not implemented yet.') pass - def Gass(): print('The function Gass() is not implemented yet.') pass \ No newline at end of file