Skip to content

Commit cb51dbe

Browse files
update member.py
1 parent 6d9d17e commit cb51dbe

3 files changed

Lines changed: 79 additions & 2 deletions

File tree

RFEM/BasicObjects/member.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,6 +1727,63 @@ def CouplingHingeHinge(
17271727
# Add Member to client model
17281728
model.clientModel.service.set_member(clientObject)
17291729

1730+
@staticmethod
1731+
def Spring(no: int = 1,
1732+
start_node_no: int = 1,
1733+
end_node_no: int = 2,
1734+
line: int = None,
1735+
spring_type: int = None,
1736+
comment: str = '',
1737+
params: dict = None,
1738+
model = Model):
1739+
"""
1740+
Args:
1741+
no (int): Member Tag
1742+
start_node_no (int): Tag of Start Node
1743+
end_node_no (int): Tag of End Node
1744+
line (int, optional): Assigned Line
1745+
spring_type (int, optional): Assign Member Spring Type
1746+
comment (str, optional): Comment
1747+
params (dict, optional): Any WS Parameter relevant to the object and its value in form of a dictionary
1748+
model (RFEM Class, optional): Model to be edited
1749+
"""
1750+
1751+
# Client model | Member
1752+
clientObject = model.clientModel.factory.create('ns0:member')
1753+
1754+
# Clears object atributes | Sets all atributes to None
1755+
clearAttributes(clientObject)
1756+
1757+
# Member No.
1758+
clientObject.no = no
1759+
1760+
# Member Type
1761+
clientObject.type = MemberType.TYPE_SPRING.name
1762+
1763+
# Assigned Line number or Node numbers
1764+
if line is None:
1765+
clientObject.node_start = start_node_no
1766+
clientObject.node_end = end_node_no
1767+
else:
1768+
clientObject.line = line
1769+
1770+
# Spring Type
1771+
clientObject.member_type_spring = spring_type
1772+
1773+
# Comment
1774+
clientObject.comment = comment
1775+
1776+
# Adding optional parameters via dictionary
1777+
if params:
1778+
for key in params:
1779+
clientObject[key] = params[key]
1780+
1781+
# Delete None attributes for improved performance
1782+
deleteEmptyAttributes(clientObject)
1783+
1784+
# Add Member to client model
1785+
model.clientModel.service.set_member(clientObject)
1786+
17301787
@staticmethod
17311788
def DeleteMember(members_no: str = '1 2', model = Model):
17321789

RFEM/enums.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ class MemberType(Enum):
66
Member Type
77
'''
88
TYPE_BEAM, TYPE_BUCKLING, TYPE_CABLE, TYPE_COMPRESSION, TYPE_COUPLING_HINGE_HINGE,\
9-
TYPE_COUPLING_HINGE_RIGID, TYPE_COUPLING_RIGID_HINGE, TYPE_COUPLING_RIGID_RIGID,\
10-
TYPE_DEFINABLE_STIFFNESS, TYPE_RIB, TYPE_RIGID, TYPE_TENSION, TYPE_TRUSS, TYPE_TRUSS_ONLY_N, TYPE_RESULT_BEAM = range(15)
9+
TYPE_COUPLING_HINGE_RIGID, TYPE_COUPLING_RIGID_HINGE, TYPE_COUPLING_RIGID_RIGID, TYPE_SPRING,\
10+
TYPE_DEFINABLE_STIFFNESS, TYPE_RIB, TYPE_RIGID, TYPE_TENSION, TYPE_TRUSS, TYPE_TRUSS_ONLY_N, TYPE_RESULT_BEAM = range(16)
1111

1212

1313
class NodalSupportType(Enum):

UnitTests/test_member.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,3 +338,23 @@ def test_member_couplingHingeHinge():
338338

339339
assert round(member.analytical_length, 5) == 5.19615
340340
assert member.type == "TYPE_COUPLING_HINGE_HINGE"
341+
342+
def test_member_spring():
343+
344+
Model.clientModel.service.delete_all()
345+
Model.clientModel.service.begin_modification()
346+
347+
Material(1, 'S235')
348+
Section(1, 'IPE 300', 1)
349+
350+
Node(1, 0, 0, 0)
351+
Node(2, 3, 3, 3)
352+
353+
Member.Spring(1, 1, 2)
354+
355+
Model.clientModel.service.finish_modification()
356+
357+
member = Model.clientModel.service.get_member(1)
358+
359+
assert round(member.analytical_length, 5) == 5.19615
360+
assert member.type == "TYPE_SPRING"

0 commit comments

Comments
 (0)