From 7133b01b76421c3750771afcd63583bf4f555fa1 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 30 Sep 2024 17:08:26 +0500 Subject: [PATCH] Count styles based on the current stype type #5462 Previously it was showing number of all IfcPresentationStyles --- src/bonsai/bonsai/bim/module/style/data.py | 13 +++++++++++-- src/bonsai/bonsai/bim/module/style/ui.py | 5 +++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/style/data.py b/src/bonsai/bonsai/bim/module/style/data.py index d07d0ab76f..6e7b51919f 100644 --- a/src/bonsai/bonsai/bim/module/style/data.py +++ b/src/bonsai/bonsai/bim/module/style/data.py @@ -68,8 +68,17 @@ class StylesData: ] @classmethod - def total_styles(cls): - return len(tool.Ifc.get().by_type("IfcPresentationStyle")) + def total_styles(cls) -> dict[str, int]: + total: dict[str, int] = {} + ifc_file = tool.Ifc.get() + for decl in cls.get_presentation_style_declarations(): + total[decl.name()] = len(ifc_file.by_type(decl.name())) + return total + + @classmethod + def get_presentation_style_declarations(cls): + declaration = tool.Ifc.schema().declaration_by_name("IfcPresentationStyle") + return ifcopenshell.util.schema.get_subtypes(declaration) class BlenderMaterialStyleData: diff --git a/src/bonsai/bonsai/bim/module/style/ui.py b/src/bonsai/bonsai/bim/module/style/ui.py index 0c28efb0ff..6ae3518533 100644 --- a/src/bonsai/bonsai/bim/module/style/ui.py +++ b/src/bonsai/bonsai/bim/module/style/ui.py @@ -46,9 +46,10 @@ class BIM_PT_styles(Panel): if not self.props.is_editing: row = self.layout.row(align=True) - row.label(text="{} Styles".format(StylesData.data["total_styles"]), icon="SHADING_RENDERED") + style_type = self.props.style_type + row.label(text="{} Styles".format(StylesData.data["total_styles"][style_type]), icon="SHADING_RENDERED") bonsai.bim.helper.prop_with_search(row, self.props, "style_type", text="") - row.operator("bim.load_styles", text="", icon="IMPORT").style_type = self.props.style_type + row.operator("bim.load_styles", text="", icon="IMPORT").style_type = style_type return active_style = self.props.styles and self.props.active_style_index < len(self.props.styles)