From ebd3418e991ba8834e1c3da379a61ba697a81f6b Mon Sep 17 00:00:00 2001 From: MichalO Date: Tue, 8 Feb 2022 13:08:22 +0100 Subject: [PATCH 1/2] GetDesignOverview implementation and test added typo in PlausiblityCheck() --- RFEM/Results/designOverview.py | 31 ++++++++++++++++++++++++++++++ RFEM/Tools/PlausibilityCheck.py | 2 +- RFEM/initModel.py | 2 +- UnitTests/test_DesignOverview.py | 31 ++++++++++++++++++++++++++++++ UnitTests/test_plausiblityCheck.py | 4 ++-- 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 RFEM/Results/designOverview.py create mode 100644 UnitTests/test_DesignOverview.py 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..ffcea715 --- /dev/null +++ b/UnitTests/test_DesignOverview.py @@ -0,0 +1,31 @@ +import sys +import os +dirName = os.path.dirname(__file__) +PROJECT_ROOT = os.path.abspath(os.path.join( + dirName, + os.pardir) +) +sys.path.append(PROJECT_ROOT) + +from RFEM.initModel import Model +from RFEM.Results.designOverview import GetDesignOverview, GetPartialDesignOverview + +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 + 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() From 138747c0b4723f7858c186bd2d2e55ce023718db Mon Sep 17 00:00:00 2001 From: MichalO Date: Tue, 8 Feb 2022 15:35:52 +0100 Subject: [PATCH 2/2] Parts List --- RFEM/Reports/partsList.py | 62 ++++++++++++++++++++++++++++++++ UnitTests/test_DesignOverview.py | 28 +++++++++++++-- 2 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 RFEM/Reports/partsList.py 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/UnitTests/test_DesignOverview.py b/UnitTests/test_DesignOverview.py index ffcea715..62eb2813 100644 --- a/UnitTests/test_DesignOverview.py +++ b/UnitTests/test_DesignOverview.py @@ -1,14 +1,16 @@ import sys import os -dirName = os.path.dirname(__file__) PROJECT_ROOT = os.path.abspath(os.path.join( - dirName, + 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() @@ -29,3 +31,25 @@ def test_designOverview(): 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'