ON-BLOG

CGのこと、あれこれ書いてます。

XSIユーザーから観たMELスクリプトについて 其の八

続き

次はラジオボタン
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;

処理的にはラジオボタンがついてるオブジェクトを生成するというものです。
f:id:tommy_on:20130616001100p:plain
チェックボックスとほぼ同じですね。。。。
あと、
ロジックの書き方は、慣れなような気がします。
内容を抜粋して書くとしたらこの部分、

radioButton -label "球体" -select radioButton1;

この一文でラジオボタンを生成してます。
ラジオボタンチェックボックスかこれは
個々の判断になるんでしょうね。


ではSIではこんな感じ。

var oP = ActiveSceneRoot.AddProperty('CustomProperty',false,"OPI" );
oP.AddParameter2 ( "types",  siInt4,  0 );
var oL, oItem;
oL = oP.PPGLayout;
oL.AddGroup("球作成");
          oL.AddRow();
                        var type = Array( "Sphere", 0, "Cube", 1);
                        var oItem = oL.AddEnumControl ( "types", type, "種類", siControlRadio );
           oL.EndRow();
oL.AddButton("Set","作成");
oL.EndGroup();
oL.Logic = Set_OnClicked.toString();
oL.Language = "JScript" ;
function Set_OnClicked()
{
var ty = PPG.types.value;
        if(ty == 0)
                {
                CreatePrim("Sphere", "NurbsSurface");
                }
        if(ty == 1)
                {
                CreatePrim("Cube", "NurbsSurface");
                }
}
InspectObj( oP, null, null, siLock );

f:id:tommy_on:20130616001415j:plain
特にチェックボックスと変わらないですね。
ここで

var oItem = oL.AddEnumControl ( "types", type, "種類", siControlRadio );

配列を使ってリスト化してる所ぐらいでしょうか?

また「siControlRadio」この部分がリストの表示形態を指定しています。
あ、そうそう
リストは他にもこれだけあります。
http://download.autodesk.com/global/docs/softimage2013/ja_jp/sdkguide/si_om/siPPGControlType.html
おすすめは
「siControlListBox」
こんな感じです。
f:id:tommy_on:20130616002256j:plain

たぶんこれかラジオボタンしか使ってない気が。。。

まぁこんな感じでラジオボタン配置できました。

次はwindowのレイアウトに関して。
色々とMELの良さが見えるはず。。



では…