返回结果
MEL 在执行脚本时会返回最后执行的语句的结果(如果有)。将值指定给变量和返回结果的过程调用的语句属于返回结果的语句类型。例如,以下代码块将有一个结果,MEL 会将该结果回显到脚本编辑器和命令行消息区域:
if ( $foo == 1 ) $bar = 42; else $bar = 7;
相比之下,在 Python 中指定值的语句不返回结果,尽管 Python 执行该指定。
使用 Python 的语法,只需引用一个变量即可返回其值。MEL 的语法不允许只是编写变量的名称作为一条完整的语句。
在 Python 中可以将上述 MEL 代码片段编写为以下内容。最后一行 (bar) 会返回结果。
if foo == 1: bar = 42 else bar = 7 bar
如果需要在一种语言的上下文中使用在另一种语言中计算的值,那么了解该差异是很重要的。例如,如果希望在 MEL 中使用 Python 值,只需执行以下命令:
$myMELvariable = python ("myPythonVariable");
反之,如果希望在 Python 中使用 MEL 变量,则需要执行类似以下的命令:
import maya.mel myPythonVariable = maya.mel.eval ('global $myMELvariable; $temp=$myMELvariable;' )
可以这样做是因为赋值语句会返回一个结果,该语句是脚本中传递到 eval 命令的最后一条语句。
在 Python 中只能访问全局范围的 MEL 变量。