- •Часть 1
- •Окно maxScript Listener
- •Окно maxScript Editor
- •Простейшие математические операторы и выражения
- •Пропуск проходов и принудительный выход из циклов
- •Часть 2 Функции
- •Объекты и классы в объектно-ориентированном программировании
- •Определения
- •Операции со строками
- •Операции с массивами
- •Команды 3ds max в maxScript
- •Часть 3 Создание свитков
- •События
- •Элементы интерфейса
- •Часть 4 Сплайны
- •Класс SplineShape
- •Часть 5 Простейшие диалоговые окна
- •If queryBox “Хотите продолжить?” beep:false then ... Некоторые из методов работы с объектами
- •Характерные точки объектов
- •Системы координат
- •Координатные сетки
- •Определение угла между двумя векторами
- •Представление ориентации при помощи кватернионов (quaternions)
- •Создание вспомогательных объектов-пустышек Dummy
- •Изменение общих параметров анимации
- •Анимация вершин сплайнов
- •Примеры контроллеров анимации path constraint и link constraint
- •Методы print и format
События
Вызов события (event) происходит, когда пользователь взаимодействует с элементом интерфейса, для которого данное событие определено:
on <item_name> <event_name> [<argument>] do <expr>, где:
<item_name> – название элемента интерфейса, который вызывает событие.
<event_name> – тип события (зависит от типа элемента)
<argument> – дополнительная переменная, в которую заносится значение элемента.
Тип события Описание
pressed нажали на кнопку
changed изменили значение спиннера, в(ы)ключили флажок (радиокнопку)
picked указали на объект в сцене
entered изменили текст в текстовом поле
selected выбрали пункт из списка
resized изменили размер плавающего окна
moved переместили плавающее окно
open открыли свиток или утилиту
close закрыли свиток или утилиту
Элементы интерфейса
Кнопка
button <name> [<caption>] [toolTip:<string>]
где <caption> – надпись на кнопке, toolTip: – всплывающая подсказка.
События: 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: – число столбиков, которые будут заполняться радиокнопками. Ширина всех столбиков одинаковая и равна самой длинной метке напротив радиокнопки. По умолчанию, MAXScript располагает радиокнопки друг за другом в одной строке, а если не убираются – в один столбик.
Свойства: <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 обновляется.
