I am trying to hide/unhide objects in a particular ViewLayer but it's hiding in the current view layer only.
import bpy
class SimpleOperator(bpy.types.Operator):
"""Tooltip"""
bl_idname = "object.simple_operator"
bl_label = "Hide/Unhide"
def execute(self, context):
view_layer = context.scene.view_layers.get("NewViewLayer")
if not view_layer:
view_layer = context.scene.view_layers.new("NewViewLayer")
for obj in context.selected_objects:
for collection in view_layer.layer_collection.collection.children_recursive:
for layer_obj in collection.objects:
if layer_obj.name == obj.name:
layer_obj.hide_set(not layer_obj.hide_get())
return {"FINISHED"}
def menu_func(self, context):
self.layout.operator(SimpleOperator.bl_idname, text=SimpleOperator.bl_label)
# Register and add to the "object" menu (required to also use F3 search "Simple Object Operator" for quick access).
def register():
bpy.utils.register_class(SimpleOperator)
bpy.types.VIEW3D_MT_object_context_menu.append(menu_func)
def unregister():
bpy.utils.unregister_class(SimpleOperator)
bpy.types.VIEW3D_MT_object_context_menu.remove(menu_func)
if __name__ == "__main__":
register()
# test call
bpy.ops.object.simple_operator()