From 37e56c4011a90eb68d217895c5bf726b11cdd6d6 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 28 Dec 2020 19:56:57 +1100 Subject: [PATCH] Implement remove BCF related topic --- src/bcf/bcf/bcfxml.py | 1 + src/ifcblenderexport/blenderbim/bim/__init__.py | 1 + src/ifcblenderexport/blenderbim/bim/operator.py | 16 ++++++++++++++++ src/ifcblenderexport/blenderbim/bim/ui.py | 10 +++++----- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/bcf/bcf/bcfxml.py b/src/bcf/bcf/bcfxml.py index 08636b01c1..deca2ccdeb 100644 --- a/src/bcf/bcf/bcfxml.py +++ b/src/bcf/bcf/bcfxml.py @@ -537,6 +537,7 @@ class BcfXml: topic_filepath = os.path.join(self.filepath, topic.guid) filename = os.path.basename(document_reference.referenced_document) copyfile(document_reference.referenced_document, os.path.join(topic_filepath, filename)) + document_reference.referenced_document = filename document_reference.is_external = False else: document_reference.is_external = True diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index a162b53161..b31b896f26 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -46,6 +46,7 @@ if bpy is not None: operator.RemoveBcfBimSnippet, operator.RemoveBcfReferenceLink, operator.RemoveBcfDocumentReference, + operator.RemoveBcfRelatedTopic, operator.EditBcfReferenceLinks, operator.EditBcfLabels, operator.RemoveBcfLabel, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index f124f29d1d..4e629d6f6e 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -1038,6 +1038,22 @@ class RemoveBcfDocumentReference(bpy.types.Operator): return {"FINISHED"} +class RemoveBcfRelatedTopic(bpy.types.Operator): + bl_idname = "bim.remove_bcf_related_topic" + bl_label = "Remove BCF Related Topic" + 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.related_topics[self.index] + bcfxml.edit_topic(topic) + bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + 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 a494382011..1207ad2969 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1859,11 +1859,11 @@ class BIM_PT_bcf_metadata(Panel): row = layout.row() row.operator("bim.add_bcf_document_reference") - if topic.related_topics: - layout.label(text="Related Topics:") - for related_topic in topic.related_topics: - row = layout.row(align=True) - row.operator("bim.view_bcf_topic", text=related_topic.name).topic_guid = related_topic.name + layout.label(text="Related Topics:") + for index, related_topic in enumerate(topic.related_topics): + row = layout.row(align=True) + row.operator("bim.view_bcf_topic", text=bcfxml.topics[related_topic.name.lower()].title).topic_guid = related_topic.name + row.operator("bim.remove_bcf_related_topic", icon="X", text="").index = index class BIM_PT_bcf_comments(Panel):