制御構造(if, switch)
MELにおけるifとswitch
MELにおいて条件・値によってコマンドを実行するかどうかを決めるには、C言語と同じように if, switchなどを使用する。
- ifの文法はC言語とほぼ同じである。
if(条件式)
{
MELコマンド;
.
.
}
if(条件式1)
{
MELコマンド;
.
.
}
else if(条件式2)
{
MELコマンド;
.
.
}
else
{
MELコマンド;
.
.
}
- if文の条件式もC言語とほぼ同じものが使える。
== != < > <= >= && || ( )
- $x < 3
- $xが3より大きいときに正しい
- $y == 5 && $z == 7
- $yが5に等しく、かつ$zが7に等しいときに正しい
- $s != "test"
- $sが文字列testに等しくないときに正しい
- switchの文法もC言語とほぼ同じである。
ただし、switchの値の部分はC言語と違ってint, float, string, vectorなどを使うことができる。
switch(変数)
{
case 値1 :
MELコマンド;
.
.
break;
case 値2 :
MELコマンド;
.
.
break;
default :
MELコマンド;
.
.
break;
}
ifの使用例
半径$radが5.0以下の場合は円上に球を、半径が5.0以上の場合はキューブを$num個並べるMELスクリプト。
- 以下のMELスクリプトをcircleObjects.melという名前で作る。
global proc circleObjects(float $rad, int $num)
{
float $r;
float $add;
float $rr = 360.0;
$add = $rr / $num;
for($r = 0.0; $r < $rr; $r += $add)
{
if($rad <= 5.0)
{
sphere;
}
else
{
nurbsCube;
}
move $rad 0 0;
rotate -ws -p 0 0 0 0 $r 0;
}
}
- MAYAを立ち上げる。
- 一番上のメニューバーから Window -> General Editors -> Script Editor によって
Script Editor を表示する。
- Script Editorの File -> Source Script によってcircleObjects.melを読み込む。
- Script Editorの下のウインドウからcircleObjects(4, 6);と打ち込んで実行する。
- 半径1の球が半径4の円上に6個作られる。
- Script Editorの下のウインドウからcircleObjects(6, 7);と打ち込んで実行する。
- 一辺1のキューブが半径6の円上に7個作られる。
練習
- 上のcircleObjects.melを参考にして、circleObjects2.melを作り半径が10.0以上の時はコーン(cone)が作られるようにしてみよう。
(それ以外はcircleObjects.melと同じ)
circleObjects2(11, 8);の実行結果
- circleObjects3.melというMELスクリプトをswitchを使って以下のように作ってみよう。
circleObjects3(作るオブジェクトの種類, 円の半径, 球の個数)
(使用例)
- circleObjects3(1, 3, 4);
半径1の球が半径3の円のまわりに4個作られる。
- circleObjects3(2, 4, 5);
一辺1のキューブが半径4の円のまわりに5個作られる。
- circleObjects3(3, 5, 6);
半径1、高さ2のシリンダー(cylinder)が半径5の円のまわりに6個作られる。
まとめ
- MELにおけるif, switchはC言語と同じものを使うことができる。
- 条件式もC言語と同じである。
参考
Prev | Next
Home | Contents
abe@injapan.net