added check for locked nodes

This commit is contained in:
aardschok 2018-02-15 10:25:24 +01:00
parent fd5aa5f8cd
commit 85e75465b1

View file

@ -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