Bucles

Podemos utilizar bucles para repetir elementos. Para iso utilízase a instrución:
for(variable = [inicio : incremento : final]) { instrucións }

Repetición en X:

Imos multiplicar uns cadrados de 5mm de lado, cunha separación entre eles de 1mm.

// Multiplicación de cadrados en X

lado = 5;   // lado do cadrado
e=1; // separación

for (i = [0 : 1 : 5]) {
  translate([i*(lado+e), 0, 0]){
    square([lado, lado], center=false);
  }
}
  • Modifica o programa para multiplicar no eixe Y círculos no canto de cadrados

Repetición en X e Y:

//multiplicar cadrados en XY

lado = 5;   // lado do cadrado
e=1; // separación

for (i = [0 : 1 : 4]) {
    for (j = [0 : 1 : 4]) {
        translate([i*(lado+e), j*(lado+e), 0]){
            square([lado, lado], center=false);
        }
    }
}
  • Establece inicialmente os parámetros ladoX e ladoY para poder debuxar rectángulos. Establece tamén os parámetros nx e ny para establecer o número de pezas que queremos no eixe X e no eixe Y

Extrusión con altura ao chou:

Para xerar un número aleatorio utilizamos a función rands(min,max,num); Neste caso imos asignar a cada cadrado unha altura entre 1 e 10 mm. Previsualiza con F5

//multiplicar cadrados en XY y extruír en altura aleatoria

lado = 2;
e=0; // separación
nx=10;
ny=10;
h_min=1;
h_max=5;

union() {
    for (i = [0 : 1 : nx]) {
        for (j = [0 : 1 : ny]) {
            translate([i*(lado+e), j*(lado+e), 0])
                linear_extrude(height=rands(h_min,h_max,1)[0]) 
                    square([lado, lado], center=true);
        }
    }
}
  • Extrúe de forma que non queden prismas, senón pirámides puntiagudas.

Patrón circular:

Tamén podemos ir rotando para facer un patrón circular.

// Patrón circular

diametro = 2;
altura=2;
n=6; // número de pezas
dx= 3; // distancia do centro
res=36; // resolución

for (i = [0 : 360/n : 360]) {
    rotate([0, 0, i]) 
        translate ([dx,0,0])
            cylinder(d=diametro,h=altura, $fn=res);
}
  • Debuxa un cilindro con 5 buratos facendo un patrón circular
  • Usando un patrón circular, debuxa unha roda con radios.

Rotación:

Imos facer unha maceta con textura.

O primeiro que facemos é unha forma, neste caso un cilindro de pouco espesor, que rotamos.

// cilindro rotado

rotX = 40;
rotY = 40;
rotate([rotX,rotY,0]) cylinder(r=30,h=1,center=true, $fn=120);
  • Parametriza o radio e a altura do cilindro.

Despois facemos xirar esa peza no eixe Z

// xiro no eixe Z
rotX = 40;
rotY = 40;
for(i=[0:10:360]){ 
    rotate([rotX,rotY,i]) cylinder(r=30,h=1,center=true,$fn=120); 
}
  • Aparte dos parámetros anteriores, engade un parámetro más para a variación de xiro en Z

Despois engadimos un sólido (esfera) e cortamos as caras inferior e superior facendo unha intersección cun cubo

// Unión e intersección (F5!)

intersection(){
  union(){ 
    for(i=[0:15:360]){ 
      rotate([rotX,rotY,i]) cylinder(r=30,h=1,center=true,$fn=120); 
    }
    sphere(r=29.5,$fn=120);
  }
  cube([60,60,40],center=true);
}
  • Engade os parámetros necesarios e modifica as dimensións, o ángulo, o nº de pezas, etc.
  • Imprímese en modo espiralizar o contorno.

Propostas:

Caixa de canicas:

Debuxa de maneira que poidamos modificar o diámetro da canica e o nº de filas e columnas

Roda:

Debuxa de maneira que poidamos modificar o nº de radios, anchura, altura, o diámetro exterior e o diámetro interior.

Maceta:

Proba con outras formas para xerar un vaso. Por exemplo, podes partir dunha elipse ou un polígono. Deixando o vaso macizo pódese imprimir en modo “espiralizar a contorna exterior”