我在使用热键时在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()
调用函数按预期工作。
答案 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}}标志中。