From b9583c562d4067c0d30206f72f31795552b25c21 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 27 Dec 2020 16:53:40 +1100 Subject: [PATCH] Implement support for deleting reference links --- .../blenderbim/bim/__init__.py | 1 + .../blenderbim/bim/operator.py | 23 +++++++++++++++++-- src/ifcblenderexport/blenderbim/bim/ui.py | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index e388735cf7..16b5b0dba3 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -38,6 +38,7 @@ if bpy is not None: operator.AddBcfHeaderFile, operator.ViewBcfTopic, operator.RemoveBcfComment, + operator.RemoveBcfReferenceLink, operator.EditBcfComment, operator.AddBcfComment, operator.ActivateBcfViewpoint, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index d2af9239aa..7fa8272628 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -743,8 +743,10 @@ class AddBcfHeaderFile(bpy.types.Operator): header_file.reference = blender_topic.file_reference if not os.path.exists(header_file.reference): header_file.filename = header_file.reference - header_file.ifc_project = blender_topic.file_ifc_project - header_file.ifc_spatial_structure_element = blender_topic.file_ifc_spatial_structure_element + if len(blender_topic.file_ifc_project) == 22: + header_file.ifc_project = blender_topic.file_ifc_project + if len(blender_topic.file_ifc_spatial_structure_element) == 22: + header_file.ifc_spatial_structure_element = blender_topic.file_ifc_spatial_structure_element bcfxml.add_file(topic, header_file) props.active_topic_index = props.active_topic_index # refreshes the BCF Topic return {"FINISHED"} @@ -839,6 +841,23 @@ class RemoveBcfFile(bpy.types.Operator): return {"FINISHED"} +class RemoveBcfReferenceLink(bpy.types.Operator): + bl_idname = "bim.remove_bcf_reference_link" + bl_label = "Remove BCF Reference Link" + index: bpy.props.IntProperty() + + def execute(self, context): + bcfxml = bcfstore.BcfStore.get_bcfxml() + props = bpy.context.scene.BCFProperties + blender_topic = props.topics[props.active_topic_index] + topic = bcfxml.topics[blender_topic.name] + del topic.reference_links[self.index] + bcfxml.edit_topic(topic) + blender_topic.reference_links.remove(self.index) + props.active_topic_index = props.active_topic_index # Refreshes the BCF Topic + return {"FINISHED"} + + class RemoveBcfComment(bpy.types.Operator): bl_idname = "bim.remove_bcf_comment" bl_label = "Remove BCF Comment" diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 64a1b7fe26..1beaf049ac 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1791,6 +1791,7 @@ class BIM_PT_bcf_metadata(Panel): row = layout.row(align=True) row.prop(link, "name") row.operator("bim.open_uri", icon="URL", text="").uri = link.name + row.operator("bim.remove_bcf_reference_link", icon="X", text="").index = index if topic.labels: layout.label(text="Labels:")