diff --git a/RFEM/Reports/partsList.py b/RFEM/Reports/partsList.py new file mode 100644 index 00000000..637bf8d0 --- /dev/null +++ b/RFEM/Reports/partsList.py @@ -0,0 +1,62 @@ + +from RFEM.initModel import Model + +def GetPartsListAllByMaterial(): + ''' + Returns Parts List All By Material + ''' + try: + return Model.clientModel.service.get_parts_list_all_by_material() + except: + Model.clientModel.service.generate_parts_lists() + return Model.clientModel.service.get_parts_list_all_by_material() + +def GetPartsListMemberRepresentativesByMaterial(): + ''' + Returns Parts List Member Representatives By Material + ''' + try: + return Model.clientModel.service.get_parts_list_member_representatives_by_material() + except: + Model.clientModel.service.generate_parts_lists() + return Model.clientModel.service.get_parts_list_member_representatives_by_material() + +def GetPartsListMemberSetsByMaterial(): + ''' + Returns Parts List Member Sets By Material + ''' + try: + return Model.clientModel.service.get_parts_list_member_sets_by_material() + except: + Model.clientModel.service.generate_parts_lists() + return Model.clientModel.service.get_parts_list_member_sets_by_material() + +def GetPartsListMembersByMaterial(): + ''' + Returns Parts List Members By Material + ''' + try: + return Model.clientModel.service.get_parts_list_members_by_material() + except: + Model.clientModel.service.generate_parts_lists() + return Model.clientModel.service.get_parts_list_members_by_material() + +def GetPartsListSolidsByMaterial(): + ''' + Returns Parts List Solids By Material + ''' + try: + return Model.clientModel.service.get_parts_list_solids_by_material() + except: + Model.clientModel.service.generate_parts_lists() + return Model.clientModel.service.get_parts_list_solids_by_material() + +def GetPartsListSurfacessByMaterial(): + ''' + Returns Parts List Surfaces By Material + ''' + try: + return Model.clientModel.service.get_parts_list_surfaces_by_material() + except: + Model.clientModel.service.generate_parts_lists() + return Model.clientModel.service.get_parts_list_surfaces_by_material() diff --git a/RFEM/Results/designOverview.py b/RFEM/Results/designOverview.py new file mode 100644 index 00000000..a7c731c0 --- /dev/null +++ b/RFEM/Results/designOverview.py @@ -0,0 +1,31 @@ +from RFEM.initModel import Model + +def GetDesignOverview(): + ''' + Returns whole Design Overview list. + ''' + # Return Design Overview + return Model.clientModel.service.get_design_overview() + +def GetPartialDesignOverview(comply: bool = False): + """ + Returns part of Design Overview that do(esn't) comply. + If comply == False, function resturns checks with Design Ration > 1 + If comply == True, function resturns checks with Design Ration <= 1 + """ + designOverview = GetDesignOverview() + + designRatioLessThanOne = [] + designRationOverOne = [] + for do in designOverview[0]: + if round(do['design_ratio'], 5) <= 1.0: + designRatioLessThanOne.append(do) + else: + designRationOverOne.append(do) + + if comply: + return designRatioLessThanOne + else: + return designRationOverOne + + diff --git a/RFEM/Tools/PlausibilityCheck.py b/RFEM/Tools/PlausibilityCheck.py index 30d1a294..701a7da3 100644 --- a/RFEM/Tools/PlausibilityCheck.py +++ b/RFEM/Tools/PlausibilityCheck.py @@ -1,7 +1,7 @@ from RFEM.initModel import Model from RFEM.enums import PlausibilityCheckResult -class PlausiblityCheck(): +class PlausibilityCheck(): def __init__(self, skip_warnings:bool = False): diff --git a/RFEM/initModel.py b/RFEM/initModel.py index b14670ee..4daff344 100644 --- a/RFEM/initModel.py +++ b/RFEM/initModel.py @@ -135,7 +135,7 @@ class Model(): clientModel = None def __init__(self, new_model: bool=True, - model_name: str="MyModel", + model_name: str="TestModel", delete: bool=False, delete_all: bool=False): diff --git a/UnitTests/test_DesignOverview.py b/UnitTests/test_DesignOverview.py new file mode 100644 index 00000000..62eb2813 --- /dev/null +++ b/UnitTests/test_DesignOverview.py @@ -0,0 +1,55 @@ +import sys +import os +PROJECT_ROOT = os.path.abspath(os.path.join( + os.path.dirname(__file__), + os.pardir) +) +sys.path.append(PROJECT_ROOT) + +from RFEM.initModel import Model +from RFEM.Results.designOverview import GetDesignOverview, GetPartialDesignOverview +from RFEM.Reports.partsList import GetPartsListAllByMaterial, GetPartsListMemberRepresentativesByMaterial +from RFEM.Reports.partsList import GetPartsListMemberSetsByMaterial, GetPartsListMembersByMaterial +from RFEM.Reports.partsList import GetPartsListSolidsByMaterial, GetPartsListSurfacessByMaterial + +if Model.clientModel is None: + Model() + +def test_designOverview(): + + Model.clientModel.service.delete_all() + Model.clientModel.service.run_script('..\\scripts\\internal\\Demos\\Demo-004 Bus Station-Concrete Design.js') + Model.clientModel.service.calculate_all(False) + + designOverview = GetDesignOverview() + assert designOverview[0][0]['design_ratio'] == 2.851 + assert designOverview[0][0]['design_check_type'] == 'DM0210.00' + + partialDesignOverview = GetPartialDesignOverview(False) + assert len(partialDesignOverview) == 18 + + partialDesignOverview = GetPartialDesignOverview(True) + assert len(partialDesignOverview) == 37 + + a = GetPartsListAllByMaterial() + assert len(a[0]) == 5 + assert a[0][0]['volume'] == a[0][1]['volume'] + + b = GetPartsListMemberRepresentativesByMaterial() + assert b == '' + + c = GetPartsListMemberSetsByMaterial() + assert c == '' + + d = GetPartsListMembersByMaterial() + assert len(d[0]) == 5 + assert d[0][0]['no'] == 1 + assert round(d[0][0]['total_weight']) == 1200 + assert round(d[0][-1]['total_weight']) == 2300 + + e = GetPartsListSolidsByMaterial() + assert e == '' + + f = GetPartsListSurfacessByMaterial() + assert len(f[0]) == 6 + assert f[0][1]['thickness_name'] == 'Uniform | d : 120.0 mm | 2 - C20/25' diff --git a/UnitTests/test_plausiblityCheck.py b/UnitTests/test_plausiblityCheck.py index c2958ce3..6d3caf26 100644 --- a/UnitTests/test_plausiblityCheck.py +++ b/UnitTests/test_plausiblityCheck.py @@ -11,7 +11,7 @@ from RFEM.BasicObjects.section import Section from RFEM.BasicObjects.material import Material from RFEM.initModel import Model -from RFEM.Tools.PlausibilityCheck import PlausiblityCheck +from RFEM.Tools.PlausibilityCheck import PlausibilityCheck if Model.clientModel is None: Model() @@ -39,7 +39,7 @@ def test_plausibility_check(): Model.clientModel.service.finish_modification() - check = PlausiblityCheck() + check = PlausibilityCheck() assert check.message == 'Success' assert check.errormessage == '' assert check.IsModelOK()