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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Examples/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ def main(hall_width_L, hall_height_h_o, hall_height_h_m, number_frames, frame_sp
Calculate_all()

print("Done")
sys.exit()

if __name__ == '__main__':
window(main, modelLst)
48 changes: 28 additions & 20 deletions RFEM/Loads/linesetLoad.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@ def __init__(self,
load_direction = LineSetLoadDirection.LOAD_DIRECTION_LOCAL_Z,
magnitude: float = 0,
comment: str = '',
params: dict = {}):
params: dict = None,
model = Model):
'''
Assigns lineset load without any further options.
Load type is Force by default.
Load distribution is Uniform by default.
'''

# Client model | Lineset Load
clientObject = Model.clientModel.factory.create('ns0:line_set_load')
clientObject = model.clientModel.factory.create('ns0:line_set_load')

# Clears object atributes | Sets all atributes to None
clearAtributes(clientObject)
Expand Down Expand Up @@ -50,11 +51,12 @@ def __init__(self,
clientObject.comment = comment

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

# Add Load Lineset Load to client model
Model.clientModel.service.set_line_set_load(load_case_no, clientObject)
model.clientModel.service.set_line_set_load(load_case_no, clientObject)

def Force(self,
no: int = 1,
Expand All @@ -65,7 +67,8 @@ def Force(self,
load_parameter = None,
list_reference: bool= False,
comment: str = '',
params: dict = {}):
params: dict = None,
model = Model):

'''
load_parameter:
Expand All @@ -84,7 +87,7 @@ def Force(self,
{''}
'''
# Client model | Lineset Load
clientObject = Model.clientModel.factory.create('ns0:line_set_load')
clientObject = model.clientModel.factory.create('ns0:line_set_load')

# Clears object attributes | Sets all attributes to None
clearAtributes(clientObject)
Expand Down Expand Up @@ -283,11 +286,12 @@ def Force(self,
clientObject.comment = comment

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

# Add Load Line Load to client model
Model.clientModel.service.set_line_set_load(load_case_no, clientObject)
model.clientModel.service.set_line_set_load(load_case_no, clientObject)

def Moment(self,
no: int = 1,
Expand All @@ -298,7 +302,8 @@ def Moment(self,
load_parameter = None,
list_reference: bool= False,
comment: str = '',
params: dict = {}):
params: dict = None,
model = Model):
'''
load_parameter:
LOAD_DISTRIBUTION_UNIFORM: load_parameter = magnitude
Expand All @@ -313,7 +318,7 @@ def Moment(self,
LOAD_DISTRIBUTION_VARYING: load_parameter = [[distance, delta_distance, magnitude], ...]
'''
# Client model | Lineset Load
clientObject = Model.clientModel.factory.create('ns0:line_set_load')
clientObject = model.clientModel.factory.create('ns0:line_set_load')

# Clears object attributes | Sets all attributes to None
clearAtributes(clientObject)
Expand Down Expand Up @@ -512,11 +517,12 @@ def Moment(self,
clientObject.comment = comment

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

# Add Load Lineset Load to client model
Model.clientModel.service.set_line_set_load(load_case_no, clientObject)
model.clientModel.service.set_line_set_load(load_case_no, clientObject)

def Mass(self,
no: int = 1,
Expand All @@ -525,7 +531,8 @@ def Mass(self,
individual_mass_components: bool=True,
mass_components = None,
comment: str = '',
params: dict = {}):
params: dict = None,
model = Model):
'''
if individual_mass_components == False:
mass_components = [mass_global]
Expand All @@ -535,7 +542,7 @@ def Mass(self,
'''

# Client model | Line Load
clientObject = Model.clientModel.factory.create('ns0:line_set_load')
clientObject = model.clientModel.factory.create('ns0:line_set_load')

# Clears object atributes | Sets all atributes to None
clearAtributes(clientObject)
Expand Down Expand Up @@ -578,8 +585,9 @@ def Mass(self,
clientObject.comment = comment

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

# Add Load Line Load to client model
Model.clientModel.service.set_line_set_load(load_case_no, clientObject)
model.clientModel.service.set_line_set_load(load_case_no, clientObject)
12 changes: 7 additions & 5 deletions RFEM/TypesForSteelDesign/steelMemberRotationalRestraints.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ def __init__(self,
categories: list = [],
parameters: list = [],
comment: str = '',
params: dict = {}):
params: dict = None,
model = Model):
"""
Args:
no (int): Member Rotational Restraint No.
Expand Down Expand Up @@ -64,7 +65,7 @@ def __init__(self,
"""

# Client Model / Types For Steel Design Member Rotational Restraints
clientObject = Model.clientModel.factory.create('ns0:steel_member_rotational_restraint')
clientObject = model.clientModel.factory.create('ns0:steel_member_rotational_restraint')

# Clears Object Attributes / Sets all the attributes to None
clearAtributes(clientObject)
Expand Down Expand Up @@ -125,11 +126,12 @@ def __init__(self,
clientObject.comment = comment

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

# Adding Steel Member Rotational Restraint to Client Model
Model.clientModel.service.set_steel_member_rotational_restraint(clientObject)
model.clientModel.service.set_steel_member_rotational_restraint(clientObject)



Expand Down
186 changes: 186 additions & 0 deletions RFEM/TypesForSteelDesign/steelMemberShearPanel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
from http import client
from RFEM.initModel import Model, clearAtributes, ConvertToDlString
from RFEM.enums import *

class SteelMemberShearPanel():
def __init__(self,
no: int = 1,
user_defined_name: list = [False],
definition_type = SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_TRAPEZOIDAL_SHEETING,
members: str = "",
member_sets: str = "",
categories = [SteelMemberShearPanelPositionOnSection.POSITION_ON_UPPER_FLANGE, "FI (+) 35/207 - 0.63 (b: 1) | DIN 18807 | Fischer Profil", SteelMemberShearPanelFasteningArrangement.FASTENING_ARRANGEMENT_EVERY_RIB],
parameters = [1, 2, 0.000247, 0.01043],
comment: str = '',
params: dict = None):
"""
Args:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the argument section could be shorter, not specifying every case. Or at least specify first all arguments and then add any informatio necessary for understanding. I think we don't have to copy whole logic into dosctring. If user wants to know the logic, he ca nread it from the body of the method.
What do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can be done, but didn't want to delete when it's already there :) I will be more specific next time.

no (int): Member Shear Panel Tag
user_defined_name (list): User Defined Member Shear Panel Name
definition_type (enum): Member Shear Panel Definition Enumeration Type
members (str): Assigned Members
member_sets (str): Assigned Member Sets
categories (list): Positional Categories

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_TRAPEZOIDAL_SHEETING:
categories[0] = Section Position Enumeration Type
categories[1] = Sheeting Name
categories[2] = Fastening Arrangment Enumeration Type

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_BRACING:
categories[0] = Section Position Enumeration Type
categories[1] = Diagonal Section Name
categories[2] = Post Section Name

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_TRAPEZOIDAL_SHEETING_AND_BRACING:
categories[0] = Section Position Enumeration Type
categories[1] = Sheeting Name
categories[2] = Digonal Section Name
categories[3] = Post Section Name
categories[4] = Fastening Arrangment Enumeration Type

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_DEFINE_S_PROV:
categories[0] = Section Position Enumeration Type

parameters (list): Positional Parameters

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_TRAPEZOIDAL_SHEETING:
parameters[0] = Panel Length
parameters[1] = Beam Spacing
parameters[2] = K1 Coefficient
parameters[3] = K2 Coefficient

if categories[0] == "POSITION_DEFINE":
parameters[4] = Position on Section Value

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_BRACING:
parameters[0] = Panel Length
parameters[1] = Beam Spacing
parameters[2] = Post Spacing
parameters[3] = Number of Bracings
parameters[4] = Diagonals Section Area
parameters[5] = Post Section Area

if categories[0] == "POSITION_DEFINE":
parameters[6] = Position on Section Value

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_TRAPEZOIDAL_SHEETING_AND_BRACING:
parameters[0] = Panel Length
parameters[1] = Beam Spacing
parameters[2] = K1 Coefficient
parameters[3] = K2 Coefficient
parameters[4] = Post Spacing
parameters[5] = Number of Bracing
parameters[6] = Diagonals Section Area
parameters[7] = Post Section Area

if categories[0] == "POSITION_DEFINE":
parameters[8] = Position on Section Value

for definition_type == SteelMemberShearPanelDefinitionType.DEFINITION_TYPE_DEFINE_S_PROV:
parameters[0] = Stifness

if categories[0] == "POSITION_DEFINE":
parameters[1] = Position on Section Value

comment (str, optional): Comment
params (dict, optional): Parameters
"""

# Client Model | Types For Steel Design Member Shear Panel
clientObject = Model.clientModel.factory.create('ns0:steel_member_shear_panel')

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

# Member Shear Panel No.
clientObject.no = no

# Member Shear Panel Assigned Members
clientObject.members = ConvertToDlString(members)

# Member Shear Panel Assigned Member Sets
clientObject.member_sets = ConvertToDlString(member_sets)

# Member Shear Panel User Defined Name
if user_defined_name[0]:
clientObject.user_defined_name_enabled = user_defined_name[0]
clientObject.name = user_defined_name[1]
else:
clientObject.user_defined_name_enabled = user_defined_name[0]

# Member Shear Panel Definition Type
clientObject.definition_type = definition_type.name

# Member Shear Panel Categories
if definition_type.name == "DEFINITION_TYPE_TRAPEZOIDAL_SHEETING":
clientObject.position_on_section = categories[0].name
clientObject.sheeting_name = categories[1]
clientObject.fastening_arrangement = categories[2].name

elif definition_type.name == "DEFINITION_TYPE_BRACING":
clientObject.position_on_section = categories[0].name
clientObject.diagonals_section_name = categories[1]
clientObject.posts_section_name = categories[2]

elif definition_type.name == "DEFINITION_TYPE_TRAPEZOIDAL_SHEETING_AND_BRACING":
clientObject.position_on_section = categories[0].name
clientObject.sheeting_name = categories[1]
clientObject.diagonals_section_name = categories[2]
clientObject.posts_section_name = categories[3]
clientObject.fastening_arrangement = categories[4].name

elif definition_type.name == "DEFINITION_TYPE_DEFINE_S_PROV":
clientObject.position_on_section = categories[0].name

# Member Shear Panel Parameters
if definition_type.name == "DEFINITION_TYPE_TRAPEZOIDAL_SHEETING":
clientObject.panel_length = parameters[0]
clientObject.beam_spacing = parameters[1]
clientObject.coefficient_k1 = parameters[2]
clientObject.coefficient_k2 = parameters[3]

if categories[0].name == "POSITION_DEFINE":
clientObject.position_on_section_value = parameters[4]

elif definition_type.name == "DEFINITION_TYPE_BRACING":
clientObject.panel_length = parameters[0]
clientObject.beam_spacing = parameters[1]
clientObject.post_spacing = parameters[2]
clientObject.number_of_bracings = parameters[3]
clientObject.diagonals_section_area = parameters[4]
clientObject.posts_section_area = parameters[5]

if categories[0].name == "POSITION_DEFINE":
clientObject.position_on_section_value = parameters[6]

elif definition_type.name == "DEFINITION_TYPE_TRAPEZOIDAL_SHEETING_AND_BRACING":
clientObject.panel_length = parameters[0]
clientObject.beam_spacing = parameters[1]
clientObject.coefficient_k1 = parameters[2]
clientObject.coefficient_k2 = parameters[3]
clientObject.post_spacing = parameters[4]
clientObject.number_of_bracings = parameters[5]
clientObject.diagonals_section_area = parameters[6]
clientObject.posts_section_area = parameters[7]

if categories[0].name == "POSITION_DEFINE":
clientObject.position_on_section_value = parameters[8]

elif definition_type.name == "DEFINITION_TYPE_DEFINE_S_PROV":
clientObject.stiffness = parameters[0]

if categories[0].name == "POSITION_DEFINE":
clientObject.position_on_section_value = parameters[1]

# Comment
clientObject.comment = comment

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

# Add Steel Effective Lengths to client model
Model.clientModel.service.set_steel_member_shear_panel(clientObject)

18 changes: 18 additions & 0 deletions RFEM/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -1719,6 +1719,24 @@ class SteelEffectiveLengthsMemberTypeZZ(Enum):
'''
MEMBER_TYPE_BEAM, MEMBER_TYPE_CANTILEVER = range(2)

class SteelMemberShearPanelDefinitionType(Enum):
'''
Steel Member Shear Panel Definition Type
'''
DEFINITION_TYPE_BRACING, DEFINITION_TYPE_DEFINE_S_PROV,\
DEFINITION_TYPE_TRAPEZOIDAL_SHEETING, DEFINITION_TYPE_TRAPEZOIDAL_SHEETING_AND_BRACING = range(4)

class SteelMemberShearPanelPositionOnSection(Enum):
'''
Steel Member Shear Panel Position On Section
'''
POSITION_DEFINE, POSITION_IN_CENTROID, POSITION_ON_LOWER_FLANGE, POSITION_ON_UPPER_FLANGE = range(4)

class SteelMemberShearPanelFasteningArrangement(Enum):
'''
Steel Member Shear Panel Fastening Arrangement
'''
FASTENING_ARRANGEMENT_EVERY_RIB, FASTENING_ARRANGEMENT_EVERY_SECOND_RIB = range(2)
class SteelMemberRotationalRestraintType(Enum):
'''
Steel Member Rotational Restraint Type
Expand Down
Loading