From cbe944d03086506fc1b12a9aa28545ffa932c4c0 Mon Sep 17 00:00:00 2001 From: Sigma Dimensions <79010126+myoualid@users.noreply.github.com> Date: Fri, 9 Sep 2022 11:43:28 +0100 Subject: [PATCH] BBIM - temp fix to refresh cost items products' quantities UI, when qto is edited --- .../blenderbim/bim/module/cost/operator.py | 32 ++++++++++--------- .../blenderbim/bim/module/cost/ui.py | 5 +++ .../blenderbim/bim/module/pset/operator.py | 1 + 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/cost/operator.py b/src/blenderbim/blenderbim/bim/module/cost/operator.py index 7ae99a4ef7..8625aff69d 100644 --- a/src/blenderbim/blenderbim/bim/module/cost/operator.py +++ b/src/blenderbim/blenderbim/bim/module/cost/operator.py @@ -923,24 +923,26 @@ class LoadCostItemQuantities(bpy.types.Operator): def execute(self, context): self.props = context.scene.BIMCostProperties self.file = IfcStore.get_file() + Data.load(self.file) self.props.cost_item_products.clear() self.props.cost_item_processes.clear() self.props.cost_item_resources.clear() - ifc_definition_id = self.props.cost_items[self.props.active_cost_item_index].ifc_definition_id - for control_id, quantity_ids in Data.cost_items[ifc_definition_id]["Controls"].items(): - related_object = self.file.by_id(control_id) - if related_object.is_a("IfcProduct"): - new = self.props.cost_item_products.add() - elif related_object.is_a("IfcProcess"): - new = self.props.cost_item_processes.add() - elif related_object.is_a("IfcResource"): - new = self.props.cost_item_resources.add() - new.ifc_definition_id = control_id - new.name = related_object.Name or "Unnamed" - total_quantity = 0 - for quantity_id in quantity_ids: - total_quantity += self.file.by_id(quantity_id)[3] - new.total_quantity = total_quantity + if self.props.active_cost_item_index: + ifc_definition_id = self.props.cost_items[self.props.active_cost_item_index].ifc_definition_id + for control_id, quantity_ids in Data.cost_items[ifc_definition_id]["Controls"].items() or {}: + related_object = self.file.by_id(control_id) + if related_object.is_a("IfcProduct"): + new = self.props.cost_item_products.add() + elif related_object.is_a("IfcProcess"): + new = self.props.cost_item_processes.add() + elif related_object.is_a("IfcResource"): + new = self.props.cost_item_resources.add() + new.ifc_definition_id = control_id + new.name = related_object.Name or "Unnamed" + total_quantity = 0 + for quantity_id in quantity_ids: + total_quantity += self.file.by_id(quantity_id)[3] + new.total_quantity = total_quantity return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/cost/ui.py b/src/blenderbim/blenderbim/bim/module/cost/ui.py index 517bc46f50..2a47e3e5e2 100644 --- a/src/blenderbim/blenderbim/bim/module/cost/ui.py +++ b/src/blenderbim/blenderbim/bim/module/cost/ui.py @@ -343,6 +343,11 @@ class BIM_PT_cost_item_quantities(Panel): return False def draw(self, context): + if not Data.is_loaded: + Data.load(IfcStore.get_file()) + + if not UnitData.is_loaded: + UnitData.load(IfcStore.get_file()) self.props = context.scene.BIMCostProperties cost_item = self.props.cost_items[self.props.active_cost_item_index] diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py index aa1d7a1975..97ff77edd0 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/operator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py @@ -261,6 +261,7 @@ class EditPset(bpy.types.Operator, Operator): }, ) CostData.purge() + bpy.ops.bim.load_cost_item_quantities() Data.load(IfcStore.get_file(), ifc_definition_id) bpy.ops.bim.disable_pset_editing(obj=self.obj, obj_type=self.obj_type)