Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
max_Script синтаксис.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
196.1 Кб
Скачать

Объекты и классы в объектно-ориентированном программировании

Все величины (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>                   Конвертирует строку в величину указанного класса

Примеры: Fooas 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 --эта замена работает только для путей к файлам.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]