From 510d756cc48798f0a5ffb1a16c248c64954ff1fb Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 28 Dec 2020 13:14:33 +1100 Subject: [PATCH] Implement delete BCF topic BIM snippet --- src/bcf/bcf/bcfxml.py | 10 ++++++++++ src/ifcblenderexport/blenderbim/bim/__init__.py | 1 + src/ifcblenderexport/blenderbim/bim/operator.py | 16 ++++++++++++++++ src/ifcblenderexport/blenderbim/bim/ui.py | 7 ++++--- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/bcf/bcf/bcfxml.py b/src/bcf/bcf/bcfxml.py index 92a8cc7771..31aca111ef 100644 --- a/src/bcf/bcf/bcfxml.py +++ b/src/bcf/bcf/bcfxml.py @@ -513,6 +513,16 @@ class BcfXml: os.remove(filepath) self.edit_topic(topic) + def delete_bim_snippet(self, topic): + if not topic.bim_snippet: + return + if topic.bim_snippet.reference and not topic.bim_snippet.is_external: + filepath = os.path.join(self.filepath, topic.guid, topic.bim_snippet.reference) + if os.path.exists(filepath): + os.remove(filepath) + topic.bim_snippet = None + self.edit_topic(topic) + def add_file(self, topic, header_file): if os.path.exists(header_file.reference): topic_filepath = os.path.join(self.filepath, topic.guid) diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index cd0e27846f..2bd55bc823 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -40,6 +40,7 @@ if bpy is not None: operator.AddBcfLabel, operator.ViewBcfTopic, operator.RemoveBcfComment, + operator.RemoveBcfBimSnippet, operator.RemoveBcfReferenceLink, operator.EditBcfReferenceLinks, operator.EditBcfLabels, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index d0de452d8c..d8099288e3 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -945,6 +945,22 @@ class RemoveBcfLabel(bpy.types.Operator): return {"FINISHED"} +class RemoveBcfBimSnippet(bpy.types.Operator): + bl_idname = "bim.remove_bcf_bim_snippet" + bl_label = "Remove BCF BIM Snippet" + + 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] + bcfxml.delete_bim_snippet(topic) + blender_topic.bim_snippet.schema = "" + blender_topic.bim_snippet.reference = "" + blender_topic.bim_snippet.type = "" + 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 f3d9e77932..76b81ba4dd 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1807,20 +1807,21 @@ class BIM_PT_bcf_metadata(Panel): row = layout.row() row.operator("bim.add_bcf_label") + layout.label(text="BIM Snippet:") if topic.bim_snippet.schema: - layout.label(text="BIM Snippet:") row = layout.row(align=True) - row.prop(topic.bim_snippet, "type") + row.prop(topic.bim_snippet, "type", emboss=False) if topic.bim_snippet.schema: row.operator("bim.open_uri", icon="URL", text="").uri = topic.bim_snippet.schema row = layout.row(align=True) - row.prop(topic.bim_snippet, "reference") + row.prop(topic.bim_snippet, "reference", emboss=False) if topic.bim_snippet.is_external: row.operator("bim.open_uri", icon="URL", text="").uri = topic.bim_snippet.reference else: op = row.operator("bim.open_uri", icon="FILE_FOLDER", text="") op.uri = os.path.join(bcfxml.filepath, topic.name, topic.bim_snippet.reference) + row.operator("bim.remove_bcf_bim_snippet", icon="X", text="") if topic.document_references: layout.label(text="Document References:")