From 95ac0216236979c3b194f91917f29573b1882448 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 23 Mar 2023 15:37:52 +1100 Subject: [PATCH] Improve UI to indicate active representation. --- src/blenderbim/blenderbim/bim/module/aggregate/ui.py | 1 - src/blenderbim/blenderbim/bim/module/attribute/ui.py | 1 - src/blenderbim/blenderbim/bim/module/boundary/ui.py | 1 - src/blenderbim/blenderbim/bim/module/classification/ui.py | 1 - src/blenderbim/blenderbim/bim/module/geometry/data.py | 6 ++++++ src/blenderbim/blenderbim/bim/module/geometry/ui.py | 2 +- src/blenderbim/blenderbim/bim/module/pset/ui.py | 6 ------ src/blenderbim/blenderbim/bim/module/root/operator.py | 2 +- src/blenderbim/blenderbim/bim/module/root/ui.py | 1 - src/blenderbim/blenderbim/bim/module/spatial/ui.py | 1 - src/blenderbim/blenderbim/bim/module/type/ui.py | 1 - 11 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/aggregate/ui.py b/src/blenderbim/blenderbim/bim/module/aggregate/ui.py index ef32068699..d593599604 100644 --- a/src/blenderbim/blenderbim/bim/module/aggregate/ui.py +++ b/src/blenderbim/blenderbim/bim/module/aggregate/ui.py @@ -28,7 +28,6 @@ class BIM_PT_aggregate(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod diff --git a/src/blenderbim/blenderbim/bim/module/attribute/ui.py b/src/blenderbim/blenderbim/bim/module/attribute/ui.py index e9ae775c73..47ff4cac76 100644 --- a/src/blenderbim/blenderbim/bim/module/attribute/ui.py +++ b/src/blenderbim/blenderbim/bim/module/attribute/ui.py @@ -59,7 +59,6 @@ class BIM_PT_object_attributes(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod diff --git a/src/blenderbim/blenderbim/bim/module/boundary/ui.py b/src/blenderbim/blenderbim/bim/module/boundary/ui.py index 329a03a524..6abad5b6e6 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/ui.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/ui.py @@ -50,7 +50,6 @@ class BIM_PT_Boundary(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_geometry_object" @classmethod diff --git a/src/blenderbim/blenderbim/bim/module/classification/ui.py b/src/blenderbim/blenderbim/bim/module/classification/ui.py index 13e0b44269..8bf5f660c7 100644 --- a/src/blenderbim/blenderbim/bim/module/classification/ui.py +++ b/src/blenderbim/blenderbim/bim/module/classification/ui.py @@ -162,7 +162,6 @@ class BIM_PT_classification_references(Panel, ReferenceUI): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod diff --git a/src/blenderbim/blenderbim/bim/module/geometry/data.py b/src/blenderbim/blenderbim/bim/module/geometry/data.py index b17c0870ed..e2ff319928 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/data.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/data.py @@ -42,6 +42,11 @@ class RepresentationsData: def representations(cls): results = [] element = tool.Ifc.get_entity(bpy.context.active_object) + + active_representation_id = None + if bpy.context.active_object.data and hasattr(bpy.context.active_object.data, "BIMMeshProperties"): + active_representation_id = bpy.context.active_object.data.BIMMeshProperties.ifc_definition_id + representations = [] if element.is_a("IfcProduct") and element.Representation: representations = element.Representation.Representations @@ -58,6 +63,7 @@ class RepresentationsData: "ContextIdentifier": "", "TargetView": "", "RepresentationType": representation_type or "", + "is_active": representation.id() == active_representation_id, } if representation.ContextOfItems.is_a("IfcGeometricRepresentationSubContext"): data["ContextIdentifier"] = representation.ContextOfItems.ContextIdentifier or "" diff --git a/src/blenderbim/blenderbim/bim/module/geometry/ui.py b/src/blenderbim/blenderbim/bim/module/geometry/ui.py index 5ebd3f1a96..f3227829e7 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/ui.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/ui.py @@ -67,7 +67,7 @@ class BIM_PT_representations(Panel): row.label(text=representation["ContextIdentifier"]) row.label(text=representation["TargetView"]) row.label(text=representation["RepresentationType"]) - op = row.operator("bim.switch_representation", icon="OUTLINER_DATA_MESH", text="") + op = row.operator("bim.switch_representation", icon="FILE_REFRESH" if representation["is_active"] else "OUTLINER_DATA_MESH", text="") op.should_switch_all_meshes = True op.should_reload = True op.ifc_definition_id = representation["id"] diff --git a/src/blenderbim/blenderbim/bim/module/pset/ui.py b/src/blenderbim/blenderbim/bim/module/pset/ui.py index 09a70c6e95..51bfd27bbd 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/ui.py +++ b/src/blenderbim/blenderbim/bim/module/pset/ui.py @@ -171,7 +171,6 @@ class BIM_PT_object_psets(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod @@ -214,7 +213,6 @@ class BIM_PT_object_qtos(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod @@ -292,7 +290,6 @@ class BIM_PT_material_set_psets(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_material" @classmethod @@ -330,7 +327,6 @@ class BIM_PT_material_set_item_psets(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_material" @classmethod @@ -538,7 +534,6 @@ class BIM_PT_bulk_property_editor(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_options = {"DEFAULT_CLOSED"} bl_parent_id = "BIM_PT_utilities_object" @@ -551,7 +546,6 @@ class BIM_PT_rename_parameters(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_bulk_property_editor" bl_options = {"DEFAULT_CLOSED"} diff --git a/src/blenderbim/blenderbim/bim/module/root/operator.py b/src/blenderbim/blenderbim/bim/module/root/operator.py index 5e2de1d810..213396c4fb 100644 --- a/src/blenderbim/blenderbim/bim/module/root/operator.py +++ b/src/blenderbim/blenderbim/bim/module/root/operator.py @@ -127,7 +127,7 @@ class AssignClass(bpy.types.Operator, Operator): def _execute(self, context): props = context.scene.BIMRootProperties - objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects + objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects or [context.active_object] ifc_class = self.ifc_class or props.ifc_class predefined_type = self.userdefined_type if self.predefined_type == "USERDEFINED" else self.predefined_type ifc_context = self.context_id diff --git a/src/blenderbim/blenderbim/bim/module/root/ui.py b/src/blenderbim/blenderbim/bim/module/root/ui.py index 31a7b1e24e..df06f4bae0 100644 --- a/src/blenderbim/blenderbim/bim/module/root/ui.py +++ b/src/blenderbim/blenderbim/bim/module/root/ui.py @@ -30,7 +30,6 @@ class BIM_PT_class(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod diff --git a/src/blenderbim/blenderbim/bim/module/spatial/ui.py b/src/blenderbim/blenderbim/bim/module/spatial/ui.py index 43f1f4257e..3acac0906e 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/ui.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/ui.py @@ -27,7 +27,6 @@ class BIM_PT_spatial(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod diff --git a/src/blenderbim/blenderbim/bim/module/type/ui.py b/src/blenderbim/blenderbim/bim/module/type/ui.py index dbbd757f7a..b4cd2c4160 100644 --- a/src/blenderbim/blenderbim/bim/module/type/ui.py +++ b/src/blenderbim/blenderbim/bim/module/type/ui.py @@ -29,7 +29,6 @@ class BIM_PT_type(Panel): bl_space_type = "PROPERTIES" bl_region_type = "WINDOW" bl_context = "object" - bl_order = 1 bl_parent_id = "BIM_PT_object_metadata" @classmethod