Выбор объектов на сцене

Основная панель инструментов

Большинство самых важных команд доступно на основной панели инструментов. В MAXScript имеются средства для доступа ко многим из этих команд. В частности, программным путем можно выбрать кнопку отмены операции, открыть диалоговое окно выбора объектов или активизировать инструмент перемещения объектов.

Дополнительные сведения по данному вопросу приведены в следующем разделе справочного руководства по MAXScript: MAXScript Tools and Interaction with 3dsMax ⇨ Lnteracting with the 3dsMax User Interface ⇨ Main Toolbar (Инструменты MAXScript и взаимодействие с 3dsMax ⇨ Взаимодействие с пользовательским ин­терфейсом 3dsMax ⇨ Основная панель инструментов).

Одной из наиболее часто используемых функций расширенного набора средств MAXScript является функция Pickobject, позволяющая выбрать объект на сцене, используя стандартные инструменты выделения. Синтаксис данной функции следующий:

Pickobject [message: <строка>] [count: n | #multiple] [filter: <функция>] ...

Примечание. Синтаксис функции Pickobject достаточно длинный, поэтому для простоты и экономии места ниже поясняются лишь три необязательных аргумента данной функции.

При вызове функции Pickobject курсор принимает вид пиктограммы выделения объекта и происходит переход в режим ожидания от пользователя конкретных действий для выделения одного или более объектов в сцене 3dsMax. Ниже приведены некоторые необязательные параметры функции Pickobject.

• [message: <строка>] — это сообщение, появляющееся в строке состояния, расположенной в нижней части пользовательского интерфейса 3dsMax,

• [count: n|#multiple] — этот параметр указывает количество выбираемых объектов. Функции можно передать целое число (n) для выбора конкретного количества объектов или же значение #multiple для того, чтобы пользователь мог выбрать столько объектов, сколько потребуется, прежде чем нажать клавишу <Esc> или щелкнуть правой кнопкой мыши. За дополнительной информацией о выделении нескольких объектов обращайтесь к справочному руководству по MAXScript.

• [filter: <функция>] — это функция, которая позволяет отфильтровать разные виды объектов на сцене 3dsMax. Такая функция может упростить выбор объектов, если, например, требуется выделить только объекты формы на


Интерфейс 3dsMax

сцене, заполненной параллелепипедами. При этом фильтр вызывается и пе­редается тому объекту на сцене, над которым находится курсор, например: function mySphereFilter obj = (ClassOf obj == Sphere)

В данном случае из тела функции возвращается логическое значение true, если объект является сферой; в противном случае возвращается логическое значение false. Эта функция фильтрации передается далее функции PickObject.

Для того чтобы воспользоваться функцией PickObject, выполните следующее упражнение.

1. Очистите сцену 3dsMax и откройте новый файл сценария MAXScript по команде MAXScript ⇨ NewMAXScript из главного меню.

2. Откройте окно приемника команд MAXScript Listener.

3. Создайте в видовом окне пять параллелепипедов и две сферы, расположив их в любом месте сцены.

4. Введите в файл сценария следующий фрагмент кода:

function mySphereFilter obj = (ClassOf obj == Sphere)

sel = PickObject message: "Pick any sphere" filter:

mySphereFilter

format "You selected: %\n" sel.name

5. Вычислите код сценария.

При перемещении в видовом окне курсор переходит в режим выделения объектов, когда он оказывается над сферой, и возвращается к исходному виду, когда он оказывается над параллелепипедом. В нижней части интерфейса 3dsMax появляется подсказка с указаниями относительно выделения сфер.

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

7. Выделите любой из сферических объектов. Выделение сферы разрешается и выполняется последняя строка сценария. В окне приемника команд появляется сообщение о выделении конкретной сферы и выводится ее наименование. После выбора сферы происходит возврат из данной функции, поскольку по умолчанию она должна завершаться после выделения одного объекта. Если бы функции было передано определенное количество выделяемых объектов в качестве дополнительного аргумента, ее поведение было бы иным.

Дополнительные сведения по данному вопросу приведены в следующем разделе справочного руководства по MAXScript: MAXScript Tools and User with 3dsMax ⇨ Interacting with the 3dsMax Interfaced Picking Scene Nodes (Инструменты MAXScript и взаимодействие с 3dsMax ⇨ Взаимодействие с пользовательским интерфейсом 3dsMax ⇨ Выбор узлов сцены).


Глава 3