Add assign context operator and minor UI cleanup

This commit is contained in:
Dion Moult
2020-01-08 16:58:59 +11:00
parent 579d3d9f86
commit fde80896a1
4 changed files with 45 additions and 2 deletions
@@ -86,6 +86,7 @@ if bpy is not None:
operator.CreateView,
operator.ActivateView,
operator.ExecuteIfcDiff,
operator.AssignContext,
prop.Subcontext,
prop.BIMProperties,
prop.DocProperties,
@@ -947,6 +947,7 @@ class GenerateDigitalTwin(bpy.types.Operator):
# Does absolutely nothing at all :D
return {'FINISHED'}
class ActivateView(bpy.types.Operator):
bl_idname = 'bim.activate_view'
bl_label = 'Activate View'
@@ -965,3 +966,32 @@ class ActivateView(bpy.types.Operator):
bpy.context.view_layer.layer_collection.children['Views'].children[camera.users_collection[0].name].hide_viewport = False
bpy.data.collections.get(camera.users_collection[0].name).hide_render = False
return {'FINISHED'}
class AssignContext(bpy.types.Operator):
bl_idname = 'bim.assign_context'
bl_label = 'Assign Context'
def execute(self, context):
if not self.is_mesh_context_sensitive(bpy.context.active_object.data.name):
bpy.context.active_object.data.name = '{}/{}/{}/{}'.format(
bpy.context.scene.BIMProperties.available_contexts,
bpy.context.scene.BIMProperties.available_subcontexts,
bpy.context.scene.BIMProperties.available_target_views,
bpy.context.active_object.data.name
)
else:
bpy.context.active_object.data.name = '{}/{}/{}/{}'.format(
bpy.context.scene.BIMProperties.available_contexts,
bpy.context.scene.BIMProperties.available_subcontexts,
bpy.context.scene.BIMProperties.available_target_views,
bpy.context.active_object.data.name.split('/')[3]
)
return {'FINISHED'}
def is_mesh_context_sensitive(self, name):
return '/' in name \
and ( \
name[0:6] == 'Model/' \
or name[0:5] == 'Plan/' \
)
+1
View File
@@ -276,6 +276,7 @@ class BIMProperties(PropertyGroup):
has_plan_context: BoolProperty(name="Has Plan Context", default=False)
model_subcontexts: CollectionProperty(name='Model Subcontexts', type=Subcontext)
plan_subcontexts: CollectionProperty(name='Plan Subcontexts', type=Subcontext)
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")
+13 -2
View File
@@ -95,6 +95,14 @@ class BIM_PT_mesh(Panel):
return
layout = self.layout
props = context.active_object.data.BIMMeshProperties
row = layout.row(align=True)
row.prop(bpy.context.scene.BIMProperties, 'available_contexts', text='')
row.prop(bpy.context.scene.BIMProperties, 'available_subcontexts', text='')
row.prop(bpy.context.scene.BIMProperties, 'available_target_views', text='')
row = layout.row()
row.operator('bim.assign_context')
row = layout.row()
row.prop(props, 'is_wireframe')
row = layout.row()
@@ -271,9 +279,12 @@ class BIM_PT_context(Panel):
for context in ['model', 'plan']:
row = layout.row(align=True)
row.prop(props, 'has_{}_context'.format(context))
layout.label(text="Geometric Representation Subcontexts:")
row.prop(props, f'has_{context}_context')
if not getattr(props, f'has_{context}_context'):
continue
layout.label(text="Geometric Representation Subcontexts:")
row = layout.row(align=True)
row.prop(props, 'available_subcontexts', text='')
row.prop(props, 'available_target_views', text='')