From fe633d9698d454a1267fe4f4b3f150e7c28725c2 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 30 Mar 2020 18:27:28 +1100 Subject: [PATCH] Add support for ordered BCF viewpoint snapshot images --- src/ifcblenderexport/blenderbim/bcf.py | 2 +- src/ifcblenderexport/blenderbim/operator.py | 15 +++++++++++++-- src/ifcblenderexport/blenderbim/prop.py | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/bcf.py b/src/ifcblenderexport/blenderbim/bcf.py index 5f56f386f6..e82f9dc4e3 100644 --- a/src/ifcblenderexport/blenderbim/bcf.py +++ b/src/ifcblenderexport/blenderbim/bcf.py @@ -1,4 +1,4 @@ class BcfStore(): topics = [] + viewpoints = [] comments = [] - diff --git a/src/ifcblenderexport/blenderbim/operator.py b/src/ifcblenderexport/blenderbim/operator.py index 4ebb1e0d9e..270f1e361e 100644 --- a/src/ifcblenderexport/blenderbim/operator.py +++ b/src/ifcblenderexport/blenderbim/operator.py @@ -428,16 +428,27 @@ class ActivateBcfViewpoint(bpy.types.Operator): if not topics: return {'FINISHED'} topic = topics[bpy.context.scene.BCFProperties.active_topic_index][1] - viewpoints = bcfplugin.getViewpoints(topic) + viewpoints = bcf.BcfStore.viewpoints if not viewpoints: return {'FINISHED'} - viewpoint = viewpoints[int(bpy.context.scene.BCFProperties.viewpoints)][1] + viewpoint_reference = viewpoints[int(bpy.context.scene.BCFProperties.viewpoints)][1] + viewpoint = viewpoint_reference.viewpoint obj = bpy.data.objects.get('Viewpoint') if not obj: obj = bpy.data.objects.new('Viewpoint', bpy.data.cameras.new('Viewpoint')) bpy.context.scene.collection.objects.link(obj) bpy.context.scene.camera = obj + if viewpoint_reference.snapshot: + obj.data.show_background_images = True + while len(obj.data.background_images) > 0: + obj.data.background_images.remove(obj.data.background_images[0]) + background = obj.data.background_images.new() + background.image = bpy.data.images.load(os.path.join( + bcfplugin.util.getBcfDir(), + str(topic.xmlId), + viewpoint_reference.snapshot.uri + )) area = next(area for area in bpy.context.screen.areas if area.type == 'VIEW_3D') area.spaces[0].region_3d.view_perspective = 'CAMERA' diff --git a/src/ifcblenderexport/blenderbim/prop.py b/src/ifcblenderexport/blenderbim/prop.py index 9adf2db430..61f1a7a922 100644 --- a/src/ifcblenderexport/blenderbim/prop.py +++ b/src/ifcblenderexport/blenderbim/prop.py @@ -479,8 +479,8 @@ def refreshBcfTopic(self, context): # Load viewpoints bcfviewpoints_enum.clear() - viewpoints = bcfplugin.getViewpoints(topic) - for i, viewpoint in enumerate(viewpoints): + bcf.BcfStore.viewpoints = bcfplugin.getViewpoints(topic, realViewpoint=False) + for i, viewpoint in enumerate(bcf.BcfStore.viewpoints): bcfviewpoints_enum.append((str(i), 'View {}'.format(i+1), '')) # Load comments