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
27 changes: 27 additions & 0 deletions package/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# RFEM Python High Level Function Library

## Project Description
**Webservice and API** is a programmable interface for RFEM 6 . Based on this technology, the program RFEM 6 provide a server service that can be used locally or via the network. The client-server communication allows you to send requests to and receive feedback from RFEM 6 .

High-level libraries are available for the Python and C# programming languages, which allow easy and intuitive use of web services. The high-level libraries are available on [**GitHub under an open source license**](https://github.com/Dlubal-Software/RFEM_Python_Client). They can be used free of charge and adapted to your specific needs. Contributions to our repositories are always welcome.

## Example
```
from RFEM.initModel import Model, Calculate_all
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.TypesForNodes.nodalSupport import NodalSupport
from RFEM.enums import NodalSupportType, LoadDirectionType
from RFEM.LoadCasesAndCombinations.staticAnalysisSettings import StaticAnalysisSettings
from RFEM.LoadCasesAndCombinations.loadCase import LoadCase
from RFEM.Loads.nodalLoad import NodalLoad
```
## API Documentation

Visit our [GitHub page](https://dlubal-software.github.io/RFEM_Python_Client/)

## License

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
1 change: 1 addition & 0 deletions package/RFEM/BasicObjects/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

213 changes: 213 additions & 0 deletions package/RFEM/BasicObjects/bracing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
# from RFEM.initModel import Model, clearAtributes, ConvertToDlString
# from RFEM.enums import BracingType

# class Bracing():
# def __init__(self,
# no: int = 1,
# member_type = BracingType.TYPE_HORIZONTAL,
# start_node_no: int = 1,
# end_node_no: int = 2,
# rotation_angle: float = 0.0,
# start_section_no: int = 1,
# end_section_no: int = 1,
# comment: str = '',
# params: dict = {}):

# '''
# Args:
# no (int): Bracing Tag
# member_type (enum): Bracing Type Enumeration
# start_node_no (int): Start Node
# end_node_no (int): End Node
# rotation_angle (float): Rotation Angle
# start_section_no (int): Tag of Start Section
# end_section_no (int): End of End Section
# comment (str, optional): Comment
# params (dict, optional): Parameters
# '''

# # Client model | Bracing
# clientObject = Model.clientModel.factory.create('ns0:bracing')

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

# # Bracing No.
# clientObject.no = no

# # Bracing Type
# clientObject.type = bracing_type.name

# # Start Node No.
# clientObject.node_start = start_node_no

# # End Node No.
# clientObject.node_end = end_node_no

# # Bracing Rotation Angle beta
# clientObject.rotation_angle = rotation_angle

# # Start Section No.
# clientObject.section_start = start_section_no

# # End Section No.
# clientObject.section_end = end_section_no

# # Start Bracing Hinge No.
# clientObject.bracing_hinge_start = start_bracing_hinge_no

# # End Bracing Hinge No.
# clientObject.bracing_hinge_end = end_bracing_hinge_no

# # Comment
# clientObject.comment = comment

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

# # Add Member to client model
# Model.clientModel.service.set_bracing(clientObject)

# def Horizontal(self,
# no: int = 1,
# bracing_type = BracingType.TYPE_HORIZONTAL,
# start_node_no: int = 1,
# end_node_no: int = 2,
# rotation_angle: float = 0.0,
# start_section_no: int = 1,
# end_section_no: int = 1,
# start_bracing_hinge_no: int = 0,
# end_bracing_hinge_no: int = 0,
# comment: str = '',
# params: dict = {}):

# '''
# Args:
# no (int): Bracing Tag
# bracing_type (enum): Bracing Type Enumeration
# start_node_no (int): Start Node
# end_node_no (int): End Node
# rotation_angle (float): Rotation Angle
# start_section_no (int): Tag of Start Section
# end_section_no (int): End of End Section
# start_bracing_hinge_no (int): Hinge at Bracing Start
# end_bracing_hinge_no (int): Hinge at Bracing End
# comment (str, optional): Comment
# params (dict, optional): Parameters
# '''

# # Client model | Bracing
# clientObject = Model.clientModel.factory.create('ns0:bracing')

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

# # Bracing No.
# clientObject.no = no

# # Bracing Type
# clientObject.type = bracing_type.name

# # Start Node No.
# clientObject.node_start = start_node_no

# # End Node No.
# clientObject.node_end = end_node_no

# # Bracing Rotation Angle beta
# clientObject.rotation_angle = rotation_angle

# # Start Section No.
# clientObject.section_start = start_section_no

# # End Section No.
# clientObject.section_end = end_section_no

# # Start Bracing Hinge No.
# clientObject.bracing_hinge_start = start_bracing_hinge_no

# # End Bracing Hinge No.
# clientObject.bracing_hinge_end = end_bracing_hinge_no

# # Comment
# clientObject.comment = comment

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

# # Add Bracing to client model
# Model.clientModel.service.set_bracing(clientObject)

# def Vertical(self,
# no: int = 1,
# bracing_type = BracingType.TYPE_VERTICAL,
# start_node_no: int = 1,
# end_node_no: int = 2,
# rotation_angle: float = 0.0,
# start_section_no: int = 1,
# end_section_no: int = 1,
# start_bracing_hinge_no: int = 0,
# end_bracing_hinge_no: int = 0,
# comment: str = '',
# params: dict = {}):

# '''
# Args:
# no (int): Bracing Tag
# bracing_type (enum): Bracing Type Enumeration
# start_node_no (int): Start Node
# end_node_no (int): End Node
# rotation_angle (float): Rotation Angle
# start_section_no (int): Tag of Start Section
# end_section_no (int): End of End Section
# start_bracing_hinge_no (int): Hinge at Bracing Start
# end_bracing_hinge_no (int): Hinge at Bracing End
# comment (str, optional): Comment
# params (dict, optional): Parameters
# '''

# # Client model | Bracing
# clientObject = Model.clientModel.factory.create('ns0:bracing')

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

# # Bracing No.
# clientObject.no = no

# # Bracing Type
# clientObject.type = bracing_type.name

# # Start Node No.
# clientObject.node_start = start_node_no

# # End Node No.
# clientObject.node_end = end_node_no

# # Bracing Rotation Angle beta
# clientObject.rotation_angle = rotation_angle

# # Start Section No.
# clientObject.section_start = start_section_no

# # End Section No.
# clientObject.section_end = end_section_no

# # Start Bracing Hinge No.
# clientObject.bracing_hinge_start = start_bracing_hinge_no

# # End Bracing Hinge No.
# clientObject.bracing_hinge_end = end_bracing_hinge_no

# # Comment
# clientObject.comment = comment

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

# # Add Bracing to client model
# Model.clientModel.service.set_bracing(clientObject)

123 changes: 123 additions & 0 deletions package/RFEM/BasicObjects/frame.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# from RFEM.initModel import Model, clearAtributes, ConvertToDlString

# class Frame():
# def __init__(self,
# number_of_frames: int = 1,
# span_l: int = 2,
# height_h: int = 1,
# column_cross_section: 1,
# column_member_type = MemberType.TYPE_BEAM,
# girder_cross_section: 2,
# girder_member_type = MemberType.TYPE_BEAM,
# support_type = NodalSupportType.HINGED,
# insertion_point_x: int = 3,
# insertion_point_y: int = 4,
# insertion_point_z: int = 3,
# comment: str = '',
# params: dict = {}):

# '''
# Args:
# number_of_frames (int): Number of Frames
# span_l (int): Span Length
# height_h (int): Frame Height
# column_cross_section (int): Tag of Column Section
# column_member_type (enum): Column Member Type Enumeration
# girder_cross_section (int): Tag of Girder Section
# girder_member_type (enum): Girder Member Type Enumeration
# support_type (enum): Column to Girder Connection Type Enumeration
# insertion_point_x (int): Insertion Point x
# insertion_point_y (int): Insertion Point y
# insertion_point_z (int): Insertion Point z
# comment (str, optional): Comment
# params (dict, optional): Parameters
# '''

# # Client model | Frame
# clientObject = clientModel.factory.create('ns0:member')

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

# -------------------------------------------------------------------------
# # Number of frames: da soll man eine Funktion zu clientModel. herstellen... oder?

# i = 1
# while i <= n:
# j = (i-1) * 5
# Node(j+1, 0.0, -(i-1)*d, 0.0)
# Node(j+2, 0.0, -(i-1)*d, -h)
# Node(j+3, l/2, -(i-1)*d, -h)
# Node(j+4, l, -(i-1)*d, -h)
# Node(j+5, l, -(i-1)*d, 0.0)
# i += 1

# # Nodal Supports
# i = 1
# nodes_no = ""
# while i <= n:
# j = (i-1) * 5
# nodes_no += str(j+1) + " "
# nodes_no += str(j+5) + " "
# i += 1
# nodes_no = nodes_no.rstrip(nodes_no[-1])
# NodalSupport(1, nodes_no, NodalSupportType.HINGED, "Hinged support")

# #members: what's about the sections? maybe an input field where the user gives the materials
# Material (1 , 'S235')
# Material (2, 'C25/30')

# Section (1, 'HEM 700',1)
# Section (2, 'IPE 500',1)

# #members x direction
# i = 1
# while i <= n:
# j = (i-1) * 5
# k = (i-1) * 4
# Member(k+1, MemberType.TYPE_BEAM, j+1, j+2, 0.0, 1, 1)
# Member(k+2, MemberType.TYPE_BEAM, j+2, j+3, 0.0, 2, 2)
# Member(k+3, MemberType.TYPE_BEAM, j+3, j+4, 0.0, 2, 2)
# Member(k+4, MemberType.TYPE_BEAM, j+4, j+5, 0.0, 1, 1)
# i += 1
# print(k+1,k+2,k+3,k+4)

# #members y direction
# i = 1
# while i <= n-1:
# j = (i-1) * 5
# print(k+4+2*(i-1)+1, k+4+2*(i-1)+2)
# Member(int(k+4+2*(i-1)+1), MemberType.TYPE_BEAM, j+2, j+7, 0.0, 2, 2)
# Member(int(k+4+2*(i-1)+2), MemberType.TYPE_BEAM, j+4, j+9, 0.0, 2, 2)
# i += 1

# -------------------------------------------------------------------------

# clientObject. = NodeType.TYPE_BETWEEN_TWO_NODES.name
# = column_cross_section

# #column cross section
# clientobject. = columnn_cross_section.name

# #column member type
# clientObject.type = column_member_type.name

# #girder cross section
# clientobject. = girder_cross_section.name

# #girder member type
# clientObject.type = girder_member_type.name

# # Nodal Support

# clientObject. = support_type.name

# # Comment
# clientObject.comment = comment

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

# # Add Member to client model
# clientModel.service.set_frame(clientObject)
Loading