Создание простой функции
Создание собственных функций
В MAXScript встроено немало эффективных функций. Однако для написания сценариев функций, предоставляемых MAXScript, как правило, оказывается недостаточно. Создавать собственные функции полезно по целому ряду причин. Во-первых, собственную функцию можно вызвать из сценария вместо того, чтобы переписывать все ее операторы всякий раз, когда она потребуется. И во-вторых, собственные функции можно сделать доступными для других создателей сценариев. Параметры функции были рассмотрены в предыдущем разделе, поэтому обратитесь, если требуется, к материалу этого раздела, прежде чем приступать к созданию собственной функции.
В следующем упражнении вам предстоит создать функцию, устанавливающую красный цвет каркаса геометрического объекта.
1. Откройте новое окно редактора MAXScript Editor, выполнив следующее.
· Выберите команду MAXScript ⇨ NewScriptиз главного меню 3dsMax.
· Выберите команду FileNewScript (Файл Новый сценарий) из меню в окне приемника команд,
2. Введите следующий фрагмент кода:
-- Определениефункции "ChangeToRed"
fn ChangeToRed obj =
(
if superclassof obj == geometryClass then
(
obj.wirecolor = [255, 0, 0]
)
)
Основы MAXScript
3. Нажмите комбинацию клавиш <Ctrl+E>, чтобы выполнить сценарий.
В ответ на это действие в приемнике команд появится сообщение ChangeToRed(), указывающее на успешную загрузку данной функции. Если на сцене находятся объекты, с интерфейсоми ничего не произойдет. Ведь функция только загружена и ожидает вызова, но пока еще не вызвана.
В определении данной функции аргумент obj обозначает параметр, который будет передан функции при ее вызове, в чем вы сможете убедиться далее в этом упражнении.
Если поместить данное определение функции в начало сценария, 3dsMax будет известно, что означает ChangeToRed, всякий раз, когда потребуется данная функция.
4. Введите в новом окне редактора MAXScript Editor следующий фрагмент кода:
for i = 1 to 3 do
(
sphere pos: [random -80 80, random -80 80, random -80 80]
cone pos: [random -80 80, random -80 80, random -80 80]
cylinder pos: [random -80 80, random -80 80, random -80 80]
)
Теперь на сцене имеется несколько объектов.
5. Воспользуйтесь функцией ChangeToRed в цикле. Для этого введите в окне редактора MAXScript Editor следующий фрагмент кода:
for obj in objects do
(
ChangeToRed obj
)
Все объекты изменят свой цвет. (Для того чтобы увидеть это изменение, возможно, потребуется щелкнуть в видовом окне и сделать его активным.)
Глава 1
Массив objects представляет все находящиеся на сцене объекты. Такой массив создается в 3dsMax автоматически. В приведенном выше цикле сначалапроисходит обращение по очереди ко всем объектам, находящимся на сцене, а затем — вызов функции ChangeToRed для изменения на красный цвета каждого из них.