如何在 Maya 的 MEL 中获取拖放文件的路径

问题描述

将 Maya MEL 文件拖放到 Maya 中,MEL 文件内容将被执行。 拖拽时有没有办法获取文件绝对路径

解决方法

希望这能让你开始

test.mel

global proc FindMe() {}

print("whatIs result -> " + `whatIs "FindMe"`);

将文件拖放到 Maya 中会产生以下输出:

> source "C:/Users/itypewithmyhands/Desktop/test.mel";
> whatIs result -> Mel procedure found in: C:/Users/itypewithmyhands/Desktop/test.mel

需要注意的有趣点:

  1. 拖放似乎只是生成一个 source <file> 语句,这意味着您必须执行一些我不知道的内部魔术才能知道该文件是实际被删除还是只是来源
  2. 您搜索的 proc 必须标记为全局

您需要对 whatIs 命令的结果进行正则表达式(或类似的处理)才能获得您想要的路径。像 .*found in: (.+?\.mel) 这样的东西似乎工作得很好。 Example