从 PyMel 调用 MEL 脚本时,我可以报告更详细的结果吗?

Can I report more detailed results when invoking a MEL script from PyMel?

考虑以下简单的 PyMEL 脚本。它基本上调用现有的 MEL 函数。

from pymel import *

message = "Are you sure you want to clean the scene? (Nodes will be removed.)"
do_clean = core.windows.confirmBox("Scene clean", message)

if do_clean:
    result = mel.eval("MLdeleteUnused()")

print(result)

"result" 包含从场景中删除的节点数,而不是 删除了哪些 个节点。但是,在脚本编辑器中,我在调用脚本时看到以下输出:

delete "edit_example_20160209_1"; # < can I get this output?
delete "edit_screenshot_1";
delete "place2dTexture1";
delete "place2dTexture2";
4 # < output from my print statement

我能否访问此输出以便将其显示给用户(无需他们自己查看脚本编辑器)?

您可以查看 MLdeleteUnused()<path_to_your_maya_install/scripts/others/MLdeleteUnused.mel 中的工作方式 看起来 UI 版本的命令正在调用执行实际打印结果的进度函数,但是它没有 return 值——它基本上只是打印出来