Maya-Python manipMoveContext

Maya-Python manipMoveContext

现在我正在尝试制作一个脚本来更改 Maya 中的轴方向。 (此功能已在 Maya 建模工具箱中,但我想制作一个自定义和简化版本)但是我的功能出现问题。这是代码:

cmds.optionMenu(label = 'Pivot', changeCommand = pivotOrient)

cmds.menuItem( label='Object', )
cmds.menuItem( label='World')
cmds.menuItem( label='Component' )
cmds.menuItem( label='Normal' )


def pivotOrient( p ):
    if p == 'Object':
        cmds.manipMoveContext(e= True, mode= 0)
    elif p == 'World':
        cmds.manipMoveContext(e= True, mode= 2)
    elif p == 'Component':
        cmds.manipMoveContext(e= True, mode= 10)
    else:
        cmds.manipMoveContext(e= True, mode= 3)

它说 "# 错误:运行时错误:文件第 40 行:未指定对象名称。#""

你能帮我解决这个问题吗?抱歉,我在 Python 和 Maya 脚本方面还是个新手。提前致谢。

manipMoveContext 命令需要第一个参数来指定上下文,当处于 editquery 模式时(参见:http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html#hExamples)。

在最简单的情况下,您可以使用 'Move' 作为调用的第一个参数,例如: cmds.manipMoveContext('Move', e=True, mode=0)

但对于不那么琐碎的场景(或者甚至只是为了概括您的代码并使其更健壮),您需要了解操纵器和上下文的工作原理并向您的 pivotOrient 函数添加一些逻辑。

只是作为我的意思的提示,你可以看看这些:

另外,试试这个:

curctx = cmds.currentCtx()
print curctx
if cmds.superCtx(curctx, ex=1):
    ctx = cmds.superCtx(curctx, q=1)
    typ = cmds.contextInfo(ctx, q=1, c=1)
    print ctx, typ