diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index b31b896f26..898da0642b 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -41,6 +41,7 @@ if bpy is not None: operator.AddBcfReferenceLink, operator.AddBcfDocumentReference, operator.AddBcfLabel, + operator.AddBcfRelatedTopic, operator.ViewBcfTopic, operator.RemoveBcfComment, operator.RemoveBcfBimSnippet, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 4e629d6f6e..cd8e097b0d 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -772,6 +772,29 @@ class AddBcfBimSnippet(bpy.types.Operator): return {"FINISHED"} +class AddBcfRelatedTopic(bpy.types.Operator): + bl_idname = "bim.add_bcf_related_topic" + bl_label = "Add BCF Related Topic" + + def execute(self, context): + bcfxml = bcfstore.BcfStore.get_bcfxml() + props = bpy.context.scene.BCFProperties + blender_topic = props.topics[props.active_topic_index] + related_topic = None + for topic in bcfxml.topics.values(): + if topic.title == blender_topic.related_topic: + related_topic = bcf.data.RelatedTopic() + related_topic.guid = topic.guid + break + if not related_topic: + return {"FINISHED"} + topic = bcfxml.topics[blender_topic.name] + topic.related_topics.append(related_topic) + bcfxml.edit_topic(topic) + bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + return {"FINISHED"} + + class AddBcfHeaderFile(bpy.types.Operator): bl_idname = "bim.add_bcf_header_file" bl_label = "Add BCF Header File" diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py index 038dce637f..64d2b61907 100644 --- a/src/ifcblenderexport/blenderbim/bim/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/prop.py @@ -1044,6 +1044,7 @@ class BcfTopic(PropertyGroup): document_reference: StringProperty(default="", name="Referenced Document") document_reference_description: StringProperty(default="", name="Description") related_topics: CollectionProperty(name="Related Topics", type=StrProperty) + related_topic: StringProperty(default="", name="Related Topic") comments: CollectionProperty(name="Comments", type=BcfComment) is_editable: BoolProperty(name="Is Editable", default=False, update=updateBcfTopicIsEditable) comment: StringProperty(default="", name="Comment") diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 1207ad2969..d00b48ba97 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1864,6 +1864,10 @@ class BIM_PT_bcf_metadata(Panel): 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 + row = layout.row() + row.prop(topic, "related_topic") + row = layout.row() + row.operator("bim.add_bcf_related_topic") class BIM_PT_bcf_comments(Panel):