From c472dc2f1bec32361083a6a0e52d9998603fd32f Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 27 Jan 2021 15:41:24 +1100 Subject: [PATCH] You can now unlink blender objects to IFC ones. See #1222. --- .../blenderbim/bim/module/root/__init__.py | 1 + .../blenderbim/bim/module/root/operator.py | 17 +++++++++++++++++ .../blenderbim/bim/module/root/ui.py | 1 + 3 files changed, 19 insertions(+) diff --git a/src/ifcblenderexport/blenderbim/bim/module/root/__init__.py b/src/ifcblenderexport/blenderbim/bim/module/root/__init__.py index a4938ddf68..ccad13bad2 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/root/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/module/root/__init__.py @@ -7,6 +7,7 @@ classes = ( operator.ReassignClass, operator.AssignClass, operator.UnassignClass, + operator.UnlinkObject, prop.BIMRootProperties, ui.BIM_PT_class, ) diff --git a/src/ifcblenderexport/blenderbim/bim/module/root/operator.py b/src/ifcblenderexport/blenderbim/bim/module/root/operator.py index 4e376eb84d..de6dbc66c9 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/root/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/module/root/operator.py @@ -186,3 +186,20 @@ class UnassignClass(bpy.types.Operator): if "/" in obj.name and obj.name[0:3] == "Ifc": obj.name = "/".join(obj.name.split("/")[1:]) return {"FINISHED"} + + +class UnlinkObject(bpy.types.Operator): + bl_idname = "bim.unlink_object" + bl_label = "Unlink Object" + obj: bpy.props.StringProperty() + + def execute(self, context): + self.file = IfcStore.get_file() + if self.obj: + objects = [bpy.data.objects.get(self.obj)] + else: + objects = bpy.context.selected_objects + for obj in objects: + if obj.BIMObjectProperties.ifc_definition_id: + obj.BIMObjectProperties.ifc_definition_id = 0 + return {"FINISHED"} diff --git a/src/ifcblenderexport/blenderbim/bim/module/root/ui.py b/src/ifcblenderexport/blenderbim/bim/module/root/ui.py index 2ba234081b..968aacc96b 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/root/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/module/root/ui.py @@ -34,6 +34,7 @@ class BIM_PT_class(Panel): name += "[{}]".format(data["PredefinedType"]) row = self.layout.row(align=True) row.label(text=name) + row.operator("bim.unlink_object", icon="UNLINKED", text="").obj = context.active_object.name row.operator("bim.enable_reassign_class", icon="GREASEPENCIL", text="") row.operator("bim.unassign_class", icon="X", text="").obj = context.active_object.name else: