Source code for fconcrete.API

import fconcrete as fc
import json

[docs]class API: """API is responsable to convert plain text to useful data.""" def __init__(self, income_text): """Reiceive plain text and set attributes with useful data""" self.income_text = income_text self.status = "OK" try: concrete_beam_data = json.loads(income_text)["ConcreteBeam"] to_function = { "available_concrete": fc.AvailableConcrete, "available_long_steel_bars": fc.AvailableLongConcreteSteelBar, "available_transv_steel_bars": fc.AvailableTransvConcreteSteelBar } to_list = ["available_long_steel_bars_diameters", "available_transv_steel_bars_diameters"] for arg, func in to_function.items(): available_concrete_dict = { k[len(arg)+1:]:([v] if (k in to_list and type(v) != list) else v) for k,v in concrete_beam_data.items() if arg in k } concrete_beam_data = {**concrete_beam_data, **{arg: func(**available_concrete_dict)}} if concrete_beam_data: nodes = [self.getNode(node) for node in concrete_beam_data["nodes"]] loads = [self.getLoad(load) for load in concrete_beam_data["loads"]] width, height = concrete_beam_data["section"]["width"], concrete_beam_data["section"]["height"] other_parameters = { k:v for (k, v) in concrete_beam_data.items() if not k in ["nodes", "loads", "section"]} concrete_beam = fc.ConcreteBeam( loads = loads, nodes = nodes, section = fc.Rectangle(width,height), **other_parameters ) self.concrete_beam = concrete_beam except Exception as excep: error = str(excep) self.status = error
[docs] @staticmethod def getNode(noad_dict): if noad_dict["type"] == "Free" : return getattr(fc.Node, noad_dict["type"])(x=noad_dict["x"]) return getattr(fc.Node, noad_dict["type"])(x=noad_dict["x"], length=noad_dict["length"])
[docs] @staticmethod def getLoad(load_dict): if load_dict["type"] == "UniformDistributedLoad": return fc.Load.UniformDistributedLoad(x_begin=load_dict["x_begin"], x_end=load_dict["x_end"], q=load_dict["q"]) if load_dict["type"] == "PontualLoad": return fc.Load.PontualLoad(x=load_dict["x"], load=load_dict["load"])
def __repr__(self): return self.income_text