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
命令需要第一个参数来指定上下文,当处于 edit
或 query
模式时(参见:http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html#hExamples)。
在最简单的情况下,您可以使用 'Move'
作为调用的第一个参数,例如:
cmds.manipMoveContext('Move', e=True, mode=0)
但对于不那么琐碎的场景(或者甚至只是为了概括您的代码并使其更健壮),您需要了解操纵器和上下文的工作原理并向您的 pivotOrient
函数添加一些逻辑。
只是作为我的意思的提示,你可以看看这些:
- https://forum.highend3d.com/t/how-to-get-the-current-manipulators-location/2822
- http://forums.cgsociety.org/showthread.php?t=908417
另外,试试这个:
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
现在我正在尝试制作一个脚本来更改 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
命令需要第一个参数来指定上下文,当处于 edit
或 query
模式时(参见:http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html#hExamples)。
在最简单的情况下,您可以使用 'Move'
作为调用的第一个参数,例如:
cmds.manipMoveContext('Move', e=True, mode=0)
但对于不那么琐碎的场景(或者甚至只是为了概括您的代码并使其更健壮),您需要了解操纵器和上下文的工作原理并向您的 pivotOrient
函数添加一些逻辑。
只是作为我的意思的提示,你可以看看这些:
- https://forum.highend3d.com/t/how-to-get-the-current-manipulators-location/2822
- http://forums.cgsociety.org/showthread.php?t=908417
另外,试试这个:
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