Posts

Showing posts from September, 2023

Merge all animLayers

class animLayerOps: def getNonBaseAnimationLayerNodes(self): ret= []; import maya.cmds as mc; if not self.licCheck(): False; else: import maya.cmds as mc; animLayerNodes= mc.ls(type="animLayer"); for ALN in animLayerNodes: attr= ALN+".parentLayer"; if mc.objExists(attr) and mc.listConnections(attr): ret.append(ALN); return( ret ); def mergeAnimLayers(self): import maya.cmds as mc; bakeAttrs= []; animLayers= self.getNonBaseAnimationLayerNodes(); for item in animLayers: attr= item+".dagSetMembers"; if mc.objExists(attr): cncts= mc.listConnections(attr,p=1,s=1,d=0); if cncts: for item2 in cncts: bakeAttrs.append(item2); bakeAttrs= sorted(set(bakeAttrs),key=bakeAttrs.index); if len(bakeAttrs): start= mc.playbackOptions(q=1,min=1); end= mc.playbackOptions(q=1,max=1); mc.bakeResults(bakeAttrs,t=(start,end),sm=1,mr=1); mc.delete(animLayers);

Getting a BaseAnimation animLayer node.

 def getBaseAnimationLayerNode():     ret= [];     import maya.cmds as mc;     animLayerNodes= mc.ls(type="animLayer");     for ALN in animLayerNodes:         attr= ALN+".parentLayer";         if mc.objExists(attr) and not mc.listConnections(attr):             ret.append(ALN);     return( ret );

Get all referenced nodes in a scene

def getReferencedNodeList():     referencedNodeList= [];     import maya.cmds as mc;     rnodes= mc.ls(type="reference");     for rnode in rnodes:         sharedAttr= rnode+".sharedReference";         if mc.objExists(sharedAttr) and not mc.listConnections(sharedAttr,s=0,d=1):             referencedNodeList+= mc.referenceQuery(rnode,n=True);     return( referencedNodeList );

How to get a referenced node imported last.

import maya.cmds as mc; beforeReferenceNodes= mc.ls(type="reference"); filePath= "C:\\Users\\user\\Documents\\maya\\projects\\referenceTest\\scenes\\referencingMayaFile.mb"; mc.file(filePath,reference=True); afterReferenceNodes= mc.ls(type="reference"); importedReferenceNodes= list(set(afterReferenceNodes)-set(beforeReferenceNodes));