Maya(Python)搜索和替换

时间:2015-09-17 00:42:57

标签: python maya

需要帮助来搜索和替换我给定选项的工作。我需要搜索和替换仅适用于网格,关节和定位器。这就是我到目前为止所做的:

    def searchAndReplace(self):
    searchText = str(self.windowObj.myLookFor.text()) #My search text feild
    replaceText = str(self.windowObj.myRepFor.text()) #My replace text feild
    selection = cmds.ls(sl=True) #only selected items
    locators = cmds.listRelatives(cmds.ls(type= 'locator'), p=1)# Give me the list of locators 
    meshes = cmds.listRelatives(cmds.ls(type= 'mesh'), p=1) #Give me the list of all meshes
    joints = cmds.ls(type = 'joint')# Give me the list of my joints. 

    if len(selection) > 0:
        if self.windowObj.myRepAll.isChecked(): #Radial button to select everything in scene
            if locators.find(searchText) != -1:
                for loc in locators: #for all the locators in scene, add to loc
                    newName = locators.replace(searchText, replaceText) #search and replace 
                    cmds.rename(locators, newName) #add the new name.

但我得到的错误是我不能在定位器上使用“.find”。我得到的错误是:

# AttributeError: 'list' object has no attribute 'find'

我该如何解决这个问题?请记住,我是Maya中Python的新手。基本上我希望搜索和替换能够处理我在场景中的所有关节,定位器和网格物体。

1 个答案:

答案 0 :(得分:2)

这就是错误。

if locators.find(searchText) != -1:

错误信息非常简单。您正试图在列表中使用find,但该列表无效。

[].find
# Error: AttributeError: file <maya console> line 1: 'list' object has no attribute 'find' #

find是一个字符串操作。

''.find
# Result: <built-in method find of str object at 0x1f43508> #

当你遍历对象时,你需要使用它。名字,不在他们的数组上。