2011-12-12 85 views
0

所以我需要將數組傳遞到global procedure,但像往常一樣,我必須重新定義它。我知道這是一個noobie問題,但可以將數組作爲過程傳入?如果不是,它是否可以成爲全球性的並插入到程序中。將數組傳遞到全局過程

$selectedFace = `ls -selection` ; 

global proc crTestScripts($selectedFace) { 
    print ("OMG aren't lists of things awesome?!" + $selectedFace) ; 
} 

$selectedFace = `ls -selection` ; 
global array? $selectedFace ; 

global proc crTestScripts() { 
    global array? $selectedFace ; 
    print ("OMG aren't lists of things awesome?!" + $selectedFace) ; 
} 

我傳遞這個字符串,我仍然得到這個錯誤:

Error: Wrong number of arguments on call to applyCurrentType

下面是代碼樣本:

string $selectedFace[] = `ls -sl` ; 

global proc applyCurrentType (string $selectedFace[]) { 
    print("Apply Current Type button clicked\n") ; 
    global int $applyCurrentType ; 
    $applyCurrentType = 1 ; 
    select -cl ; 
    select $selectedFace ; 
    crTestScripts ; 
} 
+0

我知道這件作品遲到了,但是t他得到的錯誤可能是由於你如何調用你的applyCurrentType()函數。如果你可以從頭開始,我們可能會幫助更多? (該調用應該看起來像:'applyCurrentType($ selectedFace)'methinks) – tanantish

回答

0

我ü sed proc createControllers(string $name[], int $position)在採取數組的自動鑽機腳本中。在使用mel的時候,我遠離使用全局術語,因爲maya是挑剔的,只要使用rehash函數來更改腳本;

proc buildRig() 
{ 
    string $rootNode[]=`ls -sl`; 
    createControllers($rootNode, 0);  
} 

proc createControllers(string $name[], int $position) 

爲我工作。在proc createControllers我的$name陣列等於我的$rootNode陣列。

希望能幫到你,祝你好運!

+0

我很感激幫助!我以爲我瘋了,我的意思是當然一個數組可以通過一個程序!但它仍然不適合我。 我傳遞INT這個字符串,我仍然得到這個錯誤: 錯誤:數量上調用的參數錯誤的applyCurrentType 這裏是代碼的樣本: 串$ selectedFace [] ='LS -sl' ; global proc applyCurrentType(string $ selectedFace []){ \t print(「Apply Current Type Type buttoned clicked \ n」); \t global int $ applyCurrentType; \t $ applyCurrentType = 1; \t select -cl; \t select $ selectedFace; \t crTestScripts; } –

0

我以前的答案是錯的。

所以要通過陣列分成PROC u需要重新定義它爲全局變量, string $selectedFace[];將變得 global string $selectedFace[]; 內部過程。例如:

string $selectedFace[] = filterExpand("-sm", 34, `ls-selection`); 

global proc crTestScripts(){ 

    global string $selectedFace[]; 
    print $selectedFace; 
} 

crTestScripts(); // result: body_skinPrx_finalSkin.f[103]

filterExpand給出了兩個好處,它變平陣列ls -fl,和u可以使用多種過濾器-sm 34 -sm 31

或者,我認爲最好的辦法... (我不喜歡全局變量) 只需在圓括號中使用變量聲明的正常語法來表示參數:

global proc proc_name(*args_here){ somecode; return; }

* ARGS:

string $str, string $ls_str[], float $scaleX, float $scale[];.. vector $vec etc.

global proc hide_items(string $items[]){ 
    hide $items; 
} 

使用前面的列表結果$selectedFace

hide_items($selectedFace);

哎呀......我忘了瑪雅無法隱藏的面孔由xD