
- •Часть 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
Объекты и классы в объектно-ориентированном программировании
Все величины (values), с которыми работает MAXScript, имеют четко определенный тип, например integer, matrix3, twist. Тип величины – это ее класс. В MAXScript термины величина (value) и объект (object) – синонимы. Объект – особый отдельный представитель класса.
Например, в MAXScript Box – это класс. Это не трехмерный объект в окне проекции 3ds max, а набор характеристик, которыми этот объект box (ящик) обладает. В этих характеристиках заложены способы создания представителей класса Box (объектов box); свойства этих объектов (например, Height – высота, Width – ширина, Length – длина); операции, которые можно с ними производить (например, move – перемещение, copy – копирование, delete – стирание). Чтобы создать объект box, можно написать: b=box()
В этой строке фраза box() – конструктор, который создает объект box и возвращает на него ссылку, сохраняемую в переменной b. Здесь для конструктора не применяются никакие параметры (вроде высоты или ширины), поэтому используются значения по умолчанию, определенные в классе Box. Объект box появляется в окнах проекции 3ds max и с ним можно делать все то же самое, что и с другими трехмерными объектами. Если параметры для конструктора нужно применить, они заменят “()”. Пример: b=box width: 10 length: 100 – создается объект box с указанными параметрами. Все неуказанные параметры используют значения по умолчанию.
Определения
Properties (Свойства): Доступные параметры объектов класса. Например, ширина, длина, высота для ящиков и радиус для сфер.
Methods (Методы): Определения всех функций, которые можно вызывать для объектов класса. Примеры: перемещение или поворот объекта, применение модификатора и получение координат вершин объекта. Термины method (метод) и function (функция) в MAXScript синонимы.
Operators (Операторы): Определения всех математических и других символьных операторов, которые работают с величинами класса. Пример: оператор ”-”, который производит математическую операцию вычитания над числами, цветами, векторами и матрицами, но произведет булево вычитание, когда будет использован совместно с объектами 3ds max.
Constructors (Конструкторы): Различные способы, которыми можно создавать объекты класса. Например: Point3 0 0 0 и <color> as Point3 – конструкторы для класса Point3. Выполнение любого из них создает новый объект Point3.
Literals (Символы): Любая символьная форма объектов класса. Примеры: [0, 0, 0] – символьная форма класса Point3, слово “Hello world” – символьная форма класса String.
Операции со строками
Операция Описание
<value> as string Конвертирует значение <value> в строку
<string>.count Число знаков в строке (Целое число - только чтение)
<string> + <string> Сложение строк
<string> == <string> Сравнение двух строк (чувствительно к регистру)
<string> != <string> Чтобы сделать проверку не зависящую от регистра,
<string> > <string> необходимо конвертировать строки в значения Name
<string> < <string>
<string> >= <string>
<string> <= <string>
<string>[<index_number>] Возвращает знак с указанной позиции (начиная с 1)
<string> as <class> Конвертирует строку в величину указанного класса
Примеры: “Foo” as name – возвращает #foo; “123.4” as float – возвращает 123.4
Можно использовать любые числовые классы – Number, Float, Integer. В случае Number подходящий класс определится в зависимости от синтаксиса чисел строки.
Метод Описание
copy <string> Создает независимую копию строки и возвращает ее. Пример: newstr = copy oldstr
execute <string> Выполняет содержимое строки, как выражение MAXScript и возвращает результат вычисления.
Примеры: execute “2+2” – возвращает 4
execute “select $Box01” – выделяет объект Box01.
findString <string> <search_string> Возвращает номер первого символа найденной строки или undefined, если строка не найдена.
Пример: findString “Я обожаю MAXScript” “M” – возвращает 10.
filterSting <string> <token_string> Разбивает строку на части и возвращает массив строк. Разбиение происходит на основе символов, заданных в строке < token_string >
Пример: filterString “MAX Script, это-супер” “, -” – возвращает #(“MAX”, ”Script”, ”это”, ”супер”)
substring <string> <from_integer> <length_integer> – возвращает новую строку, содержащую часть исходной строки, начиная с номера <from_integer> и длиной <length_integer>. Если сумма чисел <from_integer> и <length_integer> больше длины исходной строки или для <length_integer> задано отрицательное число, возвращается вся оставшаяся часть строки, начиная с номера <from_integer>.
Пример: s=”Дирижабль”; ss=substring s 2 4 -- “ириж”; ss= substring s 6 -1 --“абль”
Чтобы включить в строку кавычки и другие полезные символы, необходимо использовать символ “\” – обратная косая черта (backslash). Комбинации:
\” -- символ “
\n -- новая строка
\r -- возврат каретки
\t -- табуляция
\* -- символ *
\? -- символ ?
\\ -- символ \
\% -- символ %
\x{d} -- непечатные символы, где {d} - шестнадцатеричный символ (0-9, a-f)
Пример: print “Заключим в кавычки \”фу\” и перейдем на новую строку:\n”
Возвращает: “Заключим в кавычки ”фу” и перейдем на новую строку:
”
Примеры непечатных символов в строках:
str=”Copyright \xa9 2005, Ist02Works, Inc” --a9 – код символа ©
Следующий пример выводит в окно Listener все непечатные символы и их коды:
char=”0123456789abcdef”
for i=1 to char.count do
for j=1 to char.count do
(
s=execute(“\”\\x”+char[i]+char[j]+”\””)
format “%% %\n” char[i] char[j] s
)
Путь к файлу через строковую переменную задается так:
scene_path=”g:\\3dsmax5\\scenes”
или так:
scene_path=”g:/3dsmax5/scenes” --эта замена работает только для путей к файлам.