Создание простой функции

Создание собственных функций

В 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 для изменения на красный цвета каждого из них.