From 648aaaa778c43d351b0ae3704f21ec12714dbaa6 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 22 Mar 2020 20:39:22 +1100 Subject: [PATCH] Show list of BCF viewpoints in UI for each topic --- src/ifcblenderexport/blenderbim/prop.py | 27 ++++++++++++++++++++++--- src/ifcblenderexport/blenderbim/ui.py | 3 +++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/prop.py b/src/ifcblenderexport/blenderbim/prop.py index 7cb7c8a128..de29848d53 100644 --- a/src/ifcblenderexport/blenderbim/prop.py +++ b/src/ifcblenderexport/blenderbim/prop.py @@ -41,6 +41,7 @@ target_views_enum = [] persons_enum = [] organisations_enum = [] views_enum = [] +bcfviewpoints_enum = [] @persistent def setDefaultProperties(scene): @@ -360,8 +361,27 @@ class BIMCameraProperties(PropertyGroup): class BcfTopic(PropertyGroup): name: StringProperty(name='Name') - # TODO: Make this not wrong - target_view: StringProperty(name='Target View') + + +def refreshBcfViewpoints(self, context): + global bcfviewpoints_enum + import bcfplugin + + bcfviewpoints_enum.clear() + topics = bcfplugin.getTopics() + if not topics: + return bcfviewpoints_enum + topic = topics[bpy.context.scene.BIMProperties.active_bcf_topic_index][1] + viewpoints = bcfplugin.getViewpoints(topic) + if not viewpoints: + return bcfviewpoints_enum + for i, viewpoint in enumerate(viewpoints): + bcfviewpoints_enum.append((str(i), 'View {}'.format(i+1), '')) + + +def getBcfViewpoints(self, context): + global bcfviewpoints_enum + return bcfviewpoints_enum class BIMProperties(PropertyGroup): @@ -426,7 +446,8 @@ class BIMProperties(PropertyGroup): available_target_views: EnumProperty(items=getTargetViews, name="Available Target Views") bcf_file: StringProperty(default='', name='BCF File') bcf_topics: CollectionProperty(name='BCF Topics', type=BcfTopic) - active_bcf_topic_index: IntProperty(name='Active BCF Topic Index') + active_bcf_topic_index: IntProperty(name='Active BCF Topic Index', update=refreshBcfViewpoints) + bcf_viewpoints: EnumProperty(items=getBcfViewpoints, name='BCF Viewpoints') class MapConversion(PropertyGroup): diff --git a/src/ifcblenderexport/blenderbim/ui.py b/src/ifcblenderexport/blenderbim/ui.py index fcc267646b..7725bb2c65 100644 --- a/src/ifcblenderexport/blenderbim/ui.py +++ b/src/ifcblenderexport/blenderbim/ui.py @@ -547,6 +547,9 @@ class BIM_PT_bcf(Panel): props = bpy.context.scene.BIMProperties layout.template_list('BIM_UL_topics', '', props, 'bcf_topics', props, 'active_bcf_topic_index') + row = layout.row() + row.prop(props, 'bcf_viewpoints') + class BIM_PT_qa(Panel): bl_label = "BIMTester Quality Auditing"