ロールアウト フロータ ウィンドウ

MAXScript では、Rollout Floaters と呼ばれるモードレス フローティング ダイアログ ウィンドウを作成し、ロールアウト定義を使用して定義したロールアウトを表示できます。

ユーザは、ウィンドウの下端をドラッグしてロールアウト フロータ ウィンドウのサイズを変更できます。

これをサポートするのが、次の 2 つの関数と 1 つの特殊なクラスです。

newRolloutFloater <title_string> <width_integer> <height_integer> [<top_integer> <left_integer>] \
     [lockHeight:<boolean>] [lockWidth:<boolean>] [autoLayoutOnResize:<boolean>] scrollBar:<on|off|#on|#off|#asNeeded>

タイトル、幅および高さが与えられている状態で、新規のロールアウト フロータ ウィンドウを作成し、開きます。一番上と左の座標を指定しない場合、ウィンドウは画面の中央に開きます。ユーティリティ パネル ロールアウトに正確に適合する幅を複製する場合は、3ds Max コマンド パネルの幅を 218 にします。このメソッドは、ロールアウトを追加する RolloutFloater の値を返します。

lockHeight および lockWidth 引数は、ロールアウト フロータの高さおよび幅をロックするかどうか(つまりサイズ変更を無効にするかどうか)を指定します。3ds Max 2019 以降で使用可能です。 既定値は lockHeight:false および lockWidth:true です。

autoLayoutOnResize 引数は、ロールアウト フロータのサイズが変更されたときに、その中のロールアウトを自動的に再レイアウトするかどうかを指定します。3ds Max 2019 以降で使用可能です。 既定値は true です。

scrollBar 引数は、フロータにスクロールバーを追加して、その中のロールアウトをスクロールするかどうかを指定します。3ds Max 2019 以降で使用可能です。 既定値は #asNeeded で、ロールアウト フロータがその中のロールアウトよりも小さい場合のみスクロールバーが表示されます。

closeRolloutFloater <rolloutFloater>

ロールアウト フロータ ウィンドウを閉じます。ユーザはウィンドウ上のクローズ ボックスをクリックしてもウィンドウを閉じることができます。いったんウィンドウを閉じると、使用できなくなります。ロールアウト フロータ ウィンドウのロールアウト内のクローズ ハンドラはすべて呼び出され、他のロールアウト フロータ ウィンドウやスクリプトで書かれたユーティリティで使用できるように開放されます。

ユーティリティ パネルにロールアウトを追加、削除するための既存の関数が拡張され、ロールアウト フロータ ウィンドウで作用します。

addRollout <rollout> [ <rolloutFloater> ] [rolledUp:<boolean> ] [border:<boolean>]

オプションの 2 番目の引数を指定する場合は、newRolloutFloater() 関数から返される RolloutFloater 値を指定する必要があります。最初の引数で定義されたロールアウトは、ウィンドウに既に存在しているロールアウトの後に追加されます。

オプションの rolledUp: キーワード引数が指定されている場合、ロールアウトは、True に設定されている場合はロール アップされた(閉じた)状態で初期表示され、False に設定されている場合はロール ダウンされた(開いた)状態で初期表示されます。

オプションの border: キーワード引数が 3ds Max 2009 以降で指定され、false に設定されている場合、ロールアウトは境界線なしで表示されます。 キーワード引数が指定されていない場合、または True に設定されている場合、ロールアウトの周囲に境界線が表示されます。

removeRollout <rollout> [ <rolloutFloater> ]

指定されたロールアウト フロータ ウィンドウからロールアウトを削除します。

上記の両関数において、オプションの <rolloutFloater> を指定しない場合、ロールアウトは[ユーティリティ] (Utilities)パネルに追加、または[ユーティリティ] (Utilities)パネルから削除されます。詳細については、「スクリプトで書かれたユーティリティでの複数のロールアウトの管理」を参照してください。

ロールアウト フロータ プロパティ:

<rolloutFloater>.title String

フロータのタイトル。

注:

ダイアログ バーとして登録されたロールアウト フロータのタイトルは変更できません。

<rolloutFloater>.size Point2

ピクセル数による現在の RolloutFloater ウィンドウのサイズです。Point2 の最初のコンポーネントは幅、2 番目のコンポーネントは高さです。このプロパティは、読み込み/書き込み可能です。

注: ロールアウト フロータが拡張ビューポート内にある場合、.size および .position プロパティによってビューポートのサイズと位置がレポートされます。この場合、プロパティは設定できません。
<rolloutFloater>.pos Point2

Point2ピクセルによる現在のロールアウト フロータ ウィンドウの画面上の位置です。このプロパティは、読み込み/書き込み可能です。

注:

ロールアウト フロータが拡張ビューポート内にある場合、サイズおよび位置のプロパティによってビューポートのサイズと位置がレポートされます。この場合、プロパティは設定できません。

ユーザが、またはスクリプトで、size プロパティを変更し、ロールアウト フロータ ウィンドウをリサイズすると、resized イベントがロールアウト フロータ ウィンドウの最初のロールアウトに対して生成されます。同様に、ユーザが、またはスクリプトで、pos プロパティを変更し、ロールアウト フロータ ウィンドウを移動すると、moved イベントがロールアウト フロータ ウィンドウの最初のロールアウトに対して生成されます。resized および moved イベントに対するイベント ハンドラについては、「ユーティリティおよびロールアウトのプロパティ、メソッド、およびイベント ハンドラ」を参照してください。

<rolloutFloater>.inViewport Boolean, read-only.

フロータが拡張ビューポート内にある場合は True を返します。

<rolloutFloater>.open Boolean, read-only.

フロータが開いている場合は True を返します。

<rolloutFloater>.visible Boolean

ロールアウト フロータの可視性を取得/設定します。3ds Max 2014 以降で使用可能です。

True (既定値)に設定すると、ロールアウト フロータが表示されます。

False に設定されると、ロールアウト フロータは描画されません。ただし、ロールアウト フロータとそのロールアウトは引き続き MAXScript からアクセス可能です。

注: これは、3ds Max の古いバージョンで使用されることのあったロールアウト フロータを画面外に配置するハックの代わりに使用できます。3ds Max 2014 以降では、画面外のダイアログはすべて自動的にビュー内に戻されます。
<rolloutFloater>.dialogBar Boolean, read-only.

ロールアウト フロータがダイアログ バーとして使用されている場合は True を返します。

<rolloutFloater>.rollouts Array of rollouts in floater, read-only

フロータ内のすべてのロールアウトの配列を返します。

<rolloutFloater>.placementName, enums:{#minimized|#maximized|#normal}

このプロパティは、ダイアログ ボックスが最小化、最大化、標準のどの状態にあるのかを取得/設定します。ロールアウトがダイアログ ボックス内に存在しないか、ダイアログ ボックスがダイアログ バーであるかビューポート内にある場合、'undefined' を返します。

このプロパティは、dialogBar でもなくビューポート内にもない Rolloutfloaters に対して有効です。

注: このプロパティは 3ds Max 6 以降 で使用できるようになりました。
注:

サブロールアウト内のロールアウトはダイアログ バーまたはビュー ウィンドウとして登録できません。 ロールアウトまたはロールアウト フロータはダイアログ バーとビュー ウィンドウのどちらとしても登録できません。

すべてのロールアウトの / open 状態と、パネル全体の .scrollPosclose ハンドラの処理中に記録した後で、open ハンドラの値をリセットすることにより、スクリプト ロールアウトのロールアウト状態の保存と復元の形式を実装することができます。

<rolloutFloater>.lockHeight Boolean

フロータの境界をドラッグしてフロータの高さを変更できない場合は、True です。3ds Max 2019 以降で使用可能です。

<rolloutFloater>.lockWidth Boolean

フロータの境界をドラッグしてフロータの幅を変更できない場合は、True です。3ds Max 2019 以降で使用可能です。

<rolloutFloater>.autoLayoutOnResize Boolean

サイズを変更したときの自動レイアウトがフロータで有効になっている場合は、True です。3ds Max 2019 以降で使用可能です。

<rolloutFloater>.hwnd IntegerPtr, read-only

フロータが開いている場合はフロータのウィンドウ ポインタを整数ポインタとして含みます。フロータが閉じている場合は undefined を含みます。

3ds Max 2020 以降で使用可能です。

例:

    rollout grin "Grin Control"
    (
    slider happy "Happy" orient:#vertical across:5
    slider sad "Sad" orient:#vertical
    slider oo "OO" orient:#vertical
    slider ee "EE" orient:#vertical
    slider oh "OH" orient:#vertical
    /*
    on happy changed val do object.xform1.center = ...
    on sad changed val do object.xform2.gizmo.rotation = ...
    ...
    */
    )
    theNewFloater = newRolloutFloater "Grinning" 300 220
    addRollout grin theNewFloater