SkillAgentSearch skills...

FlexUI

ロールアウトコントロールをフレキシブルに配置するためのフレームワーク。

Install / Use

/learn @imaoki/FlexUI
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

FlexUI

GitHub release (latest by date) GitHub

ロールアウトコントロールをフレキシブルに配置するためのフレームワーク。

特徴

  • 通常はサイズが変更できないコントロールもサイズ変更が可能。

  • 23種のロールアウトコントロールに対応。 (comboBoxsubRollouttimerは非対応)

ライセンス

MIT License

要件

  • imaoki/Standard

  • (任意)imaoki/StartupLoader 導入済みの場合はインストール/アンインストールでスタートアップスクリプトの登録/解除が行われる。 未使用の場合はスクリプトの評価のみ行われる。

開発環境

3ds Max 2024

インストール

  1. 依存スクリプトは予めインストールしておく。

  2. install.msを実行する。

アンインストール

uninstall.msを実行する。

単一ファイル版

インストール

  1. 依存スクリプトは予めインストールしておく。

  2. Distribution\FlexUI.min.msを実行する。

アンインストール

::flexUI.Uninstall()

  • Widget(Example\Widget\FlexEditTextControlWidget.ms)

    Example-Widget

  • Layout(Example\Layout\FlexGridLayout.ms)

    Example-Layout

  • Calc(Example\Calc.ms)

    Example-Calc

  • Explorer(Example\Explorer.ms)

    Example-Explorer

  • Form(Example\Form.ms)

    Example-Form

  • TabPage(Example\TabPage.ms)

    Example-TabPage

使い方

Widget

  • ウィジェットは全種類が共通のプロパティとメソッドを持つ。

  • 既定のサイズ、最小サイズ、およびリサイズの可/不可はロールアウトコントロールの特性に合わせて定数として定義されている。

(
  local widget = ::flexUI.CreateWidget Edt

  -- 全体の水平方向の位置合わせを設定
  widget.SetAlignmentH #Center

  -- 全体の垂直方向の位置合わせを設定
  widget.SetAlignmentV #Center

  -- キャプションと本体との余白ピクセルを設定
  widget.SetCaptionMargin 3

  -- キャプションの表示位置を設定
  widget.SetCaptionPosition #Left

  -- キャプションを含まない明示的な高さを設定
  widget.SetExplicitH undefined

  -- キャプションを含まない明示的な幅を設定
  widget.SetExplicitW undefined

  -- ロールアウトコントロールの可視性を設定
  widget.SetVisibility false

  -- ロールアウトコントロールの矩形を設定
  widget.SetRect (Box2 0 0 100 100)
)

Layout

GridLayout

  • 仮想グリッド上にアイテムを配置するレイアウト。

  • グリッドは必要に応じて自動的に拡張される。

(
  -- 任意でレイアウトオプションを設定
  local layoutOptions = ::flexUI.CreateLayoutOptions()
  local gridLayout = ::flexUI.CreateGridLayout options:layoutOptions

  -- レイアウトを追加(セルを配置する行、セルを配置する列)
  gridLayout.AddLayout vBoxLayout 1 1

  -- ウィジェットを追加(セルを配置する行、セルを配置する列、セルが専有する行数、セルが専有する列数)
  gridLayout.AddWidget widget 2 3 rowSpan:1 columnSpan:3

  -- 行の最小高を設定(対象の列、最小高)
  gridLayout.SetRowMinimumHeight 1 10

  -- 列の最小幅を設定(対象の列、最小幅)
  gridLayout.SetColumnMinimumWidth 2 10

  -- 行のストレッチ係数を設定(対象の行、ストレッチ係数)
  gridLayout.SetRowStretch 2 2

  -- 列のストレッチ係数を設定(対象の列、ストレッチ係数)
  gridLayout.SetColumnStretch 3 2

  -- 行の固定高を設定(対象の列、固定高)
  gridLayout.SetRowFixedLength 1 20

  -- 列の固定幅を設定(対象の列、固定幅)
  gridLayout.SetColumnFixedLength 1 20

  -- セルのアイテムの可視性を設定
  gridLayout.SetVisibility false

  -- レイアウトの矩形を設定
  gridLayout.SetRect (Box2 0 0 100 100)
)

GroupLayout

  • GroupBoxControl用のレイアウト。
(
  -- `GroupBoxControl`ウィジェットが必須
  local groupBoxWidget = ::flexUI.CreateWidget Gbx
  local groupLayout = ::flexUI.CreateGroupLayout groupBoxWidget

  -- セルのアイテムを設定
  groupLayout.SetCell widget

  -- セルのアイテムの可視性を設定
  groupLayout.SetVisibility false

  -- レイアウトの矩形を設定
  groupLayout.SetRect (Box2 0 0 100 100)
)

HBoxLayout

  • 水平方向にアイテムを配置するレイアウト。
(
  -- 任意でレイアウトオプションを設定
  local layoutOptions = ::flexUI.CreateLayoutOptions()
  local hBoxLayout = ::flexUI.CreateHBoxLayout options:layoutOptions

  -- レイアウトを追加
  hBoxLayout.AddLayout groupLayout

  -- 固定スペースを追加
  hBoxLayout.AddSpace 10

  -- ストレッチ可能なスペースを追加
  hBoxLayout.AddStretch stretch:2

  -- ウィジェットを追加
  hBoxLayout.AddWidget widget stretch:3

  -- 固定幅でレイアウトを追加
  hBoxLayout.AddLayout groupLayout fixedLength:20

  -- 固定幅でウィジェットを追加
  hBoxLayout.AddWidget widget fixedLength:20

  -- セルのアイテムの可視性を設定
  hBoxLayout.SetVisibility false

  -- レイアウトの矩形を設定
  hBoxLayout.SetRect (Box2 0 0 100 100)
)

VBoxLayout

  • 垂直方向にアイテムを配置するレイアウト。

  • メソッドはHBoxLayoutと共通。

(
  -- 任意でレイアウトオプションを設定
  local layoutOptions = ::flexUI.CreateLayoutOptions()
  local vBoxLayout = ::flexUI.CreateVBoxLayout options:layoutOptions

  -- レイアウトの矩形を設定
  vBoxLayout.SetRect (Box2 0 0 100 100)
)

StackedLayout

  • 登録されたアイテムの内一つのみを表示するレイアウト。
(
  -- 任意でレイアウトオプションを設定
  local layoutOptions = ::flexUI.CreateLayoutOptions()
  local stackedLayout = ::flexUI.CreateStackedLayout options:layoutOptions

  -- レイアウトを追加
  stackedLayout.AddLayout layout

  -- ウィジェットを追加
  stackedLayout.AddWidget widget

  -- レイアウトを追加(挿入先インデックスを指定)
  stackedLayout.AddLayout layout index:2

  -- ウィジェットを追加(挿入先インデックスを指定)
  stackedLayout.AddWidget widget index:2

  -- 現在表示されているアイテムのインデックスを設定
  stackedLayout.SetCurrentIndex 2

  -- ロールアウトコントロールの選択と現在のインデックスを同期させる
  DdlPage.Selection = stackedLayout.GetCurrentIndex()

  -- レイアウトの矩形を設定
  stackedLayout.SetRect (Box2 0 0 100 100)
)

制限

  • RolloutFloaterおよびSubRolloutには非対応。 Resizedイベントの発生するダイアログでのみ使用可能。

  • FlexComboBoxControlWidgetStructdropDownListにのみ対応。 現状ではdropDownListとの判別ができないため使用頻度の低そうなcomboBoxを非対応とした。

  • curveControlのサイズ変更には非対応。

  • sliderorientパラメータは#Horizontalにのみ対応。

追加情報

グローバル変数

  • 通常はグローバル変数::flexUIを通して操作する。

  • 詳細はmxsdoc.FlexUI.msを参照。

ウィジェットの種類

| ウィジェット | ロールアウトコントロール | 幅 | 高さ | イメージ | | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------------------------------------------------------------ | | FlexAngleControlWidgetStruct | angle | 可変 | 可変 | FlexAngleControlWidget | | FlexBitmapControlWidgetStruct | bitmap | 可変 | 可変 | FlexBitmapControlWidget | | FlexButtonControlWidgetStruct | button | 可変 | 可変 | FlexButtonControlWidget | | FlexCheckBoxControlWidgetStruct | checkBox | 固定 | 固定 | FlexCheckBoxControlWidget | | FlexCheckButtonControlWidgetStruct | checkButton | 可変 | 可変 | FlexCheckButtonControlWidget | | FlexColorPickerControlWidgetStruct | colorPicker | 可変 | 可変 | FlexColorPickerControlWidget | | FlexComboBoxControlWidgetStruct | dropDownList | 可変 | 固定 | FlexComboBoxControlWidget | | FlexDotNetControlWidgetStruct | dotNetControl | 可変 | 可変 | FlexDotNetControlWidget | | FlexEditTextControlWidgetStruct | editText | 可変 | 可変 | FlexEditTextControlWidget | | FlexGroupBoxControlWidgetStruct | groupBox | 可変 | 可変 | FlexGroupBoxControlWidget | | FlexImgTagWidgetStruct | imgTag | 可変 | 可変 | FlexImgTagWidget | | FlexLabelControlWidgetStruct | label | 固定 | 固定 | FlexLabelControlWidget | | FlexLinkControlWidgetStruct | hyperLink | 固定 | 固定 | FlexLinkControlWidget | | FlexListBoxControlWidgetStruct | listBox | 可変 | 可変 | ![F

Related Skills

View on GitHub
GitHub Stars9
CategoryDevelopment
Updated4d ago
Forks2

Languages

MAXScript

Security Score

90/100

Audited on Mar 17, 2026

No findings