2017-08-26 43 views
0

現在我正在嘗試創建一個腳本來改變Maya中的透視方向。 (該功能已經在Maya建模工具箱中,但我想製作一個自定義和簡化的版本)但是我遇到了我的功能問題。這是代碼:Maya-Python manipMoveContext

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) 

它說「#錯誤:RuntimeError:文件行40:無對象名稱指定#。」

你能幫我解決這個問題?對不起,我仍然是Python和Maya腳本的新手。提前致謝。

+0

您可能想要更改問題的標題,因爲您收到的錯誤與您的問題有關你正在使用'manipMoveContext'命令的方式;與下拉菜單無關:) – mapofemergence

回答

2

當在editquery模式(請參閱:http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html#hExamples)中時,manipMoveContext命令需要第一個參數來指定上下文。

在最簡單的情況下,你可以使用'Move'爲您的通話將第一個參數,因爲這樣的: cmds.manipMoveContext('Move', e=True, mode=0)

但對於沒有價值的情況下(甚至只是概括你的代碼,使其更加堅固)你需要了解操縱器和上下文是如何工作的,併爲你的函數添加一些邏輯。

僅僅作爲一個暗示什麼,我的意思是,你可以看看這些:

另外,嘗試玩這個:

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 
+0

該文件實際上太舊了;)http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/manipMoveContext.html – Achayan

+0

你是對的@ Achayan,我剛剛編輯了答案。我承認,我很少檢查Maya版本,查看文檔...對於這種東西,它在一段時間內沒有改變...... :) – mapofemergence