我在尋找方法在mel腳本中調用python 函數時遇到了一些麻煩。如何在Mel中調用Python以及圖標擱置問題
基本上,我有其中一個在Maya和裏面創建一個新的貨架 幾個梅爾scipts,有幾個照明工具按鈕(聚光燈, areaLights等)
正如我還是一個菜鳥在腳本,更不用說到目前爲止我 只有在python學習,至於梅爾我知道一點 沒有。這對我來說是一個很大的障礙。我試圖不要編輯 任何腳本太多,以減少我的錯誤和任何 錯誤。
在我的啓動代碼中,有一些按鈕使用.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"; } }
我試圖從更改命令 「源\」 rexLightFuncs.mel \ 「; \ nrexSpotLightCreate \」 \ 「;」`;到下面的代碼中顯示的那個。 這是一個Python函數,我試圖將其納入梅爾
import DLightBuild.DLightBuild as build light=build.DLightBuild();light.createLight('spotLight');
這條巨蟒的命令的文件來自/工具/ utils的/瑪雅/蟒蛇/ 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(它就像下面的另一個對接窗口)的末尾創建一個按鈕,而不是在我現有的書架或新書架中。對此有何建議?
欣賞所提出的任何問題的建議。提前非常感謝
目前,當我運行我的Mel代碼作爲一個整體時,我不斷收到語法錯誤'錯誤:行852.140:語法錯誤//',我無法弄清楚我哪裏出錯了。如果我刪除或添加一個';',它會認爲我的下一行是一個未聲明的變量 它通常發生在這兩行之間: '-command「python(\」import DLightBuild.DLightBuild as build; light = build.DLightBuild ); light.createLight('spotLight')\「)」;'和'$ sunLightBtn = shelfButton' – dissidia
字符串中是否有返回值? – theodox
證明語法錯誤是由於'符號丟失引起的。問題解決了 – dissidia