項目の選択(チェックボックス)

チェックボックス

いくつかの項目の中から、 1 つ以上の項目を選べるようにしたい場合は、チェックボックスを使用します。
チェックボックスも、 floatSliderGrp や intSliderGrp と同じように、 まずチェックボックスを作成し、 その後で現在のチェックボックスの状態を調べます。

チェックボックスの種類

checkBox(チェックボックス)
オンとオフができるコントロール
checkBoxGrp
複数(1 〜 4)個のチェックボックスを横に並べたもの

チェックボックスの状態を調べる方法

チェックボックスに、チェックが入っているかどうかを調べるには、以下の方法があります。

チェックボックスの使用例

チェックボックスにチェックをいれると、 X 方向にスケールされた球体を作る GUI を作ってみましょう。
以下は、チェックボックスにチェックが入っている時にだけ、 X 方向に 2.0 のスケールをかけるスクリプトです。
また、今回は、クリックするとウインドウを消去する 「閉じる」 ボタンをつけてみましょう。

  1. 以下の 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 "チェックボックス 1"`;
    columnLayout;
    text -label "球体作成";
    string $checkBox1 = `checkBox -label "スケールX"`;
    button -label "作成" -command "makeSphere()";
    button -label "閉じる" -command ("deleteUI " + $windowName);
    showWindow;
    
  2. スクリプト エディタ の ファイル → ソーススクリプト によって checkBox1.mel を読み込みます。
  3. 以下のようなウインドウが表示されます。
    [checkBox1.melの実行結果]
  4. そのまま X チェックボックスにチェックを入れないで、 作成 ボタンを押すと、スケールのかからない球体が作られます。
    [作成ボタンを押した結果]
  5. X チェックボックスにチェックを入れて、 作成 ボタンを押すと、 X 方向に 2.0 のスケールのかかった球体が作られます。
    [チェックボックスにチェックを入れた結果]
    [作成ボタンを押した結果]

スクリプトの解説

global proc makeSphere()
makeSphere というプロシージャの宣言です。
このプロシージャが、 作成 ボタンを押した時に実行されます。
global string $checkBox1;
チェックボックスの名前が入った外部変数 $checkBox1 の宣言です。
このプロシージャ(makeSphere)の外側で宣言された変数を、プロシージャ内で使用するときは global を変数宣言の前につけます。
float $x = 1.0;
X 方向のスケール値を表す float 型の変数 $x を宣言し、初期値として 1.0 を代入しておきます。
チェックボックスにチェックが入っていなければ、この値で球体をスケールします。
if(`checkBox -q -value $checkBox1`)
名前が変数 $checkBox1 に入っているチェックボックスに、チェックが入っているかどうか調べています。
$x = 2.0;
チェックボックスにチェックが入っていれば、$x に 2.0 を代入します。
sphere;
NURBS の球体を作ります。
scale $x 1.0 1.0;
X 方向に $x だけスケールをかけます。
string $windowName = `window -title "checkBox1"`;
checkBox1 というタイトルのついた、ウインドウを作ります。
作られたウインドウの名前は、 $windowName という外部変数に代入されます。
columnLayout;
部品を縦 1 列に並べます。
text -label "球体作成";
球体作成 というテキストを表示します。
string $checkBox1 = `checkBox -label "スケールX"`;
スケールX というラベルのついた、チェックボックスを作ります。
作られたチェックボックスの名前は、外部変数 $checkBox1 に代入されます。
button -label "作成" -command "makeSphere()";
作成 ボタンを作ります。
ボタンを押すと makeSphere() が実行されます。
button -label "閉じる" -command ("deleteUI " + $windowName);
閉じる ボタンを作ります。
ボタンを押すと、deleteUI コマンドによって、 外部変数 $windowName に入っている名前のウインドウ(自分自身)が消去されます。
ここで、 ("deleteUI " + $windowName) の部分が少し複雑なので解説します。
MEL コマンド中に ( ) で囲まれている部分があると、 この中の部分がコマンドを実行する前に処理されます。 ここでは、まず "deleteUI " + $windowName の変数部分が中に入っている文字列で置き換えられます。
"deleteUI " + ウインドウ名 (このウインドウ名の部分は実際には英数字の文字列です)
MEL では + の左右のどちらかが文字列である場合には、 左右を連結して 1 つの文字列にします。
"deleteUI ウインドウ名"
これらの処理が終わった後、button コマンド全体が実行されて、 -command フラグの右にある deleteUI コマンドを含んだ文字列が、 ボタンが押されたとき実行されるコマンドとして登録されます。
(注意)
deleteUI の右にスペースが入っています。 このスペースが無いとエラーになるので注意してください。
showWindow;
ウインドウを表示します。

練習

まとめ

練習課題

参考


Prev | Next
Home | Contents
Mail