command は、二重引用符で囲んだコマンド文字列、またはコマンドを表す文字列型変数です。
string $cmd = "select -cl";
eval($cmd);
1 番目の文は、select -cl というコマンド文字列を文字列型変数 $cmd に代入します。2 番目の文は、$cmd の内容(select -cl コマンド)を実行します。
string $mycommand = "sphere";
eval($mycommand+"-r 5");
1 番目の文は sphere という文字列を変数 $mycommand に代入します。2 番目の文により、「-r 5」が文字列「sphere」の後ろに追加され、「sphere -r 5」というコマンドが実行されます。これによって、半径が 5 グリッドの球体が作成されます。
string $a[];
$a = eval("ls -lights");
print($a);
1 番目の文は $a という文字配列を定義します。2 番目の文は MEL コマンド ls -lights を実行し、その出力を配列 $a に割り当てます。3 番目の文は $a の内容を スクリプト エディタ(Script Editor)に次のように表示します。
ambientLightShape1
directionalLightShape1
コマンドの出力結果を表す行が、それぞれ新しい行に表示されます。コマンドの出力結果の各行は配列の要素です。Maya では配列の各要素が新しい行に出力されます。
Maya の scripts ディレクトリに bunk.mel という MEL スクリプト ファイルを作成します。このスクリプト ファイルでは次のプロシージャを定義します。
global proc string bunk()
{
string $fog;
if (rand(2) < 1)
$fog = "particle";
else
$fog = "sphere";
return $fog;
}
string $name = bunk();
eval($name);
print($name);
エクスプレッションの 1 番目の文は、bunk.mel スクリプト ファイル内の bunk プロシージャを実行します。bunk プロシージャでは、if-else 文中の rand(2) 関数によって 0 ~ 2 の範囲の浮動小数点乱数が生成された後、その乱数の値が 1 と比較されます。
値が 1 未満の場合は、$fog 変数に particle という MEL コマンド文字列が代入されます。値が 1 以上の場合は、$fog 変数に sphere という MEL コマンド文字列が代入されます。
このプロシージャの実行が完了すると、エクスプレッションのコール側プロシージャである bunk() に $fog 変数の値が渡され、その値(MEL コマンド文字列)が $name 変数に代入されます。
eval 関数は、$name の MEL コマンド文字列を実行します。たとえば、particle というコマンドが実行されると、ワークスペースの原点にパーティクルが作成されます。