項目の選択(ラジオボタン)

ラジオボタン

いくつかの項目中から 1 つだけ選びたい場合は、ラジオボタンを使用します。

ラジオボタンを作るコマンド

radioButton
ラジオボタンを作るコマンドです。
ラジオボタンは、複数のボタンのうち 1 つだけがオンになるものなので、 どのボタンが、どのグループに属するかを決める必要があります。 そこで、ラジオボタンをグループとしてまとめるには radioCollection コマンドを使用します。
radioButton コマンドと radioCollection コマンドは checkbox コマンドと同じように名前を自分で決めて作ることもできるし、 Maya が決めた名前を変数に代入して利用することもできます。
現在、どのラジオボタンが選ばれているかを調べるには、以下のコマンドを使用します。
radioCollection -q -select radioCollection名;
また、 変数に radioCollection 名が入っている場合は、以下のように実行します。
radioCollection -q -select $変数名;
これらのコマンドを実行することよって、オンになっている radioButton の名前が返されます。
具体的な使用例は、以下の "ラジオボタンの使用例"を参照してください。
radioButtonGrp
複数(1 〜 4)個のラジオボタンを横に並べて一つのグループにしたものです。
具体的な使用例は radioButtonGrp のプログラム例を参考にしてください。

ラジオボタンの使用例

ラジオボタンによって 2 種類のプリミティブを作るウインドウを作ってみましょう。 作成するプリミティブは、NURBS の球体とキューブにします。
今回は、ラジオボタンに radioButton1 などの、適当な名前をつけてゆく方法で作成してみます。

  1. 以下の 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;
    
  2. スクリプト エディタ の ファイル → ソーススクリプト によって makePrimitive1.mel を読み込みます。
  3. 以下のようなウインドウが表示されます。
    [radio1.melの実行結果]
  4. 「立方体」 ラジオボタンにチェックを入れて、 「作成」 ボタンを押すと 立方体 が作られます。
    [「ラジオボタン」を押した結果]
    [「作成」 ボタンを押した結果]

スクリプトの解説

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;
ウインドウを表示します。

練習

まとめ

練習課題

参考


Prev | Next
Home | Contents
Mail