From 792c9b65b10c71b7907af54fbcc5386e94754e62 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 8 Oct 2019 22:09:39 +1100 Subject: [PATCH] Build "select by class / type" feature in the UI panel --- .../io_export_ifc/__init__.py | 2 ++ .../io_export_ifc/operator.py | 29 +++++++++++++++++++ src/ifcblenderexport/io_export_ifc/ui.py | 4 +++ 3 files changed, 35 insertions(+) diff --git a/src/ifcblenderexport/io_export_ifc/__init__.py b/src/ifcblenderexport/io_export_ifc/__init__.py index aa7cd72ff8..bd046a1205 100644 --- a/src/ifcblenderexport/io_export_ifc/__init__.py +++ b/src/ifcblenderexport/io_export_ifc/__init__.py @@ -16,6 +16,8 @@ from . import operator classes = ( operator.AssignClass, + operator.SelectClass, + operator.SelectType, operator.SelectDataDir, operator.SelectSchemaDir, operator.ExportIFC, diff --git a/src/ifcblenderexport/io_export_ifc/operator.py b/src/ifcblenderexport/io_export_ifc/operator.py index 2f476cb469..d7840ca268 100644 --- a/src/ifcblenderexport/io_export_ifc/operator.py +++ b/src/ifcblenderexport/io_export_ifc/operator.py @@ -64,6 +64,35 @@ class AssignClass(bpy.types.Operator): del(object['IfcObjectType']) return {'FINISHED'} +class SelectClass(bpy.types.Operator): + bl_idname = 'bim.select_class' + bl_label = 'Select IFC Class' + + def execute(self, context): + for object in bpy.context.visible_objects: + if '/' in object.name \ + and object.name[0:3] == 'Ifc' \ + and object.name.split('/')[0] == bpy.context.scene.BIMProperties.ifc_class: + object.select_set(True) + return {'FINISHED'} + +class SelectType(bpy.types.Operator): + bl_idname = 'bim.select_type' + bl_label = 'Select IFC Type' + + def execute(self, context): + for object in bpy.context.visible_objects: + if '/' in object.name \ + and object.name[0:3] == 'Ifc' \ + and object.name.split('/')[0] == bpy.context.scene.BIMProperties.ifc_class \ + and 'IfcPredefinedType' in object.keys() \ + and object['IfcPredefinedType'] == bpy.context.scene.BIMProperties.ifc_predefined_type: + if bpy.context.scene.BIMProperties.ifc_predefined_type != 'USERDEFINED': + object.select_set(True) + elif object['IfcObjectType'] == bpy.context.scene.BIMProperties.ifc_userdefined_type: + object.select_set(True) + return {'FINISHED'} + class SelectDataDir(bpy.types.Operator): bl_idname = "bim.select_data_dir" bl_label = "Select Data Directory" diff --git a/src/ifcblenderexport/io_export_ifc/ui.py b/src/ifcblenderexport/io_export_ifc/ui.py index 7f7983c3dc..7cefa68037 100644 --- a/src/ifcblenderexport/io_export_ifc/ui.py +++ b/src/ifcblenderexport/io_export_ifc/ui.py @@ -70,6 +70,10 @@ class BIMPanel(bpy.types.Panel): row = layout.row() row.operator("bim.assign_class") + row = layout.row(align=True) + row.operator("bim.select_class") + row.operator("bim.select_type") + class MVDPanel(bpy.types.Panel): bl_label = "Model View Definitions" bl_idname = "mvd.panel"