Циклы с многими операторами
Для выполнения цикла for с многими операторами в теле цикла эти операторы следует указывать в круглых скобках, а слово do должно предшествовать круглым скобкам. Как и в примерах условных операторов if-then-else, цикл не выполняется в приемнике команд до тех пор, пока не будут введены всего его операторы. Это означает, что до тех пор, пока в цикле не будет введена завершающая круглая скобка, ничего не произойдет. Операторы внутри круглых скобок вводятся с отступом для повышения организованности и удобочитаемости кода сценария. В качестве полезного практического совета каждую новую группу операторов в круглых скобках рекомендуется вводить с дополнительным отступом на одну позицию табуляции.
Если тело цикла содержит только один оператор, в таком случае круглые скобки не нужны. Так, оба приведенных ниже примера равнозначны:
for i = 1 to 5 do
(
s = sphere()
)
for i = 1 to 5 do s = sphere()
Теперь для написания многострочных сценариев вы должны пользоваться редактором MAXScript Editor. В окне этого редактора вы можете ввести целый ряд команд, а затем выполнить сразу все эти команды.
Для создания циклов с многими операторами выполните следующее упражнение.
1. Установите 3dsMax в исходное состояние.
2. Выберите команду MAXScript ⇨ NewScript из главного меню, чтобы открыть окно редактора MAXScript Editor.
3. Введите в окне редактора MAXScript Editor следующий фрагмент кода:
for i = 1 to 5 do
(
a = sphere pos:[i*50,0,0] messagebox a.name
)
4. Нажмите комбинацию клавиш <Ctrl+E>, чтобы выполнить сценарий и вычислить результат. После выполнения каждого шага цикла появляется окно сообщения с наименованием каждой созданной сферы.
5. На запрос вычислить результат или выполнить сценарий в редакторе MAXScript Editor вы можете нажать комбинацию клавиш <Ctrl+E> или же выбрать команду File ⇨ Evaluate All из меню в окне этого редактора. Для выполнения большей части упражнений в данной книге вам придется пользоваться редактором MAXScript Editor.
Для того чтобы объединить циклы и условные операторы в одном сценарии, выполните следующее упражнение.
1. Установите 3dsMax в исходное состояние или же удалите со сцены все объекты.
2. Выберите команду File ⇨ New из меню в окне редактора MAXScript Editor, чтобы открыть новое окно редактора сценариев без текста.
Глава 1
3. Введите следующий фрагмент кода:
cylArray = #()
for i = -3 to 3 do
(
if i != 0 then
(
a = cylinder height:50 pos: [i*40,0,0]
append cylArray a
)
else
(
a = cone height: 50 pos: [i*40,0,0]
messagebox a.name
)
)
4. Нажмите комбинацию клавиш <Ctrl+E> или выберите команду File ⇨
Evaluate All из меню в окне редактора сценариев.
В данном коде внутри цикла for был помещен условный оператор. По мере создания каждого цилиндра проверяется значение переменной i. Если значение переменной i равно о, вместо цилиндра создается конус, а в окне сообщения отображается имя нового объекта.
Примечание. Индекс i данного цикла начинается со значения -3 и оканчивается значением 3. Индекс цикла отнюдь не обязательно должен быть положительным числом и не всегда должен начинаться с 1.
Обратите внимание на применение круглых скобок в приведенном выше примере. Операторы в условной конструкции if-then-else указаны в круглых скобках, а сама эта конструкция также помещена в круглые скобки, определяющие тело цикла for. Неправильное чередование открытых и закрытых круглых скобок является типичной ошибкой программирования. Открытых скобок всегда должно быть столько же, сколько и закрытых, причем они должны быть правильно расставлены. В противном случае сценарий не будет выполняться или же результат его выполнения окажется непредсказуемым.
Основы MAXScript