From 8b23c615c33c67c2e8592edd980b23964082f1c3 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 1 Nov 2023 17:33:00 +0500 Subject: [PATCH] Fix issue with calculated params in stair ui it was displaying incorrect data when stair was just loaded because it was relying on BIMStairProperties in ui.py --- .../blenderbim/bim/module/model/data.py | 23 +++++++++++++++++++ .../blenderbim/bim/module/model/ui.py | 14 ++++------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/model/data.py b/src/blenderbim/blenderbim/bim/module/model/data.py index bef3f91a7d..c5b44b9c8b 100644 --- a/src/blenderbim/blenderbim/bim/module/model/data.py +++ b/src/blenderbim/blenderbim/bim/module/model/data.py @@ -314,6 +314,7 @@ class StairData: if not cls.data["pset_data"]: return cls.data["general_params"] = cls.general_params() + cls.data["calculated_params"] = cls.calculated_params() @classmethod def pset_data(cls): @@ -330,6 +331,28 @@ class StairData: general_params[prop_readable_name] = prop_value return general_params + @classmethod + def calculated_params(cls): + props = bpy.context.active_object.BIMStairProperties + + if props.is_editing: + si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) + number_of_treads = props.number_of_treads + height = props.height / si_conversion + tread_run = props.tread_run / si_conversion + else: + data = cls.data["pset_data"]["data_dict"] + number_of_treads = data["number_of_treads"] + height = data["height"] + tread_run = data["tread_run"] + + calculated_params = {} + number_of_rises = number_of_treads + 1 + calculated_params["Number of risers"] = number_of_rises + calculated_params["Tread rise"] = round(height / number_of_rises, 5) + calculated_params["Length"] = round(tread_run * number_of_rises, 5) + return calculated_params + class SverchokData: data = {} diff --git a/src/blenderbim/blenderbim/bim/module/model/ui.py b/src/blenderbim/blenderbim/bim/module/model/ui.py index 44ede97125..4e2047996c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/ui.py +++ b/src/blenderbim/blenderbim/bim/module/model/ui.py @@ -278,16 +278,10 @@ class BIM_PT_stair(bpy.types.Panel): row.label(text=str(prop_value)) # calculated properties - number_of_rises = props.number_of_treads + 1 - row = self.layout.row(align=True) - row.label(text="Number of risers") - row.label(text=str(number_of_rises)) - row = self.layout.row(align=True) - row.label(text="Tread rise") - row.label(text=str(round(props.height / number_of_rises, 5))) - row = self.layout.row(align=True) - row.label(text="Length") - row.label(text=str(round(props.tread_run * number_of_rises, 5))) + for prop_name, prop_value in StairData.data["calculated_params"].items(): + row = self.layout.row(align=True) + row.label(text=prop_name) + row.label(text=str(prop_value)) else: row = self.layout.row() row.label(text="No Stair Found")