¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Transformaciones
Modifican las características de las figuras: tamaño, posición, orientación, etc. Pueden anidar entre { } a las figuras a las que afectan. También pueden anteponerse antes de la declaración de la figura (sin terminar en ;) para afectar a esa figura.
Escalado
Sirve para modificar o 'escalar' las medidas de la figura correspondiente en cada uno de los ejes X, Y, Z. Hay que indicar el factor de escalado en cada eje.
scale(v = [x, y, z]) { ... }
No pueden usarse valores de escala negativos.
Ejemplo:
cube(10); translate([15,0,0]) scale([0.5,1,2]) cube(10);
Modificar tamaño
La función resize() modifica el tamaño de la figura en cada eje, tomando el tamaño que se haya definido. Similar al escalado, pero en lugar de definir un factor de escala en cada eje, se define el tamaño final.
resize(v = [x, y, z], auto=[false, false, false]) { ... }
Ejemplo:
resize(newsize=[30,60,10]) sphere(r=10);
El parámetro 'auto' sirve para indicar que el tamaño de ese eje se modificará en la misma proporción que el que se haya definido en la función.
// resize to 10x8x1. Note that the z dimension is left alone. resize([10,0,0], auto=[true,true,false]) cube([5,4,1]);
Rotación
Para rotar una figura se puede especificar una matriz el número de grados que debe rotar en cada eje.
cube(10, true); translate([20,0,0]) rotate([45,0,45]) cube(10, true);
También es posible indicar un número de grados de rotación e indicar con 1/0 en cuál de los 3 ejes rota (sólo 1).
cube(10, true); translate([20,0,0]) rotate(45,[1,0,0]) cube(10, true);
Si el vector definido en el caso anterior modifica más de un eje, la fugyra rota respecto del eje especificado por ese vector.
translate([40,0,0]) rotate(45,[1,1,0]) cube(10, true)
Para saber en qué sentido rota la figura se utiliza la regla de la mano derecha.
Traslación
La función translate(), mueve el objeto en la dirección de cada eje, definida en un vector.
translate(v = [x, y, z]) { ... }
Se han visto varios ejemplos en funciones anteriores.
Espejo
Espeja el objeto en función de las coordenadas definidas. Estas coordenadas representan el vector normal al plano que se encuentra en el origen y respecto del cual se creará la imagen espejada.
mirror(v= [x, y, z] ) { ... }
Ejemplo:
translate([5,0,0]) cube(10, false); mirror([1,0,0]) translate([5,0,0]) cube(10, false);
Multimatriz
A través de una matriz de 4×4, se especifica la transformación de la figura. Mediante este sistema es posible obtener figuras que no se podrían obtener con ninguna otra transformación.
multmatrix(m = [...]) { ... }
A continuación el significado de cada elemento de la matriz:
| A | B | C | D |
| E | F | G | H |
| I | J | K | L |
| 0 | 0 | 0 | 1 |
- A: Escalado en el eje X.
- B: Escalado en X 'tirando' de los extremos del eje Y.
- C: inclinación en X sin variar Y, ni Z.
- D: Traslación en eje X.
- E: Escalado en Y 'tirando' de los extremos del eje X.
- F: Escalado en el eje Y.
- G: inclinación en Y sin variar X, ni Z.
- H: Traslación en eje Y.
- I: Escalado en Z 'tirando' de los extremos del eje X.
- J: Escalado en Z 'tirando' de los extremos del eje Y.
- K: Escalado en el eje Z.
- L: Traslación en eje Z.
La última columna se usa en entornos 3D para definir la vista del objeto, y no se usa en OpenSCAD. Debe ser siempre [0,0,0,1].
Un ejemplo que puede servir para realizar pruebas:
M = [ [ 1 , 0 , 0 , 0 ],
[ 0 , 1 , 0 , 0 ],
[ 0 , 0 , 1 , 0 ],
[ 0 , 0 , 0 , 1 ] ] ;
multmatrix(M) cylinder (h=20, d=10, center=false, $fn=30);
Color
“Pinta” la figura del color y establece el 'canal' alfa (transparencia) que se defina.
Puede definirse de varias maneras:
color( c = [r, g, b, a] ) { ... }
color( c = [r, g, b], alpha = 1.0 ) { ... }
color( "colorname", 1.0 ) { ... }
los valores rgba son valores de coma flotante comprendidos entre 0 y 1.
translate([0,-5,0]) color("red") cube(10);
color("blue") translate([20,0,0]) cylinder(10,5,0);
color(0.5) translate([35,0,5]) sphere(5);
Offset
La función offset() sirve para crear “paredes” con grosor a partir de una figura 3D.
Se pueden definir los siguientes parámetros:
- r | delta: es el grosor de la pared. Puede ser positivo (del plano hacia fuera) o negativo (del plano hacia adentro). Si definimos r, las esquinas son redondeadas. Si en lugar de definir 'r', definimos 'delta', las esquinas será rectas (puntiagudas).
- chamfer: este parámetro se usa cuando se ha definido anteriormente delta, y sirve para recortar las esquinas.

