使用python导入和重命名maya中的多个对象

时间:2015-02-12 11:54:48

标签: python maya

我正在尝试使用python在maya中导入多个目标文件,并在maya中使用文件名作为对象名。我已设法导入对象,但我只能将文件名用作命名空间而不是对象名。

import maya.cmds as cmds

def import_multiple_object_files():
    files_to_import = cmds.fileDialog2(fileFilter =  '*.obj', dialogStyle = 2, caption = 'import multiple object files', fileMode = 4)
    for file_to_import in files_to_import:
        names_list  = file_to_import.split('/')
        object_name = names_list[-1].replace('.obj', '') 
        cmds.file('%s' % file_to_import, i = True, type = "OBJ", namespace = object_name, mergeNamespacesOnClash = False, ignoreVersion = True, options = "mo=0",  loadReferenceDepth  = "all"  )

http://i59.tinypic.com/2eoabgm.png

1 个答案:

答案 0 :(得分:1)

好的,所以这个脚本假设.obj文件中只有只有一个网格。实际上,只重命名从导入返回的第一个网格。

要检索返回的节点,我使用了来自file命令的returnNewNodes flag

然后我使用rename command将导入的节点重命名为您的文件名。

我还删除了命名空间和mergeNamespacesOnClash标记。

注意:我今天有点懒,而且我在这里有任何.obj文件,所以我没有测试这段代码。如果你想加载一个带有多个网格的obj文件,请给我一个评论,我会编辑我的答案。

import maya.cmds as cmds

def import_multiple_object_files():
    files_to_import = cmds.fileDialog2(fileFilter =  '*.obj', dialogStyle = 2, caption = 'import multiple object files', fileMode = 4)
    for file_to_import in files_to_import:
        names_list  = file_to_import.split('/')
        object_name = names_list[-1].replace('.obj', '') 
        returnedNodes = cmds.file('%s' % file_to_import, i = True, type = "OBJ", rnn=True, ignoreVersion = True, options = "mo=0",  loadReferenceDepth  = "all"  )
        cmds.rename( returnedNodes[0], object_name)