From 85e75465b1228b13e3cb1ac5df9ea3dc2ff45d38 Mon Sep 17 00:00:00 2001 From: aardschok Date: Thu, 15 Feb 2018 10:25:24 +0100 Subject: [PATCH] added check for locked nodes --- colorbleed/maya/lib.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/colorbleed/maya/lib.py b/colorbleed/maya/lib.py index 82ab58e5f4..63f0b21fa7 100644 --- a/colorbleed/maya/lib.py +++ b/colorbleed/maya/lib.py @@ -598,15 +598,20 @@ def maya_temp_folder(): # region ID -def get_id_required_nodes(referenced_nodes=False): +def get_id_required_nodes(referenced_nodes=False, nodes=None): """Filter out any node which are locked (reference) or readOnly Args: referenced_nodes (bool): set True to filter out reference nodes + nodes (list, Optional): nodes to consider Returns: nodes (set): list of filtered nodes """ + if nodes is None: + # Consider all nodes + nodes = cmds.ls() + def _node_type_exists(node_type): try: cmds.nodeType(node_type, isTypeName=True) @@ -641,7 +646,7 @@ def get_id_required_nodes(referenced_nodes=False): # We *always* ignore intermediate shapes, so we filter them out # directly - nodes = cmds.ls(type=types, long=True, noIntermediate=True) + nodes = cmds.ls(nodes, type=types, long=True, noIntermediate=True) # The items which need to pass the id to their parent # Add the collected transform to the nodes @@ -655,6 +660,14 @@ def get_id_required_nodes(referenced_nodes=False): nodes -= ignore # Remove the ignored nodes + # Avoid locked nodes + nodes_list = list(nodes) + locked = cmds.lockNode(nodes_list, query=True, lock=True) + for node, lock in zip(nodes_list, locked): + if lock: + log.warning("Skipping locked node: %s" % node) + nodes.remove(node) + return nodes