OpenSCAD: Modelado 3D mediante código para diseñadores y makers

Introducción a OpenSCAD

OpenSCAD es un software de modelado sólido gratuito y de código abierto que se centra en la creación de objetos mediante scripting. En lugar de usar una interfaz gráfica de arrastrar y soltar, el usuario escribe código que describe la geometría, lo que permite un control total y la reproducción exacta de diseños.

Esta aproximación basada en código lo hace ideal para piezas que requieren alta precisión, parametrización y versionado, características muy valoradas en la impresión 3D y el diseño de piezas mecánicas. A continuación exploraremos sus conceptos básicos, ventajas y cómo comenzar a usarlo.

¿Qué es OpenSCAD?

OpenSCAD se diferencia de otros modeladores CAD porque su enfoque es basado en descripciones funcionales. Cada objeto se define mediante operaciones de unión, diferencia e intersección de primitivas como cubos, esferas y cilindros, además de transformaciones como traslación, rotación y escala.

El lenguaje es declarativo: se describen las operaciones que se deben realizar y el motor genera la malla resultante. Esto lo convierte en una herramienta ideal para piezas que requieren precisión paramétrica, ya que cambiar un solo valor en el código actualiza todo el modelo de forma automática.

Ventajas frente a modeladores tradicionales

Algunas de las principales ventajas de OpenSCAD respecto a los modeladores tradicionales son:

  • Parametrización directa: modificar un número en el script cambia todas las dimensiones dependientes, facilitando diseños ajustables.
  • Versionado sencillo: los archivos .scad son texto plano, lo que permite usar sistemas como Git para rastrear cambios y colaborar.
  • Reproducibilidad total: el mismo código genera siempre la misma pieza, eliminando variaciones introducidas por la interfaz gráfica.
  • Libre y multiplataforma: disponible sin costo para Windows, macOS y Linux, con actualizaciones frecuentes de la comunidad.
  • Integración con otros flujo de trabajo: exporta directamente a STL para impresión 3D o a DXF para corte láser y mecanizado CNC.

Estas características hacen de OpenSCAD una opción atractiva para ingenieros, diseñadores y makers que buscan precisión y flexibilidad en sus proyectos.

Sintaxis básica y conceptos clave

El lenguaje de OpenSCAD se parece a C, utilizando punto y coma para terminar sentencias y llaves para agrupar bloques. Los comentarios se indican con // para una línea o /* */ para varios líneas.

Las primitivas más usadas son cube, sphere y cylinder; se pueden aplicar transformaciones como translate, rotate, scale y mirror. Las operaciones booleanas union, difference y intersection permiten combinar o sustraer volúmenes.

  • cube([x, y, z]); crea un cubo centrado en el origen o desplazado según el vector.
  • sphere(r=d, $fn=n); genera una esfera de radio d, con suavidad controlada por $fn.
  • cylinder(h=altura, r=radio, $fn=n); produce un cilindro; se puede hacer cónico especificando r1 y r2.
  • translate([x, y, z]) mueve el objeto siguiente el vector indicado.
  • rotate([ax, ay, az]) rota el objeto alrededor de los ejes X, Y y Z en grados.
  • scale([sx, sy, sz]) escala el objeto en cada eje por el factor dado.

El parámetro $fn controla el número de facetas de las curvas, mejorando la apariencia redondeada de cilindros y esferas.

Flujo de trabajo típico

Un flujo de trabajo típico en OpenSCAD comienza con la definición de parámetros variables que controlarán el diseño, como diámetros, largos o cantidades de repeticiones.

Luego se construyen las formas básicas usando las primitivas y se aplican transformaciones y operaciones booleanas para obtener la pieza final. Finalmente se exporta el modelo a STL mediante el menú ‘File → Export → Export as STL’ y se envía a la impresora 3D o al software de laminado.

Ejemplo práctico: tuerca hexagonal

A continuación se muestra un script completo que genera una tuerca hexagonal M8 con paso de 1.25 mm y altura de 6 mm, incluyendo los ajustes de suavidad y el agujero para el tornillo.

$fn = 64; // suavidad de curvas
hex_nut = 8; // diámetro exterior de la tuerca
thickness = 6;

union() {
    cylinder(h=thickness, r=hex_nut/2);
    difference() {
        cylinder(h=thickness+0.1, r=hex_nut/2);
        cylinder(h=thickness+0.2, r=3.5); // agujero para el tornillo M8
    }
    // seis caras del hexágono
    for (i = [0:5]) {
        rotate([0, 0, 60*i])
            translate([0, -hex_nut/2, 0])
                cube([hex_nut, thickness+0.2, 0.1], center=true);
    }
}

Este ejemplo muestra cómo combinar primitivas, bucles for y operaciones booleanas para obtener una pieza funcional. La variable $fn controla el número de facetas de los cilindros y cubos, mejorando la apariencia redondeada. El operador difference resta el agujero del tornillo al cuerpo, mientras que el union agrega las caras del hexágono.

Funciones avanzadas: módulos, bucles, conditionals y funciones

Para reutilizar código y mantener los scripts organizados, OpenSCAD permite definir módulos que pueden recibir parámetros y actuar como funciones.

Los bucles for y los condicionales if permiten crear patrones repetitivos o geometrías que varían según ciertas condiciones, lo que es esencial para diseños paramétricos complejos.

module tornillo(diametro, largo) {
    cylinder(h=largo, r=diametro/2, $fn=32);
}

// crear una cuadrícula de pilares
for (x = [-20, 0, 20]) {
    for (y = [-20, 0, 20]) {
        translate([x, y, 0])
            tornillo(4, 30);
    }
}

// ejemplo de condicional: cambiar grosor según resistencia necesaria
if (refuerzo == true) {
    cube([50, 50, 10]);
} else {
    cube([50, 50, 5]);
}

Este ejemplo ilustra cómo un módulo encapsula la lógica de un tornillo, cómo un bucle genera una matriz de elementos y cómo un condicional adapta el diseño según el valor de una variable, todo dentro de un mismo archivo .scad.

Exportación y formatos de salida

Una vez que el modelo está listo, OpenSCAD puede exportarlo a varios formatos según el uso previsto. El más común es STL, ideal para impresoras 3D, ya que contiene únicamente la malla de triángulos.

Otros formatos útiles incluyen DXF para corte láser o mecanizado CNC, PNG para vistas previa de 2D y incluso PDF para documentación técnica. La exportación se realiza desde el menú File → Export o mediante la línea de comandos con openscad -o salida.stl entrada.scad.

Comunidad y recursos

El sitio oficial openscad.org alberga la documentación completa, tutoriales paso a paso y un foro donde los usuarios comparten trucos y resuelven dudas.

Plataformas como Thingiverse, Printables y MyMiniFactory albergan miles de diseños publicados en formato .scad, listos para descargar, modificar y reimprimir. Además, existen bibliotecas de funciones públicas (como BOSL2) que amplían las capacidades del lenguaje con herramientas avanzadas de geometría y manejo de listas.

Conclusión y próximos pasos

OpenSCAD representa una alternativa poderosa para diseñadores que prefieren el control total mediante código, especialmente cuando se requiere parametrización, versionado y reproducibilidad en piezas mecánicas o de impresión 3D.

Te invitamos a descargar el software desde su sitio web, experimentar con el ejemplo de la tuerca hexagonal y explorar las bibliotecas de la comunidad. Con práctica, podrás crear modelos complejos y adaptables que se integren perfectamente en tus proyectos de fabricación digital.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol