アサイン
アサインとは
コマンド・プロシージャーなどからの返り値を別のコマンドで利用したいときには
バッククォート ` を使って変数に代入する。
$変数名 = ` コマンド ` ;
例えば、ls -slというコマンドを使うと、現在選択されているオブジェクト名が表示される(返ってくる)が、それらのオブジェクト名を変数に代入するには以下のようにする。
$names = `ls -sl`;
また、getAttrで球(nurbsSphere1)のアトリビュート(x軸方向の移動値tx)を変数に代入する時は以下のようにする。
$tx = `getAttr nurbsSphere1.tx`;
アサインの例
選択された物体のx座標が$disより大きければ、その物体を消去するMELスクリプト。
- 以下のMELスクリプトをdeleteObjects1.melという名前で作る。
global proc deleteObjects1(float $dis)
{
$names = `ls -sl`;
for( $n in $names )
{
$x = `getAttr ($n + ".tx")`;
if($x > $dis)
{
delete $n;
}
}
}
- MAYAを立ち上げる。
- 一番上のメニューバーから Window -> General Editors -> Script Editor によって
Script Editor を表示する。
- Script Editorの File -> Source Script によってdeleteObjects1.melを読み込む。
- 球その他のオブジェクトを適当に作っておく。
- そのオブジェクトのいくつかを選択する。
- コマンドラインからdeleteObjects1(5);と打ち込んで実行する。
- 選択されたオブジェクトでx座標が5以上のものが消去される。
->
練習
- 上のスクリプトを参考にしてy座標の位置がある値以上の時にもオブジェクトが消去されるMELスクリプトをdeleteObjects2.melという名前で作ってみよう。
例えばdeleteObjects2(5, 7)と実行すると、xが5以上またはyが7以上のオブジェクトが消去される。
->
- 次に原点からの距離がある値以上の時にオブジェクトが消去されるMELスクリプトをdeleteObjects3.melという名前で作ってみよう。
例えばdeleteObjects3(5)と実行すると、原点からの距離が5以上のオブジェクトが消去される。
->
まとめ
- コマンド・プロシージャーの結果を変数に代入またはコマンドの一部で使用する時はバッククォートを使用する。
- 配列中の要素を一つづつ変数に代入してコマンドを実行するには以下のfor文を使用する。
for( $変数 in $配列 )
{
コマンド;
}
参考
Prev | Next
Home | Contents
abe@injapan.net