Циклы с многими операторами

Для выполнения цикла 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