Maya Python:mel.eval(invertSelection;)不起作用

时间:2018-03-30 22:01:34

标签: python maya mel

就像标题所说的那样,我在Maya中有一个简单的python脚本,它不起作用。

import maya.cmds as cmds
import maya.mel as mel

def createCylinder():
    # Check if cylinder "trunkCylinder" exists. Delete it
    if cmds.objExists("trunkCylinder"):
        cmds.delete("trunkCylinder")
    # Create a new cylinder called "trunkCylinder"
    cmds.polyCylinder(axis=(0,1,0), height=1, name="trunkCylinder" )
    # Clear the selection, then select the cap and invert the selection.
    cmds.select(clear=True)
    cmds.select("trunkCylinder.f[21]", replace=True)
    invertedSel = mel.eval("invertSelection;")
    print str(invertedSel)
    # ^^ Prints: None ^^
    # End result is nothing is selected

createCylinder()

我希望Maya打印除了f [21]之外的trunkCylinder上的所有面的列表,并反转视口中的选择。相反,它返回None并取消选择f [21]。有没有人在我的代码中看到错误,或者我错误地使用了invertSelection?

幸运的是,我可以选择f [0:20]作为解决方法,甚至可以获取面部列表并将其与我的面部列表进行比较,删除两个列表中的任何内容。但是我已经可以设想让invertSelection工作的情况会节省很多时间。任何帮助在这里将不胜感激。

1 个答案:

答案 0 :(得分:2)

以下Python脚本绝对有效。你应该试试看))。星号用于选择数组中的所有其他面,以及toggle标记,它为您选择了一个选择。

import maya.cmds as cmds

def createCylinder():
    if cmds.objExists("trunkCylinder"):
        cmds.delete("trunkCylinder")
    cmds.polyCylinder(axis=(0,1,0), height=1, name="trunkCylinder")
    cmds.select(clear=True)
    cmds.select("trunkCylinder.f[21]")
    cmds.select("trunkCylinder.f[*]", tgl=True)

createCylinder()