Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript Part 6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
133.12 Кб
Скачать

Функции, работающие с наборами

Функция

clearSelection ( )

снимает со всех выделенных объектов признак выделения. Набор selection после вызова данной функции становится пуст. Чтобы получить все выделенные объекты в виде массива, используется функция

getCurrentSelection ( )

Фактически обращение к ней эквивалентно следующему скрипту

selection as array

но, при большом количестве объектов в сцене, функция работает значительно быстрее.

Дополнительные сведения

Наборы объектов динамичны. При создании пользователем нового примитива, набор geometry расширяется, при работе с выделением объектов изменяется набор selections. Чтобы зафиксировать текущее состояние набора, лучше всего запомнить его в переменной, преобразовав в массив. Например

MyHelpers = helpers as array

Наборы объектов можно использовать при записи шаблонов имен. Например, шаблон

$cameras/c*

выберет все камеры, имена которых начинаются с c.

При работе с наборами камер и источников света следует учитывать тот факт, что нацеленные камеры и источники света включают в себя целевой объект-пустышку. При организации цикла по объектам наборов lights и cameras следует, в случае необходимости, проверять тип объекта с помощью функции isKindOf. Например, скрипт

for obj in lights do if isKindOf obj lights do obj.multiplier * = 1.3

корректно увеличит яркость всех световых источников сцены на 30%.

Массив именованных наборов

Класс Массив именованных наборов (SelectionSetArray) представлен только одним экземпляром – глобальным массивом selectionSets. Он содержит те же наборы элементов, что находятся в выпадающем списке Named Selection Sets инструментальной панели 3ds max

Конструкторы

Получить ссылку на массив именованных наборов можно, поставив в правой части оператора присвоения глобальный массив selectionSets. Например

c = selectionSets

Следует помнить, однако, что изменения, сделанные в массиве с помощью такой ссылки, в полной мере отразятся и на массиве selectionSet, и на списке в инструментальной панели.

Свойства

С помощью свойства

Массив_именованных_наборов.count

можно получить количество имеющихся именованных наборов

Операторы

Для массива именованных наборов определена только операция индексирования.

Массив_именованных_наборов [ Индекс ]

Индексом может быть целое число, начиная с 1, либо имя набора, либо текстовая строка, задающая имя набора. Например

selectionSets[2]

selectionSets[#Set1]

selectionSets[“My named set 2”]

С помощью индексирования можно не только получить именованный набор объектов, но и занести объекты в существующий или создать новый. Например

selectionSets[#Set1] = # ( $Sphere01 , $Sphere02 , $Sphere03 )

Если набор с именем #Set1 уже существует, то он заменяется указанным набором из трех сфер, в противном случае создается новый именованный набор с таким именем.

Методы

Чтобы удалить набор из массива применяется функция

deleteItem Массив_именованных_наборов Имя

Набор с именем, указанным вторым параметром, удаляется из массива. Имя может быть указано обычным образом или в виде строки.

Прочие функции

Функция

getNumNamedSelSets ( )

возвращает текущее количество именованных наборов. Получить имя набора можно с помощью функции

getNamedSelSetName Число

Параметром указывается порядковый номер набора в списке, начиная с единицы. Количество объектов в наборе возвращает функция

getNamedSelSetItemCount Число

Параметр играет ту же роль, что и в предыдущей функции.

Чтобы получить объект, содержащийся в наборе, применяется функция

getNamedSelSetItem Число_1 Число_2

Первый параметр указывает номер набора в списке именованных наборов, второй – номер объекта в наборе.

Именованный набор объектов

Именованный набор объектов (SelectionSet) представляет собой упорядоченное множество объектов сцены. Список имеющихся в сцене наборов доступен через выпадающий список на инструментальной панели, а средствами MAXScript через глобальную переменную selectionSets, описанную в предыдущей главе.

Конструкторы

Именованный набор может быть получен из массива именованных наборов с помощью операции индексирования. Например

selectionSets[3]

selectionSets[#MySet1]

В качестве индекса может применяться число – порядковый номер набора или его имя.

Операторы

Для набора определена только операция индексирования

Именованый_набор [ Число ]

с ее помощью можно получить объект сцены. Число в скобках означает номер объекта в наборе, начиная с единицы.

Свойства

Свойства именованных наборов применяются только для чтения. Свойства

Именованный_набор.center

Именованный_набор.max

Именованный_набор.min

возвращают точку в трехмерном пространстве и представляют собой соответственно координаты центра и крайних точек габаритного контейнера.

Количество объектов в наборе можно получить с помощью свойства

Именованный_набор.count

которое возвращает целое число.

Примеры

Именованные наборы в отличие от обычных наборов (ObjectSet) не могут применяться для построения шаблонов, но действия с наборами, как с одним объектом допускается. Например

move selectionSets[1] [ 1 , 0 , 0 ]

смещает все объекты первого набора на единицу по оси X, а

selectionSets[#MySet].wireColor = red

устанавливает для всех объектов набора с именем MySet красный цвет.

Массивы потомков

Массив потомков (NodeChildrenArray) представляет собой виртуальный массив прямых потомков объекта сцены 3ds max. Массивы потомков картированы.

Конструкторы

Массив потомков для заданного объекта сцены хранится в виртуальном массиве

Объект_сцены.children

Следует отметить, что это не функция, обращение к которой возвращает массив, а именно сам массив, поэтому чтобы получить массив потомков объекта не следует писать после слова children пустых скобок. Например, массив

$Sphere01.children

содержит всех потомков объекта Sphere01

Свойства

Свойства массива потомков предназначены только для чтения.

Массив_потомков.center

возвращает точку в трехмерном пространстве, которая представляет собой координаты центра габаритного контейнера объектов, входящих в массив.

Массив_потомков.min

и

Массив_потомков.max

соответственно крайние точки габаритного контейнера. Количество входящих в массив объектов возвращает свойство

Массив_потомков.count

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