Files
render_toolbox/operators/viewlayer_management.py
T
Pullusb d650ec8c98 Update for Blender 5.2
- use new api compositor access
- Fix file output nodes connexion/renumber/rename/slots handlibng
- consider the new output types
- fixes node position with new API
- fix errors with handler

LLM assisted update
2026-09-29 18:57:26 +02:00

61 lines
1.8 KiB
Python
Executable File

import bpy
from bpy.types import Operator
from bpy.props import (StringProperty,
BoolProperty,
)
from .. import fn
class RT_OT_enable_all_viewlayers(Operator):
bl_idname = "rt.enable_all_viewlayers"
bl_label = "Enable All Viewlayers"
bl_description = "Enable all View layers except those named 'exclude'" # 'View Layer'
bl_options = {"REGISTER"}
def execute(self, context):
scn = context.scene
vl_list = [vl for vl in scn.view_layers if not vl.use and vl.name not in {'exclude',}] # 'View Layer',
for v in vl_list:
v.use = True
self.report({"INFO"}, f'{len(vl_list)} ViewLayers Reactivated')
return {"FINISHED"}
class RT_OT_activate_only_selected_layers(Operator):
bl_idname = "rt.activate_only_selected_layers"
bl_label = "Activate Only Selected Layers"
bl_description = "Activate only selected node view layer , excluding all others"
bl_options = {"REGISTER"}
@classmethod
def poll(cls, context):
return fn.get_compositor_tree(context.scene) is not None
def execute(self, context):
scn = context.scene
nodes = fn.get_compositor_tree(scn).nodes
rlayers_nodes = [n for n in nodes if n.select and n.type == 'R_LAYERS']
vls = [scn.view_layers.get(n.layer) for n in rlayers_nodes if scn.view_layers.get(n.layer)]
for v in scn.view_layers:
v.use = v in vls
self.report({"INFO"}, f'Now only {len(vls)} viewlayer active (/{len(scn.view_layers)})')
return {"FINISHED"}
classes = (
RT_OT_enable_all_viewlayers,
RT_OT_activate_only_selected_layers
)
def register():
for cls in classes:
bpy.utils.register_class(cls)
def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)