From 22d7aef7be71f21cac093ba061e9466d5e1b1148 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 7 Sep 2020 17:47:19 +1000 Subject: [PATCH] You can now refresh the drawing list, in case you are manually creating drawings --- .../blenderbim/bim/__init__.py | 1 + .../blenderbim/bim/operator.py | 19 +++++++++++++++++++ src/ifcblenderexport/blenderbim/bim/ui.py | 18 ++++++++++-------- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index ba35fc694e..e6a63bbdc8 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -201,6 +201,7 @@ if bpy is not None: operator.CopyPropertyToSelection, operator.CreateShapeFromStepId, operator.SelectHighPolygonMeshes, + operator.RefreshDrawingList, prop.StrProperty, prop.Variable, prop.Role, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 270727834f..c66782f55d 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -3984,3 +3984,22 @@ class SelectHighPolygonMeshes(bpy.types.Operator): if relating_type: relating_type.select_set(True) return {'FINISHED'} + + +class RefreshDrawingList(bpy.types.Operator): + bl_idname = 'bim.refresh_drawing_list' + bl_label = 'Refresh Drawing List' + + def execute(self, context): + while len(bpy.context.scene.DocProperties.drawings) > 0: + bpy.context.scene.DocProperties.drawings.remove(0) + for obj in bpy.data.objects: + if not isinstance(obj.data, bpy.types.Camera): + continue + print(obj) + if 'IfcGroup/' in obj.name and obj.users_collection[0].name == obj.name: + print(obj) + new = bpy.context.scene.DocProperties.drawings.add() + new.name = obj.name.split('/')[1] + new.camera = obj + return {'FINISHED'} diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index d8db556fea..6f0e82a107 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -736,12 +736,13 @@ class BIM_PT_drawings(Panel): row = layout.row(align=True) row.operator('bim.add_drawing') + row.operator('bim.refresh_drawing_list', icon='FILE_REFRESH', text='') if props.drawings: - op = row.operator('bim.open_view', icon='URL', text='') - op.view = props.drawings[props.active_drawing_index].name - row.operator('bim.remove_drawing', icon='X', text='').index = props.active_drawing_index - + if props.active_drawing_index < len(props.drawings): + op = row.operator('bim.open_view', icon='URL', text='') + op.view = props.drawings[props.active_drawing_index].name + row.operator('bim.remove_drawing', icon='X', text='').index = props.active_drawing_index layout.template_list('BIM_UL_generic', '', props, 'drawings', props, 'active_drawing_index') row = layout.row() @@ -1963,12 +1964,13 @@ class BIM_PT_annotation_utilities(Panel): row = layout.row(align=True) row.operator('bim.add_drawing') + row.operator('bim.refresh_drawing_list', icon='FILE_REFRESH', text='') if props.drawings: - op = row.operator('bim.open_view', icon='URL', text='') - op.view = props.drawings[props.active_drawing_index].name - row.operator('bim.remove_drawing', icon='X', text='').index = props.active_drawing_index - + if props.active_drawing_index < len(props.drawings): + op = row.operator('bim.open_view', icon='URL', text='') + op.view = props.drawings[props.active_drawing_index].name + row.operator('bim.remove_drawing', icon='X', text='').index = props.active_drawing_index layout.template_list('BIM_UL_generic', '', props, 'drawings', props, 'active_drawing_index')