diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index e778acf274..edf31feb74 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -37,6 +37,7 @@ if bpy is not None: operator.AddBcfTopic, operator.AddBcfHeaderFile, operator.AddBcfReferenceLink, + operator.AddBcfLabel, operator.ViewBcfTopic, operator.RemoveBcfComment, operator.RemoveBcfReferenceLink, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 7cb91ca828..2f26b8df11 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -860,6 +860,25 @@ class AddBcfReferenceLink(bpy.types.Operator): return {"FINISHED"} +class AddBcfLabel(bpy.types.Operator): + bl_idname = "bim.add_bcf_label" + bl_label = "Add BCF Label" + + 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] + if not blender_topic.label: + return {"FINISHED"} + new = blender_topic.labels.add() + new.name = blender_topic.label + topic.labels.append(blender_topic.label) + bcfxml.edit_topic(topic) + blender_topic.label = "" + return {"FINISHED"} + + class EditBcfReferenceLinks(bpy.types.Operator): bl_idname = "bim.edit_bcf_reference_links" bl_label = "Edit BCF Reference Link" diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py index eaecd710d9..21bc37f48b 100644 --- a/src/ifcblenderexport/blenderbim/bim/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/prop.py @@ -1027,6 +1027,7 @@ class BcfTopic(PropertyGroup): reference_links: CollectionProperty(name="Reference Links", type=BcfReferenceLink) reference_link: StringProperty(default="", name="Reference Link") labels: CollectionProperty(name="Labels", type=StrProperty) + label: StringProperty(default="", name="Label") bim_snippet: PointerProperty(type=BcfBimSnippet) document_references: CollectionProperty(name="Document References", type=BcfDocumentReference) related_topics: CollectionProperty(name="Related Topics", type=StrProperty) diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index e08745fe6b..f3d9e77932 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1748,30 +1748,32 @@ class BIM_PT_bcf_metadata(Panel): bcf_topic = bcfxml.topics[topic.name] layout.label(text="Header Files:") - for index, f in enumerate(bcf_topic.header.files): - box = self.layout.box() - row = box.row(align=True) - row.label(text=f.filename, icon="FILE_BLANK") - if f.is_external: - row.operator("bim.open_uri", icon="URL", text="").uri = f.reference - else: - op = row.operator("bim.open_uri", icon="FILE_FOLDER", text="") - op.uri = os.path.join(bcfxml.filepath, topic.name, f.reference) - row.operator("bim.remove_bcf_file", icon="X", text="").index = index - row = box.row() - row.label(text="Date") - row.label(text=f.date) + if bcf_topic.header: + for index, f in enumerate(bcf_topic.header.files): + box = self.layout.box() + row = box.row(align=True) + row.label(text=f.filename, icon="FILE_BLANK") + if f.is_external: + row.operator("bim.open_uri", icon="URL", text="").uri = f.reference + else: + op = row.operator("bim.open_uri", icon="FILE_FOLDER", text="") + op.uri = os.path.join(bcfxml.filepath, topic.name, f.reference) + row.operator("bim.remove_bcf_file", icon="X", text="").index = index - if f.ifc_project: row = box.row() - row.label(text="IFC Project") - row.label(text=f.ifc_project) + row.label(text="Date") + row.label(text=f.date) - if f.ifc_spatial_structure_element: - row = box.row() - row.label(text="IFC Spatial Structure Element") - row.label(text=f.ifc_spatial_structure_element) + if f.ifc_project: + row = box.row() + row.label(text="IFC Project") + row.label(text=f.ifc_project) + + if f.ifc_spatial_structure_element: + row = box.row() + row.label(text="IFC Spatial Structure Element") + row.label(text=f.ifc_spatial_structure_element) row = layout.row(align=True) row.prop(topic, "file_reference") @@ -1800,6 +1802,10 @@ class BIM_PT_bcf_metadata(Panel): row = layout.row(align=True) row.prop(label, "name", text="") row.operator("bim.remove_bcf_label", icon="X", text="").index = index + row = layout.row() + row.prop(topic, "label") + row = layout.row() + row.operator("bim.add_bcf_label") if topic.bim_snippet.schema: layout.label(text="BIM Snippet:")