diff --git a/src/blenderbim/blenderbim/bim/module/group/__init__.py b/src/blenderbim/blenderbim/bim/module/group/__init__.py index 8dda1b596b..3f51d01082 100644 --- a/src/blenderbim/blenderbim/bim/module/group/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/group/__init__.py @@ -33,6 +33,7 @@ classes = ( operator.ToggleGroup, operator.UnassignGroup, operator.UpdateGroup, + operator.SelectGroupElements, prop.ExpandedGroups, prop.Group, prop.BIMGroupProperties, diff --git a/src/blenderbim/blenderbim/bim/module/group/operator.py b/src/blenderbim/blenderbim/bim/module/group/operator.py index 2e04c960fa..27aa6ec8e7 100644 --- a/src/blenderbim/blenderbim/bim/module/group/operator.py +++ b/src/blenderbim/blenderbim/bim/module/group/operator.py @@ -275,3 +275,19 @@ class UpdateGroup(bpy.types.Operator, tool.Ifc.Operator): ) bpy.ops.bim.load_groups() return {"FINISHED"} + + +class SelectGroupElements(bpy.types.Operator): + bl_idname = "bim.select_group_elements" + bl_label = "Select Group elements" + bl_options = {"REGISTER", "UNDO"} + group: bpy.props.IntProperty() + + @classmethod + def poll(cls, context): + return bool(tool.Ifc.get() and context.active_object) + + def execute(self, context): + elements = tool.Drawing.get_group_elements(tool.Ifc.get().by_id(self.group)) + tool.Spatial.select_products(elements) + return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/group/ui.py b/src/blenderbim/blenderbim/bim/module/group/ui.py index 16cf339f6e..874d239bf2 100644 --- a/src/blenderbim/blenderbim/bim/module/group/ui.py +++ b/src/blenderbim/blenderbim/bim/module/group/ui.py @@ -107,6 +107,7 @@ class BIM_PT_object_groups(Panel): for group in ObjectGroupsData.data["groups"]: row = self.layout.row(align=True) row.label(text=group["name"]) + row.operator("bim.select_group_elements", text="", icon="RESTRICT_SELECT_OFF").group = group["id"] op = row.operator("bim.unassign_group", text="", icon="X") op.group = group["id"]