【问题标题】:Call MEL script from Python - Error occurred during execution of MEL script从 Python 调用 MEL 脚本 - 执行 MEL 脚本期间发生错误
【发布时间】:2017-12-13 18:14:08
【问题描述】:

我正在尝试创建一个简单的 Python 脚本,该脚本将从 Maya 中调用 MEL 脚本来创建立方体。耶!应该相当直截了当,尽管我可能弄错了源文件的语法。

这是我所拥有的:

runMEL.py Python 文件: 将 maya.mel 导入为 mel

def runMEL():
  print ("Running MEL from Python!")
  mel.eval('"source D:\Maya_Python\myMELScript.mel;"') # source of the file
  mel.eval("myMELScript;") #name of the function

runMEL() # call the function above

还有 MEL 脚本 myMELScript.mel

global proc myMELScript()
// call a MEL script with Python
{
  polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
  print("MEL just made a cube!");
}

我从控制台得到以下信息:

Running MEL from Python!
// Error: "source D:\Maya_Python\myMELScript.mel;"; // 
// Error: Line 1.40: Syntax error // 
# Error: RuntimeError: file <maya console> line 5: Error occurred during execution of MEL script
Line 1.40: Syntax error #

【问题讨论】:

  • 您是否有特定的原因要通过笨拙的 mel 来处理这个问题?

标签: python file maya mel


【解决方案1】:

您几乎做对了,您必须将路径作为字符串传递并转义它。此外,mel 对前向 / 和后向 \ 斜杠很挑剔,它期望 /

应该这样做:

mel.eval('source "D:/Maya_Python/myMELScript.mel"')

注意:通常在 python 中,您可以编写 Path 以及

D:\\Maya_Python\\myMELScript.mel

但是 mel 不够聪明,所以它会转义转义符号 :D

【讨论】:

  • mel.eval('source "D:/Maya_Python/myMELScript.mel"') 不会那么混乱
  • 哦,是的,确实,看起来好多了!还有更多 pythonic 感谢您的贡献。下次请编辑,我会接受的:)
  • 谢谢。最后一件事,分号是否只需要在第二个 eval 行上?
  • 如何使用 MEL 中的相对路径执行此操作?谢谢。
  • @GhoulFool 如果 MEL 命令是多行,则除最后一行之外的所有命令都需要分号。最后一行由文件末尾分隔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多