制御構造(if)
条件によるコマンドの実行
プログラムを作成する時に、ある条件にしたがってコマンドの実行をするかしないかを決めたり、
この条件の時にはこのコマンド、違う条件の場合には別のコマンドを実行したいと思った場合には、
条件によってコマンドの実行を制御します。
Python においては、ある条件が満たされる場合だけコマンドを実行するために
if 文と呼ばれるものを使用します。
以下の条件式の部分には、前章「制御構造(ループ)」で説明したものをそのまま使用できます。
if の使用例
if 文の使用例として半径 rad が 5.0 以下の場合は円上に球を、
半径が 5.0 以上の場合はキューブを num 個並べる Python スクリプトを作ってみましょう。
- 以下の MEL スクリプトを Python スクリプトに書き直して、
circleObjects1.py という名前で保存します。
global proc circleObjects1(float $rad, int $num)
{
int $i;
float $r = 0.0;
float $add = 360.0 / $num;
for($i = 0; $i < $num; $i ++)
{
if($rad <= 5.0)
{
sphere;
}
else
{
nurbsCube;
}
move $rad 0 0;
rotate -ws -p 0 0 0 0 $r 0;
$r += $add;
}
}
- スクリプト エディタ の によって circleObjects1.py を読み込んで、テンキーの Enter キーなどによって実行します。
- スクリプト エディタ のインプットウインドウに circleObjects1(4, 6) と打ち込んで実行します。
- 半径1の球が半径 4 の円上に 6 個作られます。
- スクリプト エディタ のインプットウインドウに circleObjects1(6, 7) と打ち込んで実行します。
- 一辺 1 のキューブが半径 6 の円上に 7 個作られます。
練習
- 上の circleObjects1.py を参考にして、circleObjects2.py を作り半径が 10.0 以上の時はコーン(cone)が作られるようにしてみましょう。
(それ以外は circleObjects1.py と同じ)
circleObjects2(11, 8) の実行結果
- circleObjects3.py という Python スクリプトを if を使って以下のように作ってみましょう。
circleObjects3(作るプリミティブの種類, プリミティブを並べる円の半径, プリミティブの個数)
プリミティブの種類は以下のように番号で指定してください。
- 1
- 球(sphere())
- 2
- キューブ(nurbsCube())
- 3
- シリンダー(cylinder())
(使用例)
以下のように順番に実行してゆくと、実行結果が図のようになってゆくはずです。
- circleObjects3(1, 3, 4)
半径 1 の球(sphere())が半径 3 の円のまわりに 4 個作られます。
- circleObjects3(2, 6, 5)
一辺 1 のキューブ(nurbsCube())が半径 6 の円のまわりに 5 個作られます。
- circleObjects3(3, 8, 6)
半径 1、高さ 2 のシリンダー(cylinder())が半径 8 の円のまわりに 6 個作られます。
- circleObjects4 という名前の MEL スクリプト作り、
スクリプトエディタ から読みこんで実行すると、円上に球とコーンが交互に並ぶようにしてください。
(プロシージャ名と引数)
circleObjects4(円の半径, 個数)
(個数/ 2 個の球とコーンが並ぶ。)
例えば、スクリプトエディタ のインプットウインドウで circleObjects4(7.0, 6) を実行すると、
以下の図のように 半径 7.0 の円上に 3 個づつの球とコーンが交互に並ぶようにしてください。