Skip to content

Instantly share code, notes, and snippets.

@yamahigashi
Created February 6, 2025 07:31
Show Gist options
  • Save yamahigashi/8995e71a0383210992c342a1d75b7d6a to your computer and use it in GitHub Desktop.
Save yamahigashi/8995e71a0383210992c342a1d75b7d6a to your computer and use it in GitHub Desktop.
def select_layer(layer_name, add=False):
# type: (Text, bool) -> None
if not add:
for layer in get_all_layers():
deselect_layer(layer)
if "BaseAnimation" == layer_name:
layer_name = next((x for x in get_all_layers() if "BaseAnimation" in x), layer_name)
def __inner(__layer_name):
cmds.animLayer(forceUIRebuild=True)
cmds.animLayer(forceUIRefresh=True)
cmds.animLayer(
__layer_name, edit=True, lock=False, mute=False, selected=True, preferred=True
)
cmds.animLayer(forceUIRebuild=True)
cmds.animLayer(forceUIRefresh=True)
__inner(layer_name)
def deselect_layer(layer):
# type: (Text) -> None
if "BaseAnimation" in layer:
cmds.animLayer(layer, edit=True, preferred=False, selected=False)
else:
cmds.animLayer(layer, edit=True, preferred=False, selected=False)
def get_all_layers(layer_name=None):
# type: (Optional[Text]) -> List[Text]
layers = cmds.ls(type="animLayer") or []
layers = sorted(layers, key=lambda x: 0 if "baseanimation" in x.lower() else 1)
if layer_name is not None:
layers = [_l for _l in layers if layer_name in _l]
return layers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment