[Blender][スクリプト]シーン内の全グリースペンシルレイヤーのロックをオフにする
タイトルの内容をドープシートの「チャンネル」メニューに組み込むスクリプト。
選択したりとかフィルターしたりの手間を省く為。
import bpy
# シーン内のすべてのグリースペンシルオブジェクトのレイヤーのロックをオフにする関数
def unlock_all_gpencil_layers(self, context):
all_objects = bpy.context.scene.objects
gpencil_objects = [obj for obj in all_objects if obj.type == 'GPENCIL']
for gpencil in gpencil_objects:
for layer in gpencil.data.layers:
layer.lock = False
self.report({'INFO'}, "All Grease Pencil layers unlocked")
# メニューにオプションを追加する関数
def draw_unlock_gpencil_layers_menu(self, context):
layout = self.layout
layout.operator("object.unlock_all_gpencil_layers", text="Unlock All Grease Pencil Layers")
# オペレータークラス
class OBJECT_OT_unlock_all_gpencil_layers(bpy.types.Operator):
bl_idname = "object.unlock_all_gpencil_layers"
bl_label = "Unlock All Grease Pencil Layers"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
unlock_all_gpencil_layers(self, context)
return {'FINISHED'}
# 登録関数
def register():
bpy.utils.register_class(OBJECT_OT_unlock_all_gpencil_layers)
bpy.types.DOPESHEET_MT_channel.append(draw_unlock_gpencil_layers_menu)
# 登録解除関数
def unregister():
bpy.utils.unregister_class(OBJECT_OT_unlock_all_gpencil_layers)
bpy.types.DOPESHEET_MT_channel.remove(draw_unlock_gpencil_layers_menu)
if __name__ == "__main__":
register()
この記事が気に入ったらサポートをしてみませんか?