记录一下maya场景文件的部分清理功能。
import maya.cmds as mc
def cleanNodes():
unknowNodeList = mc.ls(type='unknown')
if unknowNodeList:
for unNode in unknowNodeList:
try:
mc.delete(unNode)
print ">>>>>> clear " , unNode
except:
print "Waring===============!" , unNode, u"无法清理"
print u"未知节点 清理完成!"
else:
print u"unknownNode个数为0,不需要清理"
def cleanPlugin():
unknownPlugin_list = mc.unknownPlugin( query=True, list=True )
if unknownPlugin_list:
for plugin_name in unknownPlugin_list:
try:
mc.unknownPlugin( plugin_name, remove=True )
print ">>>>>> clear " , plugin_name
except Exception as e:
print "Waring===============!" , plugin_name, u"无法清理"
print u"未知插件 清理完成!"
else:
print u"unknownPlugin个数为0,不需要清理"
def clear_IntermediateObj():
get_mesh_shape = mc.ls(typ='mesh')
for shape_name in get_mesh_shape:
interAttr = mc.getAttr('%s.intermediateObject' % shape_name)
if interAttr == 1:
print "delete>>>>>>>",shape_name
mc.delete(shape_name)
print u"中间物件 清理完成"
def delTurtleRender():
if mc.objExists('TurtleRenderOptions'):
mc.lockNode('TurtleRenderOptions', 'TurtleUIOptions', 'TurtleBakeLayerManager', 'TurtleDefaultBakeLayer', lock=0)
mc.delete('TurtleRenderOptions', 'TurtleUIOptions', 'TurtleBakeLayerManager', 'TurtleDefaultBakeLayer')
print u"海龟渲染节点清理完成"
else:
print u"场景中海龟渲染节点已清理干净"
def cleanUnknown():
unknowList = mc.ls(type=('unknown', 'unknownDag', 'unknownTransform'))
if unknowList:
for item in unknowList:
mc.lockNode(item, l=0)
mc.delete(item)
print "delete>>>>>>>",item
print u"未知有向循环节点 清理完成"
else:
print u"未知有向循环节点个数为0,不需要清理"
def clearEmptyTransform():
for i in range(10):
selTrans = mc.ls(typ='transform')
for transName in selTrans:
shpContainer = mc.listRelatives(transName)
if not shpContainer:
mc.delete(transName)
print "delete>>>>>>>",transName
print u"场景中空的transform清理完成"
def clean_displayLayer():
layer_list = mc.ls(type='displayLayer')
if len(layer_list)>1:
for layer in layer_list[1:]:
mc.delete(layer)
print "delete>>>>>>>",layer
print u"场景显示层 清理完成"
else:
print u"场景中的显示层个数为0,不需要清理"