Элементы интерфейса
Кнопка
button <name> [<caption>] [toolTip:<string>]
Здесь <caption> - надпись на кнопке
toolTip:<string> - всплывающая подсказка
События: on <button> pressed do <expr>
Флажок
checkbox <name> [<caption>] [checked:<boolean>]
Здесь checked – начальное состояние флажка (по умолчанию false – сброшен)
Свойства: <checkbox>.checked или <checkbox>.state (оба выдают одно и то же)
События: on <checkbox> changed <arg> do <expr>, где в аргументе <arg> содержится новое состояние флажка – true или false.
Выпадающий список
dropdownlist <name> [<caption>] [items:<array_of_strings>] [selection:<number>] [height:<number>]
Здесь:
items: – массив строковых величин (пунктов списка)
selection: – номер выделенного пункта, начиная с 1 (значение по умолчанию)
height: – общая высота списка по числу пунктов (10 по умолчанию). Если нужно, чтобы список состоял ровно из N пунктов, высота должна быть N+2.
Свойства:
<dropdownlist>.items – массив пунктов списка.
<dropdownlist>.selection – номер выбранного пункта (0, если массив пустой).
<dropdownlist>.selected – текст выбранного пункта, через это свойство его можно поменять без обновления всего массива. Если массив пустой, равняется undefined.
Пример:
dropdownlist scale_dd "Scale" items:#("1/2","1/4","1/8","1/16")
on scale_dd selected i do format "Вы выбрали %\n!" scale_dd.items[i]
Текстовое поле
edittext <name> [<caption>] [text:<string>]
[fieldWidth:<integer>] [height:<integer>] [bold:<boolean>]
Здесь:
text: – текст в поле. Чтобы задать несколько строк, нужно писать между ними сразу два символа: возврат каретки \r и новая строка \n.
Пример: "First Line \r\nSecond Line"
fieldWidth: – ширина текстового поля в пикселях (по умолчанию равна расстоянию от конца заголовка до правой границы свитка).
height: – высота поля в пикселях. Если это число больше высоты одной строки, поле превращается в текстовую область, куда можно вводить сразу несколько строк текста.
bold: – если параметр равен true, текст в поле будет полужирным, если false – обычным (значение по умолчанию).
Свойства: <edittext>.text, <edittext>.caption, <edittext>.bold
События:
on <edittext> changed <arg> do <expr>, вызывается каждый раз, когда пользователь меняет текст в поле. В аргумент <arg> записывается новый текст.
on <edittext> entered <arg> do <expr>, вызывается, когда пользователь вводит текст, а потом нажимает кнопку ENTER или TAB, чтобы убрать курсор из поля. В аргумент <arg> записывается новый текст.
Область группы – область с заголовком, ограниченная линией
groupBox <name> [<caption>] [pos:<point2>] [width:<integer>] [height:<integer>]
Здесь: pos:, width:, height: – свойства, регулирующие размер области группы.
Метка – просто надпись
label <name> [<string>]
Пример: label lab1 "Пожалуйста, выберите объект:"
Ни свойств, ни событий у метки нет.
Кнопка выбора объекта
pickbutton <name> [<caption>] [message:<string>] [filter:<function>] [toolTip:<string>]
Здесь:
message: – дополнительный текст, отображаемый, когда кнопка нажата, в статусной строке 3ds max. По умолчанию текста нет.
filter: – дополнительная функция, которая проверяет, соответствует ли выбранный объект некоторым, определенным пользователем критериям. У функции должен быть только один аргумент – выбираемый объект, а возвращать она может либо true (подходящий объект), либо false (неподходящий). По умолчанию функция отсутствует.
toolTip: – текст всплывающей подсказки. Если не задан – текста нет.
Пример:
fn foo_filt obj = findString obj.name "foo"==1
pickbutton chooseit "Выберите объект" filter:foo_filt
on chooseit picked obj do (master=obj; chooseit.text=obj.name)
Свойства:
<pickbutton>.object – последний выбранный объект. Равно undefined, если объекты не выбирались. Свойство только для чтения.
События:
on <pickbutton> picked <arg> do <expr>, где <arg> содержит выбранный объект.
Радиокнопки
radiobuttons <name> [<caption>] labels:<array_of_strings> [default:<number>] [columns:<number>]
Здесь:
labels: – массив строк, определяющий число радиокнопок и текст напротив каждой из них.
default: – номер радиокнопки, активной в данный момент. По умолчанию 1, если 0 – ни одна кнопка не выбрана.
columns: – число столбиков, которые будут заполняться радиокнопками. Ширина всех столбиков одинаковая и равна самой длинной метке напротив радиокнопки. По умолчанию радиокнопки располагаются друг за другом в одной строке, а если не убираются – в один столбик.
Свойства:
<radiobuttons>.state – номер выбранной радиокнопки, согласно массиву, если ни одна не выбрана – 0.
События:
on <radiobuttons> changed <arg> do <expr>, вызывается, когда пользователь выбирает радикнопку из данного набора, в <arg> заносится номер новой радикнопки.
Спиннеры
spinner <name> [<caption>] [range:[min, max, val]] [type:<name>] [scale:<float>] [fieldWidth:<integer>] [indeterminate:<boolean>] \
[controller:(<controller>)] [setKeyBrackets:<boolean>]
Здесь:
range: – величина Point3, содержащая минимальное, максимальное и начальное значение спиннера. По умолчанию [0,100,0]
type: – тип спиннера: #float, #integer или #worldunits. По умолчанию #float. Если тип равен #worldunits, значение спиннера показывается в текущих единицах отображения (display units) 3ds max, но измеряется все равно в системных единицах.
scale: – масштаб спиннера определяет величину минимального приращения. По умолчанию: 0.1 – для вещественных (float), 1 – для целых (integer) чисел.
fieldWidth: – ширина текстового поля спиннера в пикселях. По умолчанию спиннер располагается так, что его левый край находится по центру свитка, а правый – по правой границе, исходя из этого определяется ширина.
indeterminate: – когда этот параметр равен true, поле спиннера становится пустым, спиннер не работает, но его старое значение все равно доступно. Установка нового значения сбрасывает параметр в false.
controller: – связывает спиннер с определенным контроллером. Изменение значения спиннера влияет на контроллер и наоборот.
setKeyBrackets: – включает (true) или выключает (false) красную рамку у спиннера, показывающую наличие ключевых кадров в анимации.
Свойства:
<spinner>.range – диапазон и начальное значение (аналогично соответствующему параметру)
<spinner>.value – значение спиннера
<spinner>.setKeyBrackets - аналогично соответствующему параметру
<spinner>.indeterminate - аналогично соответствующему параметру
События:
on <spinner> changed <arg> do <expr>, вызывается, когда пользователь прокручивает спиннер или вводит в его поле новое значение, а потом нажимает ENTER или TAB, чтобы выйти из поля спиннера. Аргумент <arg> содержит новое значение спиннера.
on <spinner> entered do <expr>, вызывается, когда пользователь вводит в поле новое значение, а потом нажимает ENTER или TAB, чтобы выйти из поля спиннера. Событие on <spinner> changed также вызывается в этот момент, если оно определено и свойство <spinner>.value обновляется.