mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-09 13:52:23 +00:00
Implement BCF add comment
This commit is contained in:
@@ -304,14 +304,15 @@ class BcfXml:
|
|||||||
if comment.viewpoint:
|
if comment.viewpoint:
|
||||||
self._create_element(comment_el, "Viewpoint", {"Guid": comment.viewpoint.guid})
|
self._create_element(comment_el, "Viewpoint", {"Guid": comment.viewpoint.guid})
|
||||||
|
|
||||||
def add_comment(self, comment=None):
|
def add_comment(self, topic, comment=None):
|
||||||
if comment is None:
|
if comment is None:
|
||||||
comment = bcf.data.Comment()
|
comment = bcf.data.Comment()
|
||||||
if not comment.guid:
|
if not comment.guid:
|
||||||
comment.guid = str(uuid.uuid4())
|
comment.guid = str(uuid.uuid4())
|
||||||
if not comment.comment:
|
if not comment.comment:
|
||||||
comment.comment = "'Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech,' not as in 'free beer'."
|
comment.comment = "'Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech,' not as in 'free beer'."
|
||||||
self.edit_comment(comment)
|
topic.comments[comment.guid] = comment
|
||||||
|
self.edit_comment(comment, topic)
|
||||||
|
|
||||||
def edit_comment(self, comment, topic):
|
def edit_comment(self, comment, topic):
|
||||||
if not comment.date:
|
if not comment.date:
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ if bpy is not None:
|
|||||||
operator.ViewBcfTopic,
|
operator.ViewBcfTopic,
|
||||||
operator.RemoveBcfViewpoint,
|
operator.RemoveBcfViewpoint,
|
||||||
operator.RemoveBcfComment,
|
operator.RemoveBcfComment,
|
||||||
|
operator.AddBcfComment,
|
||||||
operator.ActivateBcfViewpoint,
|
operator.ActivateBcfViewpoint,
|
||||||
operator.OpenUri,
|
operator.OpenUri,
|
||||||
operator.OpenBcfReferenceLink,
|
operator.OpenBcfReferenceLink,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
import bpy
|
import bpy
|
||||||
|
import bcf
|
||||||
import uuid
|
import uuid
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
@@ -766,7 +767,28 @@ class RemoveBcfComment(bpy.types.Operator):
|
|||||||
blender_topic = props.topics[props.active_topic_index]
|
blender_topic = props.topics[props.active_topic_index]
|
||||||
topic = bcfxml.topics[blender_topic.name]
|
topic = bcfxml.topics[blender_topic.name]
|
||||||
bcfxml.delete_comment(self.comment_guid, topic)
|
bcfxml.delete_comment(self.comment_guid, topic)
|
||||||
props.active_topic_index = props.active_topic_index # Refreshes the BCF Topic
|
bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid)
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class AddBcfComment(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.add_bcf_comment"
|
||||||
|
bl_label = "Add BCF Comment"
|
||||||
|
comment_guid: bpy.props.StringProperty()
|
||||||
|
|
||||||
|
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.comment:
|
||||||
|
return {"FINISHED"}
|
||||||
|
comment = bcf.data.Comment()
|
||||||
|
comment.comment = blender_topic.comment
|
||||||
|
if blender_topic.has_related_viewpoint and blender_topic.viewpoints:
|
||||||
|
comment.viewpoint = bcf.data.Viewpoint()
|
||||||
|
comment.viewpoint.guid = blender_topic.viewpoints
|
||||||
|
bcfxml.add_comment(topic, comment)
|
||||||
bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid)
|
bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid)
|
||||||
print(bcfxml.filepath)
|
print(bcfxml.filepath)
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|||||||
@@ -1006,6 +1006,8 @@ class BcfTopic(PropertyGroup):
|
|||||||
related_topics: CollectionProperty(name="Related Topics", type=StrProperty)
|
related_topics: CollectionProperty(name="Related Topics", type=StrProperty)
|
||||||
comments: CollectionProperty(name="Comments", type=BcfComment)
|
comments: CollectionProperty(name="Comments", type=BcfComment)
|
||||||
is_editable: BoolProperty(name="Is Editable", default=False, update=updateBcfTopicIsEditable)
|
is_editable: BoolProperty(name="Is Editable", default=False, update=updateBcfTopicIsEditable)
|
||||||
|
comment: StringProperty(default="", name="Comment")
|
||||||
|
has_related_viewpoint: BoolProperty(name="Has Related Viewpoint", default=False)
|
||||||
|
|
||||||
|
|
||||||
class PropertySetTemplate(PropertyGroup):
|
class PropertySetTemplate(PropertyGroup):
|
||||||
|
|||||||
@@ -1857,6 +1857,13 @@ class BIM_PT_bcf_comments(Panel):
|
|||||||
total_line_chars += len(word) + 1 # 1 is for the space
|
total_line_chars += len(word) + 1 # 1 is for the space
|
||||||
col.label(text=" ".join(line_words))
|
col.label(text=" ".join(line_words))
|
||||||
|
|
||||||
|
row = layout.row()
|
||||||
|
row.prop(topic, "comment")
|
||||||
|
row = layout.row()
|
||||||
|
row.prop(topic, "has_related_viewpoint")
|
||||||
|
row = layout.row()
|
||||||
|
row.operator("bim.add_bcf_comment")
|
||||||
|
|
||||||
|
|
||||||
class BIM_PT_qa(Panel):
|
class BIM_PT_qa(Panel):
|
||||||
bl_label = "BIMTester Quality Auditing"
|
bl_label = "BIMTester Quality Auditing"
|
||||||
|
|||||||
Reference in New Issue
Block a user