mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-24 11:06:51 +00:00
Create UI to switch between views easily
This commit is contained in:
@@ -81,6 +81,7 @@ if bpy is not None:
|
|||||||
operator.CreateSheets,
|
operator.CreateSheets,
|
||||||
operator.GenerateDigitalTwin,
|
operator.GenerateDigitalTwin,
|
||||||
operator.CreateView,
|
operator.CreateView,
|
||||||
|
operator.ActivateView,
|
||||||
prop.Subcontext,
|
prop.Subcontext,
|
||||||
prop.BIMProperties,
|
prop.BIMProperties,
|
||||||
prop.DocProperties,
|
prop.DocProperties,
|
||||||
|
|||||||
@@ -881,3 +881,22 @@ class GenerateDigitalTwin(bpy.types.Operator):
|
|||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
# Does absolutely nothing at all :D
|
# Does absolutely nothing at all :D
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
class ActivateView(bpy.types.Operator):
|
||||||
|
bl_idname = 'bim.activate_view'
|
||||||
|
bl_label = 'Activate View'
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
camera = bpy.data.objects.get(bpy.context.scene.DocProperties.available_views)
|
||||||
|
if not camera:
|
||||||
|
return {'FINISHED'}
|
||||||
|
bpy.context.scene.camera = camera
|
||||||
|
area = next(area for area in bpy.context.screen.areas if area.type == 'VIEW_3D')
|
||||||
|
area.spaces[0].region_3d.view_perspective = 'CAMERA'
|
||||||
|
views_collection = bpy.data.collections.get('Views')
|
||||||
|
for collection in views_collection.children:
|
||||||
|
bpy.context.view_layer.layer_collection.children['Views'].children[collection.name].hide_viewport = True
|
||||||
|
bpy.data.collections.get(collection.name).hide_render = True
|
||||||
|
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'}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ subcontexts_enum = []
|
|||||||
target_views_enum = []
|
target_views_enum = []
|
||||||
persons_enum = []
|
persons_enum = []
|
||||||
organisations_enum = []
|
organisations_enum = []
|
||||||
|
views_enum = []
|
||||||
|
|
||||||
@persistent
|
@persistent
|
||||||
def setDefaultProperties(scene):
|
def setDefaultProperties(scene):
|
||||||
@@ -209,6 +210,19 @@ def getTargetViews(self, context):
|
|||||||
return target_views_enum
|
return target_views_enum
|
||||||
|
|
||||||
|
|
||||||
|
def getViews(self, context):
|
||||||
|
global views_enum
|
||||||
|
views_enum.clear()
|
||||||
|
views_collection = bpy.data.collections.get('Views')
|
||||||
|
if not views_collection:
|
||||||
|
return views_enum
|
||||||
|
for collection in views_collection.children:
|
||||||
|
for obj in collection.objects:
|
||||||
|
if obj.type == 'CAMERA':
|
||||||
|
views_enum.append((obj.name, obj.name, ''))
|
||||||
|
return views_enum
|
||||||
|
|
||||||
|
|
||||||
class Subcontext(PropertyGroup):
|
class Subcontext(PropertyGroup):
|
||||||
name: StringProperty(name='Name')
|
name: StringProperty(name='Name')
|
||||||
target_view: StringProperty(name='Target View')
|
target_view: StringProperty(name='Target View')
|
||||||
@@ -217,6 +231,7 @@ class Subcontext(PropertyGroup):
|
|||||||
class DocProperties(PropertyGroup):
|
class DocProperties(PropertyGroup):
|
||||||
should_recut: BoolProperty(name="Should Recut", default=True)
|
should_recut: BoolProperty(name="Should Recut", default=True)
|
||||||
view_name: StringProperty(name="View Name")
|
view_name: StringProperty(name="View Name")
|
||||||
|
available_views: EnumProperty(items=getViews, name="Available Views")
|
||||||
|
|
||||||
|
|
||||||
class BIMCameraProperties(PropertyGroup):
|
class BIMCameraProperties(PropertyGroup):
|
||||||
|
|||||||
@@ -198,6 +198,10 @@ class BIM_PT_documentation(Panel):
|
|||||||
row.prop(props, 'view_name')
|
row.prop(props, 'view_name')
|
||||||
row.operator('bim.create_view', icon='ADD', text='')
|
row.operator('bim.create_view', icon='ADD', text='')
|
||||||
|
|
||||||
|
row = layout.row()
|
||||||
|
row.prop(props, 'available_views')
|
||||||
|
row.operator('bim.activate_view', icon='SCENE', text='')
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator('bim.create_sheets')
|
row.operator('bim.create_sheets')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user