項目の選択(ラジオボタン)
ラジオボタン
いくつかの項目中から 1 つだけ選びたい場合はラジオボタンを使用します。
ラジオボタンを作るコマンド
- radioButton
- ラジオボタンを作るコマンドです。
ラジオボタンは複数のボタンのうち 1 つだけがオンになるものなので、
どのボタンが、どのグループに属するかを決める必要があります。
そこで、ラジオボタンをグループとしてまとめるには radioCollection コマンドを使用します。
radioButton コマンドと radioCollection コマンドは checkbox コマンドと同じように名前を自分で決めて作ることもできるし、
Maya が決めた名前を変数に代入して利用することもできます。
現在どのラジオボタンが選ばれているかを調べるには以下のコマンドを使用します。
radioButton -q -select radioCollection名;
また、
変数に radioCollection 名が入っている場合は、以下のように実行します。
radioButton -q -select $変数名;
これらのコマンドを実行することよって、オンになっている radioButton の名前が返されます。
具体的な使用例は以下の "ラジオボタンの使用例"を参照してください。
- radioButtonGrp
- 複数(1 ~ 4)個のラジオボタンを横に並べて一つのグループにしたものです。
具体的な使用例は radioButtonGrp のプログラム例を参考にしてください。
ラジオボタンの使用例
ラジオボタンによって 2 種類のプリミティブ、NURBS の球・キューブのうちのどちらかを作る GUI を作ってみましょう。
今回はラジオボタンに radioButton1 などの適当な名前をつけてゆく方法で作成してみます。
- 以下の MEL スクリプトを makePrimitive1.mel という名前で作ります。
global proc makePrimitive1()
{
global string $radioCollection1;
string $selected;
$selected = `radioCollection -q -select $radioCollection1`;
if($selected == "radioButton1")
{
sphere;
}
else if($selected == "radioButton2")
{
nurbsCube;
}
}
string $windowName = `window -title "radioButton1"`;
columnLayout;
text -label "make Primitive";
string $radioCollection1 = `radioCollection`;
radioButton -label "Sphere" -select radioButton1;
radioButton -label "Cube" radioButton2;
button -label "OK" -command "makePrimitive1()";
button -label "Close" -command ("deleteUI " + $windowName);
showWindow;
- スクリプト エディタ の によって makePrimitive1.mel を読み込みます。
- 以下のようなウインドウが表示されます。
- 立方体 ボタンにチェックを入れて、 作成 ボタンを押すと 立方体 が作られます。
スクリプトの解説
global proc makePrimitive1()
- makePrimitive1 という名前のプロシージャーの宣言です。
このプロシージャーが 作成 ボタンによって実行されます。
global string $radioCollection1;
- 外部変数の宣言です。
このプロシージャー(makePrimitive1)の外側で宣言された変数を、
プロシージャ内で使用するときは global をつけておく必要があります。
global が無いと、
変数 $radioCollection1 はプロシージャーの内部で新しく宣言された変数になって、
radioCollection コマンドから返された名前を、プロシージャー内で使用することができなくなります。
string $selected;
- 選ばれたラジオボタンの名前を代入するための変数の宣言です。
$selected = `radioCollection -q -select $radioCollection1`;
- $radioCollection1 という変数に代入されている名前のラジオコレクションの中で、
どのラジオボタンが選ばれているかを調べて、
その名前を $selected という変数に代入します。
-
if($selected == "radioButton1")
-
{
-
sphere;
-
}
- radioButton1 (1つ目のラジオボタンの名前)が選ばれているかどうか調べて、
選ばれていれば sphere コマンドを実行します。
-
else if($selected == "radioButton2")
-
{
-
nurbsCube;
-
}
- radioButton2 (2つ目のラジオボタンの名前)が選ばれているかどうか調べて、
選ばれていれば nurbsCube コマンドを実行します。
string $windowName = `window -title "radioButton1"`;
- radioButton1 というタイトルのついたウインドウを作ります。
作られたウインドウの名前は $windowName という変数に代入されます。
columnLayout;
- 部品を縦 1 列に並べるレイアウトコマンドです。
text -label "プリミティブ作成";
- "プリミティブ作成" というテキストを表示します。
string $radioCollection1 = `radioCollection`;
- ラジオコレクションを作り、その名前を $radioCollection1 という変数に代入します。
これ以降に作られたラジオボタンがひとつのグループになり、
次のラジオコレクションが作られるまでか、
または現在のレイアウトが終るまでがひとつのグループになります。
radioButton -label "球" -select radioButton1;
- ラジオボタンを作り、そのラジオボタンの名前を radioButton1 にします。
-select フラグがついていると最初にこのボタンが選ばれた状態で表示されます。
radioButton -label "立方体" radioButton2;
- ラジオボタンを作り、そのラジオボタンの名前を radioButton2 にします。
button -label "作成" -command "makePrimitive1()";
- 作成 ボタンを作ります。
ボタンを押すと makePrimitive1() が実行されます。
button -label "閉じる" -command ("deleteUI " + $windowName);
- 閉じる ボタンを作ります。
ボタンを押すと、deleteUI コマンドによって、
$windowName に入っている名前のウインドウ(自分自身)が消去されます。
showWindow;
- ウインドウを表示します。
練習
- 上の使用例を参考にして makePrimitive2.mel を作り、ラジオボタンに コーン を追加してください。
- makePrimitive2.mel を参考に makePrimitive3.mel を作り、プリミティブのスケール(X, Y, Z 方向全部)をスライダーによって変化させることのできるものに作り変えてみましょう。
(スライダーの最小値は 0.1、最大値は 10.0 にしてください)
コーン ボタンにチェックを入れて、スライダーの値を 2.5 にして 作成 ボタンを押した結果
まとめ
- 複数の項目の中から、 1 つだけを選ぶラジオボタンを作るには、 radioButton コマンドを使用します。
- ラジオボタンを作るときには radioCollection によってグループにまとめます。
- どのラジオボタンが押されているかを調べるには radioCollection コマンドで -q -select フラグを使用します。
練習課題
参考
Prev | Next
Home | Contents
Mail