Maya的名字命令无法调用函数

时间:2015-11-25 23:31:51

标签: python maya

我在使用热键时在Maya中调用nameCommand'我无法判断它是Maya还是Python问题。

以下MEL按预期工作

proc myTest() {
    print("test");
}

nameCommand -ann "test" -command "myTest()" testCommand;
hotkey -k "l" -name "testCommand";

然而,翻译成Python,我收到错误

import maya.cmds as cmds

def myPythonTest():
    print("myPythonTest")

cmds.nameCommand("pythonTestCommand", ann="pythonTest", command="myPythonTest()", sourceType="python")
cmds.hotkey(k="l", name="pythonTestCommand")

// Error: line 1: Cannot find procedure "myPythonTest".

在Python中调用函数是错误的方法,还是其他事情发生了?我注意到括号被剥离了,用脚本编辑器中的myPythonTest()调用函数按预期工作。

2 个答案:

答案 0 :(得分:1)

cmds.nameCommand("pythonTestCommand", ann="pythonTest", command='python("myPythonTest()")', sourceType="python")
cmds.hotkey(k="l", name="pythonTestCommand")

应该工作

答案 1 :(得分:0)

要扩展上一个答案,我相信Achayan在评估中是正确的 那个sourceType好像坏了。

如果您希望能够将python代码传递给nameCommand,则需要 首先创建一个runTimeCommand

def testy():
    print('hello')

# There is no way to edit a runtime command so we need to check if it
# exists and then remove it if it does.
my_command_name = 'my_runtime_command'
if cmds.runTimeCommand(my_command_name, q=True, exists=True):
    cmds.runTimeCommand(my_command_name, e=True, delete=True)

cmds.runTimeCommand(
    my_command_name, 
    ann='My Command', 
    category='User', 
    command='testy()', 
    commandLanguage='python'
    )
cmds.nameCommand('my_name_command', ann='My Command', command=my_command_name)
cmds.hotkey(k='1', name='my_name_command')

如您所见,您不需要提供sourceType,nameCommand就是 runtime命令的字符串表示形式,只执行 给定runTimeCommand。因此,指定执行语言的真实位置在commandLanguage的{​​{1}}标志中。