我在寻找在 mel 脚本中调用 python 函数的方法时遇到了一些麻烦。
基本上,我有一些 Mel scipts,其中一个在 Maya 中创建了一个新架子,其中有一些照明工具按钮(spotLight、areaLights 等)
由于我在脚本方面还是个菜鸟,更何况我目前只学过python,至于mel,我知之甚少。这对我来说是一个很大的障碍。我尽量不要过多地编辑任何脚本,以减少混乱和我发生的任何错误。
在我的启动代码中,有几个按钮使用 .xpm 和 .png 作为其图标。在最后几行中,ext 最初是 .xpm 并且我将其更改为 .png 在我意识到我仍然需要一些 .xpm 图标后被认为是错误的。那么 MEL 中有 OR 函数吗?
global proc shelf_lighting() { if (Dpublishmel("objGetMultiConfigs \"objkind\" \""+$show+"\" \"\" \"\" \"maya\" 1", $result)) { string $kindRows[] = stringToStringArray($result[0], ";;"); $objkinds = $kindRows; } string $aboutString = `about -v`; string $aboutStringArr[] = stringToStringArray($aboutString, " "); string $versionStringTemp = $aboutStringArr[0]; string $versionString = match("[0-9]+[\.]*[0-9]+", $versionStringTemp); float $version = $versionString; string $pycmd = "evalDeferred \"python(\\\"^1s\\\")\""; string $ext = ".png"; if ( int($version) > 2009 ) { $ext = ".png"; } }
我正在尝试从"source \"rexLightFuncs.mel\";\nrexSpotLightCreate \"\";"`;更改命令 到如下代码所示的那个。这是一个 python 函数,我正在尝试将它合并到 mel
import DLightBuild.DLightBuild as build light=build.DLightBuild();light.createLight('spotLight');
这个 python 命令的文件来自 /tools/utils/maya/python/DLightBuild,包含 .py 文件 - DLightBuild,由于某种原因,它不起作用,因为我从我在谷歌某处看到的一个例子中得出这个搜索。
$spotLightButton = `shelfButton -enableCommandRepeat 1 -enable 1 -width 34 -height 34 -manage 1 -visible 1 -label "Create a Spot Light" -image1 "spotLight.png" -style "iconOnly" -command "import sys;sys.path.insert(0, \"/tools/utils/maya/python/DLightBuild/\");import DLightBuild.DLightBuild as build;reload(build);light=build.DLightBuild(); light.createLight('spotLight')" -sourceType "python";
最后,每当我尝试对我的代码进行测试运行时,查看图标图像是否正确以及它是否正在执行正确的功能......如果我只是
shelfButton
按照代码第二部分中看到的那样运行它(顺便说一句,在 Mel 中),它在我的 scriptEditor 末尾创建了一个按钮(它就像下面的另一个停靠窗口),而不是在我现有的架子或新架子中。对此有何建议?
感谢为提出的任何问题提供的任何建议。提前谢谢了