From 125c0ced6e02f81764999607e0943175d26c1b11 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 3 Jul 2020 21:08:40 +1000 Subject: [PATCH] New feature to remove a representation subcontext. See #870. --- .../blenderbim/bim/__init__.py | 1 + .../blenderbim/bim/operator.py | 28 +++++++++++++++++++ src/ifcblenderexport/blenderbim/bim/ui.py | 1 + 3 files changed, 30 insertions(+) diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index 50f3fa8f03..6cc07c067b 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -112,6 +112,7 @@ if bpy is not None: operator.SelectIfcClashResults, operator.AssignContext, operator.SwitchContext, + operator.RemoveContext, operator.SetViewPreset1, operator.SetViewPreset2, operator.OpenUpstream, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index d9ea5532be..7037f0dcdc 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -2084,6 +2084,34 @@ class SwitchContext(bpy.types.Operator): return mesh +class RemoveContext(bpy.types.Operator): + bl_idname = 'bim.remove_context' + bl_label = 'Remove Context' + index: bpy.props.IntProperty() + + def execute(self, context): + obj = bpy.context.active_object + data = obj.BIMObjectProperties.representation_contexts[self.index] + + if '/' not in obj.data.name: + obj.data.name = 'Model/Body/MODEL_VIEW/' + obj.data.name + + mesh = bpy.data.meshes.get('{}/{}/{}/{}'.format( + data.context, data.name, data.target_view, obj.data.name.split('/')[3])) + + if mesh: + if obj.data == mesh: + void_name = 'Void/Void/Void/' + obj.data.name.split('/')[3] + void_mesh = bpy.data.meshes.get(void_name) + if not void_mesh: + void_mesh = bpy.data.meshes.new(void_name) + obj.data = void_mesh + bpy.data.meshes.remove(mesh) + + obj.BIMObjectProperties.representation_contexts.remove(self.index) + return {'FINISHED'} + + class SetViewPreset1(bpy.types.Operator): bl_idname = 'bim.set_view_preset_1' bl_label = 'Set View Preset 1' diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index e47abfc68f..5e0361860e 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -275,6 +275,7 @@ class BIM_PT_representations(Panel): op.context_name = subcontext.context op.subcontext_name = subcontext.name op.target_view_name = subcontext.target_view + row.operator('bim.remove_context', icon='X', text='').index = index class BIM_PT_classification_references(Panel):