From 9b76e380ae7267a9bdd3800641534214abda412b Mon Sep 17 00:00:00 2001 From: pullusb Date: Mon, 10 Mar 2025 18:20:33 +0100 Subject: [PATCH] fix viewlayer removal error 1.8.14 - fixed: error when trying remove a viewlayer --- CHANGELOG.md | 4 ++++ OP_clean.py | 14 ++++++++++---- __init__.py | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c23199..ad41aae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ Activate / deactivate layer opacity according to prefix Activate / deactivate all masks using MA layers --> +1.8.14 + +- fixed: error when trying remove a viewlayer + 1.8.13 - changed: improve `connect to fileoutput` feature: diff --git a/OP_clean.py b/OP_clean.py index 8a0e648..c187daa 100644 --- a/OP_clean.py +++ b/OP_clean.py @@ -90,10 +90,16 @@ class GPEXP_OT_clean_compo_tree(bpy.types.Operator): if self.clear_unused_view_layers: used_rlayer_names = [n.layer for n in nodes if n.type == 'R_LAYERS'] - for rl in reversed(scn.view_layers): - if rl.name in used_rlayer_names or rl.name == 'View Layer': - continue - scn.view_layers.remove(rl) + vl_number = len(scn.view_layers) + if vl_number > 1: + for rl in reversed(scn.view_layers): + if vl_number <= 1: + ## Do not try to remove the last view layer (can use try except with RuntimeError check) + break + if rl.name in used_rlayer_names or rl.name in ('View Layer', 'ViewLayer'): + continue + scn.view_layers.remove(rl) + vl_number -= 1 if self.arrange_rl_nodes: fn.rearrange_rlayers_in_frames(node_scene.node_tree) diff --git a/__init__.py b/__init__.py index 3f94914..1a033b0 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ bl_info = { "name": "GP Render", "description": "Organise export of gp layers through compositor output", "author": "Samuel Bernou", - "version": (1, 8, 13), + "version": (1, 8, 14), "blender": (3, 0, 0), "location": "View3D", "warning": "",