項目の選択(ラジオボタン)
ラジオボタン
いくつかの項目中から 1 つだけ選びたい場合は、ラジオボタンを使用します。
ラジオボタンを作るコマンド
- radioButton
- ラジオボタンを作るコマンドです。
ラジオボタンは、複数のボタンのうち 1 つだけがオンになるものなので、
どのボタンが、どのグループに属するかを決める必要があります。
そこで、ラジオボタンをグループとしてまとめるには radioCollection コマンドを使用します。
radioButton コマンドと radioCollection コマンドは
checkbox コマンドと同じように名前を自分で決めて作ることもできるし、
Maya が決めた名前を変数に代入して利用することもできます。
現在、どのラジオボタンが選ばれているかを調べるには、以下のコマンドを使用します。
radioCollection -q -select radioCollection名;
また、
変数に radioCollection 名が入っている場合は、以下のように実行します。
radioCollection -q -select $変数名;
これらのコマンドを実行することよって、オンになっている radioButton の名前が返されます。
具体的な使用例は、以下の "ラジオボタンの使用例"を参照してください。
- radioButtonGrp
- 複数(1 〜 4)個のラジオボタンを横に並べて一つのグループにしたものです。
具体的な使用例は radioButtonGrp のプログラム例を参考にしてください。
ラジオボタンの使用例
ラジオボタンによって 2 種類のプリミティブを作るウインドウを作ってみましょう。
作成するプリミティブは、NURBS の球体とキューブにします。
今回は、ラジオボタンに 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 "ラジオボタン 1"`;
columnLayout;
text -label "プリミティブ作成";
string $radioCollection1 = `radioCollection`;
radioButton -label "球体" -select radioButton1;
radioButton -label "立方体" radioButton2;
button -label "作成" -command "makePrimitive1()";
button -label "閉じる" -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`;
- どのラジオボタンが選ばれているかを調べて、
その名前を $selected という変数に代入します。
調べるラジオボタンの名前は $radioCollection1 という変数に代入されています。
-
if($selected == "radioButton1")
-
{
-
sphere;
-
}
- 1 つ目のラジオボタンの名前が選ばれているかどうか調べて、
選ばれていれば sphere コマンドを実行します。
radioButton1 は、1 つ目のラジオボタンの名前です。
-
else if($selected == "radioButton2")
-
{
-
nurbsCube;
-
}
- 2 つ目のラジオボタンの名前が選ばれているかどうか調べて、
選ばれていれば nurbsCube コマンドを実行します。
radioButton2 は、2 つ目のラジオボタンの名前です。
string $windowName = `window -title "radioButton1"`;
- radioButton1 というタイトルのついたウインドウを作ります。
作られたウインドウの名前は、 $windowName という外部変数に代入されます。
columnLayout;
- ウインドウの部品を、縦 1 列に並べるレイアウトコマンドです。
text -label "プリミティブ作成";
- ウインドウに、"プリミティブ作成" というテキストを表示します。
string $radioCollection1 = `radioCollection`;
- ラジオコレクションを作り、その名前を $radioCollection1
という外部変数に代入します。
これ以降に作られたラジオボタンが 1 つのグループになります。
次のラジオコレクションが作られるまでか、
または、現在のレイアウトが終るまでが 1 つのグループになります。
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 方向全部)をスライダによって変化させることのできるものに作り変えてみましょう。
(スライダの最小値(-min)は 0.1、最大値(-max)は 10.0 にしてください)
コーン ボタンにチェックを入れて、スライダの値を 2.5 にして 作成 ボタンを押した結果
まとめ
- 複数の項目の中から、 1 つだけを選ぶラジオボタンを作るには、 radioButton コマンドを使用します。
- ラジオボタンを作るときには、 radioCollection によってグループにまとめます。
- どのラジオボタンが押されているかを調べるには、
radioCollection コマンドで -q -select フラグを使用します。
練習課題
参考
Prev | Next
Home | Contents
Mail