Начиная работу с циклами мы должны в первую очередь нужно понимать что такое ПЕРЕМЕННАЯ.
Переменная позволяет хранить числа, и использовать их в программе. Вот пример:
X=5
Y=10
Z=50
cube( [X, Y, Z], true );
То есть при постройке параллелепипеда вместо букв (переменных) X, Y и Z будут подставлены числа 5, 10 и 50 соответственно.
Представим, что мы хотим построить модель простого забора из деревянных досок. Для примера изобразим код для пяти досочек:
translate([0,0,0])
cube( [5, 10, 50], true );
translate([0,20,0])
cube( [5, 10, 50], true );
translate([0,40,0])
cube( [5, 10, 50], true );
translate([0,60,0])
cube( [5, 10, 50], true );
translate([0,80,0])
cube( [5, 10, 50], true );
Обратите внимание на числа, выделенные жирным шрифтом. Эти числа входят в команду translate (передвижение) и стоят на втором месте, то есть обозначают смещение вдоль оси Y. Так же видно, что каждая следующая цифра на 20 больше предыдущей. Это удобный случай для того, чтобы использовать цикл For. Вот как будет выглядеть код для такого же забора, но с использованием цикла:
Эта запись означает, что переменная Y будет постепенно принимать разные значения: 0, 20, 40, 60, 80, итого 5 значений. И каждый новый раз в команду translate([0,Y,0]), вместо Y будут подставлены разные значения. Это значит, что 5 параллелепидов, которые будут построены, будут находиться в разных местах, что мы и видим на рисунке.
for ( Y = [0 : 20 : 80] ){
translate([0,Y,0])
cube( [5, 10, 50], true );
}
Построим фигуру, представленную на рисунке. Для этого изобразим такой же параллелепипед, как в предыдущем примере, но без выравнивания по центру:
rotate([0,0,0])
cube( [5, 15, 50], false );
Как видно, в команде rotate([0,0,0]) стоят одни ноли , а значит никакого поворота не происходит.
Построим ещё 3 параллелепипеда, чтобы сверху они образовали подобие креста:
rotate([0,0,0])
cube( [5, 15, 50], false );
rotate([0,0,90])
cube( [5, 15, 50], false );
rotate([0,0,180])
cube( [5, 15, 50], false );
rotate([0,0,270])
cube( [5, 15, 50], false );
И вновь внимание на цифры, выделенные жирным шрифтом. Как мы видим, они означают поворот вокруг оси Z и отличаются друг от друга на угол в 90 градусов. И опять прекрасная возможность использовать цикл.
for ( corner = [0 : 90 : 270] ){
rotate([0,0,corner])
cube( [5, 15, 50], false );
}
Переменная по очереди принимает значения от ноля до 270 с шагом 90, что соответствует значениям: 0, 90, 180 и 270 (сравни с цифрами, выделенными жирным). При этом все 4 куба повёрнуты каждый на свой угол, что и образует тот же рисунок. Однако у цикла есть одно преимущество. Изменив цифры, мы можем создать не 4, а сколько угодно параллелепипедов. пусть будет 8. Тогда мы просто заменить 90 на 45, а 270 на 360 и вот результат:
for ( corner = [0 : 45 : 360] ){
rotate([0,0,corner])
cube( [5, 15, 50], false );
}
Вот такие вот циклы.