項目の選択(チェックボックス)
チェックボックス
いくつかある項目の中から複数の項目を選ぶ場合はチェックボックスを使用する。
- checkBox(チェックボックス)
- オンとオフができるコントロール。
- checkBoxGrp
- 複数(1 〜 4)個のチェックボックスを横に並べたもの。
チェックボックスが選ばれているかどうかを調べるには以下の方法がある。
- チェックボックスの名前を自分で決めて利用する場合
例えば、以下のようにすると X というラベルのついた sampleCheckBox という名前のチェックボックスが作られる。
checkBox -label "X" sampleCheckBox;
この sampleCheckBox という名前のチェックボックスが押されていたら何かコマンドを実行するには以下のように記述する。
(checkBox -q -value によってオンなら true、オフなら false が返される。)
if(`checkBox -q -value sampleCheckBox`) ← アサインを使用していることに注意すること
{
オンの場合に実行したい MEL コマンド または プロシージャ
}
- チェックボックスの名前をつけない場合
MEL によってつけられたチェックボックスの名前を適当な変数に代入して利用する。
string $checkButton1 = `checkBox -label "X"`;
この $checkButton1 という変数に入っている名前のチェックボックスが押されている場合に、何かコマンドを実行するには以下のように記述する。
if(`checkBox -q -value $checkButton1`)
{
オンの場合に実行したい MEL コマンド または プロシージャ
}
チェックボックスの使用例
チェックボックスによって X 方向にスケールされた球を作る GUI を作ってみよう。
チェックボックスにチェックが入っている時にだけ X 方向に 2.0 のスケールをかけるスクリプトである。
また、今回はクリックするとウインドウを消去する Close ボタンをつけてみよう。
- 以下の MEL スクリプトを checkBox1.mel という名前で作る。
global proc makeSphere()
{
global string $checkBox1;
float $x = 1.0;
if(`checkBox -q -value $checkBox1`)
{
$x = 2.0;
}
sphere;
scale $x 1.0 1.0;
}
string $windowName = `window -title "checkBox1"`;
columnLayout;
text -label "make Sphere";
string $checkBox1 = `checkBox -label "X"`;
button -label "OK" -command "makeSphere()";
button -label "Close" -command "deleteUI $windowName";
showWindow;
- Script Editor の によって checkBox1.mel を読み込む。
- 以下のようなウインドウが表示される。
- そのまま X チェックボックスにチェックを入れないで OK ボタンを押すとスケールのかからない球が作られる。
- Xチェックボックスにチェックを入れて OK ボタンを押すと X 方向に 2.0 のスケールのかかった球が作られる。
スクリプトの解説
global proc makeSphere()
- このプロシージャが OK ボタンによって実行される。
以下は makeSphere() の中身。
-
global string $checkBox1;
- チェックボックスの名前が入った外部変数 $checkBox1 の宣言。
このプロシージャ(makeSphere)の外側で宣言された(される)変数をプロシージャ内で使用するときは global を変数宣言の前につける。
float $x = 1.0;
- X方向のスケール値を表す float の変数 $x を宣言し、初期値として 1.0 を代入しておく。
チェックボックスがチェックが入っていなければ、この値で球をスケールする。
if(`checkBox -q -value $checkBox1`)
{
$x = 2.0;
}
- $checkBox1 に名前の入っているチェックボックスにチェックが入っていれば、$x に 2.0 を代入する。
sphere;
- NURBSの球を作る。
scale $x 1.0 1.0;
- $x の値を X 方向のスケール値としてスケールをかける。
string $windowName = `window -title "checkBox1"`;
- checkBox1 というタイトルのついたウインドウを作る。
作られたウインドウの名前は $windowName という変数に代入される。
columnLayout;
- 部品を縦1列に並べる。
text -label "make Sphere";
- make Sphere というテキストを表示。
string $checkBox1 = `checkBox -label "X"`;
- X というラベルのついたチェックボックスを作る。
作られたチェックボックスの名前は変数 $checkBox1 に代入される。
button -label "OK" -command "makeSphere()";
- OK ボタンを作る。
ボタンを押すと makeSphere() が実行される。
button -label "Close" -command "deleteUI $windowName";
- Closeボタンを作る。
ボタンを押すと、deleteUI コマンドによって $windowName に入っている名前のウインドウ(自分自身)が消去される。
showWindow;
- ウインドウを表示する。
練習
- 上の使用例を参考にして checkBox2.mel を作り、Y と Z 方向のチェックボックスを追加せよ。
Y, Z にチェックを入れた場合も、X と同じように Y, Z それぞれの方向に 2.0 のスケールがかかるようにすること。
- checkBox2.mel を参考に checkBox3.mel を作り、プリミティブのスケール値をチェックボックスにチェックの入っている方向に対して、同時にスライダーによって同じ値に変化させることができるものにしよう。
checkBox3.mel の実行結果
X と Z のチェックボックスにチェックを入れ、スライダーの値を 2.5 にして OK ボタンを押した結果
まとめ
- 複数の項目の中からいくつかを選ぶには checkBox を使用する。
- チェックボックスから値を得るには -q -value を使用する。
- ウインドウを消去するためには deleteUI コマンドを使用する。
練習課題
参考
Prev
Home | Contents
Mail