mayaPython中函数运用*args,**kwargs 。重命名贴图
maya中使用函数,重命名贴图。
*得到的是元组。
def process_all_textures(*args): print (args[0],args[1:]) tx1 = cmds.shadingNode('file', asTexture=True) tx2 = cmds.shadingNode('file', asTexture=True) tx3 = cmds.shadingNode('file', asTexture=True) tx4 = cmds.shadingNode('file', asTexture=True) tex_list = [tx1,tx2,tx3,tx4] process_all_textures('grass_',tex_list) #('grass_', ([u'file1', u'file2', u'file3', u'file4'],)) process_all_textures('grass_',*tex_list) #('grass_', (u'file1', u'file2', u'file3', u'file4'))
** 键值字典
setdefault() 字典对象使用的函数。第一个位置是键,第二个位置没有值,则返回值None。
import maya.cmds as cmds def process_all_textures(**kwargs): pre = kwargs.setdefault('prefix','my_') texture = kwargs.setdefault('texture_node') print ('%s%s'%(pre,texture)) process_all_textures() #my_None process_all_textures(prefix='aa_') #aa_None process_all_textures(texture_node=texture) #my_file3 tx1 = cmds.shadingNode('file', asTexture=True) arg_dict = {'prefix':'grass','texture_node':tx1} process_all_textures(**arg_dict) #grassfile1
pre没有指定prefix值。就会用my_代替。
texture没有指定,会用None代替
也可以用**字典传递给函数
process_all_textures(**arg_dict)
返回值 return
可以处理命令啊
这里创建一个file贴图,然后重命名。
import maya.cmds as cmds texture = cmds.shadingNode('file',asTexture=True) def process_all_textures(**kwargs): prefix = kwargs.setdefault('prefix','my_') texture = kwargs.setdefault('texture_node') return cmds.rename(texture,'%s%s'%(prefix,texture)) texture = process_all_textures(texture_node = texture) print texture #my_file1