From 9e50c89c015d0eb8e7040883c5fda59ad373ac69 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 16 Jan 2025 18:26:17 +0500 Subject: [PATCH] Work schedule UI - use cached data instead of accesing IFC --- src/bonsai/bonsai/bim/module/sequence/ui.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/sequence/ui.py b/src/bonsai/bonsai/bim/module/sequence/ui.py index 18eb3c6ae2..26973acd1c 100644 --- a/src/bonsai/bonsai/bim/module/sequence/ui.py +++ b/src/bonsai/bonsai/bim/module/sequence/ui.py @@ -832,9 +832,7 @@ class BIM_UL_tasks(UIList): def draw_item(self, context, layout, data, item, icon, active_data, active_propname): if item: self.props = context.scene.BIMWorkScheduleProperties - ifc_file = tool.Ifc.get() - # TODO: cache instead of accessing IFC directly. - task = ifc_file.by_id(item.ifc_definition_id) + task = SequenceData.data["tasks"][item.ifc_definition_id] row = layout.row(align=True) self.draw_hierarchy(row, item) @@ -910,7 +908,7 @@ class BIM_UL_tasks(UIList): props: bpy.types.PropertyGroup, row: bpy.types.UILayout, item: Optional[bpy.types.PropertyGroup] = None, - task: Optional[ifcopenshell.entity_instance] = None, + task: Optional[dict[str, Any]] = None, *, header: bool = False, ) -> None: @@ -956,9 +954,12 @@ class BIM_UL_tasks(UIList): row.label(text=name) else: if ifc_class == "IfcTask": - value = getattr(task, name) + value = task[name] elif ifc_class == "IfcTaskTime": - value = getattr(task.TaskTime, name) if task.TaskTime else None + if (task_time_id := task["TaskTime"]) is None: + value = None + else: + value = SequenceData.data["task_times"][task_time_id][name] else: assert False, f"Unexpected ifc_class '{ifc_class}'." if value is None: