Support BCF topic document references

This commit is contained in:
Dion Moult
2020-03-25 17:12:02 +11:00
parent dd98ac3a89
commit 1971bfe014
4 changed files with 52 additions and 0 deletions
@@ -39,6 +39,7 @@ if bpy is not None:
operator.OpenBcfReferenceLink,
operator.OpenBcfBimSnippetSchema,
operator.OpenBcfBimSnippetReference,
operator.OpenBcfDocumentReference,
operator.SelectFeaturesDir,
operator.SelectDiffJsonFile,
operator.SelectDiffNewFile,
@@ -111,6 +112,7 @@ if bpy is not None:
prop.BcfTopic,
prop.BcfTopicLabel,
prop.BcfTopicLink,
prop.BcfTopicDocumentReference,
prop.Subcontext,
prop.BIMProperties,
prop.BCFProperties,
@@ -484,6 +484,25 @@ class OpenBcfBimSnippetReference(bpy.types.Operator):
return {'FINISHED'}
class OpenBcfDocumentReference(bpy.types.Operator):
bl_idname = 'bim.open_bcf_document_reference'
bl_label = 'Open BCF Document Reference'
data: bpy.props.StringProperty()
def execute(self, context):
import bcfplugin
topic_guid, index = self.data.split('/')
doc = bpy.context.scene.BCFProperties.topic_document_references[int(index)]
uri = doc.name
if doc.is_external:
webbrowser.open(uri)
return {'FINISHED'}
webbrowser.open('file:///' + os.path.join(
bcfplugin.util.getBcfDir(),
topic_guid, uri))
return {'FINISHED'}
class SelectAudited(bpy.types.Operator):
bl_idname = 'bim.select_audited'
bl_label = 'Select Audited'
+18
View File
@@ -372,6 +372,13 @@ class BcfTopicLink(PropertyGroup):
name: StringProperty(name='Name')
class BcfTopicDocumentReference(PropertyGroup):
name: StringProperty(name='Reference')
description: StringProperty(name='Description')
guid: StringProperty(name='GUID')
is_external: BoolProperty(name='Is External')
def refreshBcfTopic(self, context):
global bcfviewpoints_enum
import bcfplugin
@@ -427,6 +434,16 @@ def refreshBcfTopic(self, context):
else:
props.topic_snippet_is_external = False
# Load document references
while len(props.topic_document_references) > 0:
props.topic_document_references.remove(0)
for doc in topic.docRefs:
new = props.topic_document_references.add()
new.name = doc.reference.uri
new.description = doc.description
new.guid = str(doc.guid)
new.is_external = doc.external
# Load viewpoints
bcfviewpoints_enum.clear()
viewpoints = bcfplugin.getViewpoints(topic)
@@ -540,6 +557,7 @@ class BCFProperties(PropertyGroup):
topic_snippet_schema: StringProperty(name='BIM Snippet Schema')
topic_snippet_type: StringProperty(name='BIM Snippet Type')
topic_snippet_is_external: BoolProperty(name='Is BIM Snippet External')
topic_document_references: CollectionProperty(name='BCF Topic Document References', type=BcfTopicDocumentReference)
class MapConversion(PropertyGroup):
+13
View File
@@ -600,6 +600,19 @@ class BIM_PT_bcf(Panel):
else:
row.operator('bim.open_bcf_bim_snippet_reference', icon='FILE_FOLDER', text='').topic_guid = props.topic_guid
layout.label(text="Document References:")
for index, doc in enumerate(props.topic_document_references):
row = layout.row(align=True)
row.prop(doc, 'description', text=f'File {index+1} Description:')
row = layout.row(align=True)
row.prop(doc, 'name', text=f'File {index+1} URI')
if doc.is_external:
row.operator('bim.open_bcf_document_reference', icon='URL', text='').data = '{}/{}'.format(
props.topic_guid, index)
else:
row.operator('bim.open_bcf_document_reference', icon='FILE_FOLDER', text='').data = '{}/{}'.format(
props.topic_guid, index)
class BIM_PT_qa(Panel):
bl_label = "BIMTester Quality Auditing"