From 65a5dcbe25cc963cac0405c4b2bbcbbdb9b279cd Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sat, 21 Mar 2020 21:44:02 +1100 Subject: [PATCH] Add list of BCF topics in UI --- src/ifcblenderexport/blenderbim/__init__.py | 2 ++ src/ifcblenderexport/blenderbim/operator.py | 6 +++++- src/ifcblenderexport/blenderbim/prop.py | 10 +++++++++- src/ifcblenderexport/blenderbim/ui.py | 12 ++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/__init__.py b/src/ifcblenderexport/blenderbim/__init__.py index 356442d0b3..489467db29 100644 --- a/src/ifcblenderexport/blenderbim/__init__.py +++ b/src/ifcblenderexport/blenderbim/__init__.py @@ -103,6 +103,7 @@ if bpy is not None: operator.ExecuteIfcDiff, operator.AssignContext, operator.SetViewPreset1, + prop.BcfTopic, prop.Subcontext, prop.BIMProperties, prop.DocProperties, @@ -135,6 +136,7 @@ if bpy is not None: ui.BIM_PT_mesh, ui.BIM_PT_object, ui.BIM_PT_camera, + ui.BIM_UL_topics, ) def menu_func_export(self, context): diff --git a/src/ifcblenderexport/blenderbim/operator.py b/src/ifcblenderexport/blenderbim/operator.py index b130fb96c5..7cc7157fc8 100644 --- a/src/ifcblenderexport/blenderbim/operator.py +++ b/src/ifcblenderexport/blenderbim/operator.py @@ -393,7 +393,11 @@ class GetBcfTopics(bpy.types.Operator): import bcfplugin bcfplugin.openProject(bpy.context.scene.BIMProperties.bcf_file) topics = bcfplugin.getTopics() - print(topics) + while len(bpy.context.scene.BIMProperties.bcf_topics) > 0: + bpy.context.scene.BIMProperties.bcf_topics.remove(0) + for topic in topics: + new = bpy.context.scene.BIMProperties.bcf_topics.add() + new.name = topic[0] return {'FINISHED'} diff --git a/src/ifcblenderexport/blenderbim/prop.py b/src/ifcblenderexport/blenderbim/prop.py index 80d239b70f..7cb7c8a128 100644 --- a/src/ifcblenderexport/blenderbim/prop.py +++ b/src/ifcblenderexport/blenderbim/prop.py @@ -358,6 +358,12 @@ class BIMCameraProperties(PropertyGroup): diagram_scale: EnumProperty(items=getDiagramScales, name='Diagram Scale') +class BcfTopic(PropertyGroup): + name: StringProperty(name='Name') + # TODO: Make this not wrong + target_view: StringProperty(name='Target View') + + class BIMProperties(PropertyGroup): schema_dir: StringProperty(default=os.path.join(cwd ,'schema') + os.path.sep, name="Schema Directory") data_dir: StringProperty(default=os.path.join(cwd, 'data') + os.path.sep, name="Data Directory") @@ -418,7 +424,9 @@ class BIMProperties(PropertyGroup): available_contexts: EnumProperty(items=[('Model', 'Model', ''), ('Plan', 'Plan', '')], name="Available Contexts") available_subcontexts: EnumProperty(items=getSubcontexts, name="Available Subcontexts") available_target_views: EnumProperty(items=getTargetViews, name="Available Target Views") - bcf_file: StringProperty(default='', name="BCF File") + 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') class MapConversion(PropertyGroup): diff --git a/src/ifcblenderexport/blenderbim/ui.py b/src/ifcblenderexport/blenderbim/ui.py index 90435aeb3e..6a6c6e3618 100644 --- a/src/ifcblenderexport/blenderbim/ui.py +++ b/src/ifcblenderexport/blenderbim/ui.py @@ -544,6 +544,9 @@ class BIM_PT_bcf(Panel): row = layout.row() row.operator("bim.get_bcf_topics") + props = bpy.context.scene.BIMProperties + layout.template_list('BIM_UL_topics', '', props, 'bcf_topics', props, 'active_bcf_topic_index') + class BIM_PT_qa(Panel): bl_label = "BIMTester Quality Auditing" @@ -721,3 +724,12 @@ class BIM_PT_mvd(Panel): row.prop(bim_properties, 'import_should_ignore_building_coordinates') row = layout.row() row.prop(bim_properties, 'import_should_treat_styled_item_as_material') + + +class BIM_UL_topics(bpy.types.UIList): + def draw_item(self, context, layout, data, item, icon, active_data, active_propname): + ob = data + if item: + layout.prop(item, 'name', text='', emboss=False) + else: + layout.label(text="", translate=False)