STL

¿Qué es un archivo STL?

El estándar de la impresión 3D. Solo triángulos: ni color, ni material, ni textura.

Qué es STL

STL es un formato binario, que solo significa algo para un programa que lo conoce. Guarda formas y coordenadas en lugar de píxeles, así que se mantiene nítido a cualquier tamaño: un logotipo llevado al tamaño de una valla publicitaria no pierde nada. Se usa para la impresión 3D.

La extensión es .stl y el nombre completo, Stereolithography. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.

De dónde viene STL

3D Systems lo publicó en 1987.

A un formato que lleva tanto tiempo siendo legible se le puede confiar algo que quieras recuperar dentro de diez años.

La especificación es pública

Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.

No se tira nada

STL guarda su contenido exactamente. Volver a guardarlo no cambia nada, así que puedes abrirlo, editarlo y guardarlo tantas veces como quieras sin acumular daño; eso es lo que lo convierte en un formato de trabajo y no de entrega.

Qué abre STL

Blender, PrusaSlicer y Cura lo leen, y también la mayoría de programas del mismo tipo.

Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.

Abrirlo en el navegador

Ningún navegador lo lee.

Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.

Es un formato de trabajo

STL está pensado para abrirse y cambiarse. Guarda el archivo en este formato mientras el trabajo siga en marcha y exporta desde él cada vez que haga falta una copia terminada.

Una lista de triángulos y, a propósito, nada más

Un archivo STL es una lista de triángulos. Cada uno tiene tres vértices y una dirección que indica qué lado es el exterior. No hay color, ni material, ni textura, ni unidad de medida, ni estructura: el modelo de un motor es un saco de triángulos sin partes, exactamente igual que el modelo de un cubo.

El formato se escribió en 1987 para la estereolitografía, y todo en él refleja una máquina a la que solo hacía falta decirle dónde había sólido. Casi cuarenta años después sigue siendo lo que espera cualquier impresora 3D de escritorio, porque esa sigue siendo la única pregunta que hace un laminador.

Las curvas no existen: la resolución se decide al exportar

Una esfera en un programa de modelado es una esfera matemática. Un STL de esa esfera son unos miles de triángulos planos haciéndose pasar por una, y cuántos son lo decide quien exportó el archivo. Pocos y la pieza sale facetada; demasiados y el archivo es enorme y el laminador va lento.

Es la única decisión que después no se puede deshacer. Un STL basto no se puede suavizar hasta recuperar la curva, porque la curva ya no está: solo queda la aproximación. Exporta desde el modelo original con la tolerancia que pida la pieza y guarda ese original. El STL es un formato de entrega, no el archivo maestro.

Estanco, y por qué el laminador rechaza un archivo

Un modelo imprimible tiene que describir un sólido sin ambigüedad. Eso significa que cada arista la comparten exactamente dos triángulos, que no hay agujeros y que todas las normales apuntan hacia fuera. Una malla así se llama estanca o variedad, y es la propiedad que le permite al laminador decidir qué queda dentro.

Los modelos la incumplen constantemente, casi siempre porque se hicieron para renderizar. Una superficie sin espesor se ve perfecta en pantalla y no se puede imprimir. Dos cuerpos que se solapan y nunca se fusionaron dejan caras interiores. Un agujero en la malla obliga al laminador a adivinar, y o rechaza el archivo o rellena algo que tú no querías. Las herramientas de reparación arreglan casi todos los casos solas, y conviene pasar una antes de la impresión y no después.

El problema de las unidades, justo donde más duele

Los números de un STL no tienen dimensión. El archivo dice 25,4 y no dice si eso son milímetros o pulgadas, así que un modelo diseñado en pulgadas abierto en un laminador que trabaja en milímetros se imprime a una veinticincoava parte de su tamaño, o veinticinco veces más grande en el sentido contrario.

Casi todo el mundo de la impresión 3D asume milímetros y casi todos los laminadores vienen así. Comprueba las dimensiones de la caja envolvente que muestra el laminador contra lo que la pieza debería medir de verdad antes de empezar. Son cinco segundos y es la diferencia entre una pieza que encaja y una lección lenta y cara.

ASCII y binario son el mismo formato

La especificación admite dos codificaciones. La ASCII escribe cada coordenada como texto legible, lo que multiplica el tamaño por cinco o seis y permite abrir el archivo en un editor. La binaria escribe cincuenta bytes por triángulo y es lo que produce y espera prácticamente todo.

Usa binario salvo que algo pida lo contrario expresamente. La única ventaja real del ASCII es que una persona puede inspeccionarlo, cosa que sirve de vez en cuando para diagnosticar una exportación rota y no sirve nunca para imprimir. Pasar de una codificación a la otra no cambia nada de la geometría.

El color vive en otros formatos

El STL no tiene ninguno. Existen extensiones no oficiales que meten color en bytes que estaban sin usar, y el soporte es lo bastante desigual como para que no convenga apoyarse en ellas.

Esto pesa cada vez más, a medida que la impresión multimaterial y a todo color se vuelve corriente. Si una pieza necesita más de un color, el archivo tiene que ser 3MF u OBJ, que sí llevan asignaciones de material como es debido. El 3MF es la respuesta moderna en general —es una especificación de verdad, con unidades, materiales y ajustes de impresión— y si no ha sustituido al STL es por inercia, no por méritos.

Del STL al objeto: el laminador manda

El STL no se envía a la impresora. Entra en un laminador, que lo orienta, añade soportes donde un voladizo imprimiría en el aire y lo corta en capas para producir el G-code, que son las instrucciones reales de la máquina. Todas las decisiones que determinan si la pieza sale bien se toman en el laminador, no en el archivo.

Por eso lo que hay que tener bien en el STL es poco y concreto: la escala correcta, la malla estanca y triángulos suficientes para describir las curvas al tamaño al que se va a imprimir. El relleno, los perímetros, la temperatura y los soportes vienen después, y ninguno de ellos rescata una malla con agujeros.

Qué conserva esta conversión y qué se queda por el camino

Lo que se convierte aquí es geometría: dónde están los triángulos. No hay sitio en el modelo intermedio para materiales, texturas, coordenadas UV, normales, colores por vértice, cámaras, luces, animaciones ni para el propio grafo de escena, así que nada de eso llega. Las transformaciones de los nodos sí, porque se aplican directamente sobre los vértices, y las unidades de un 3MF se llevan a milímetros al entrar.

Hacia STL hay dos consecuencias que conviene esperar. Se escribe siempre en binario, nunca en ASCII. Y todas las mallas del origen se funden en una sola, con lo que se pierden los nombres de las piezas: un ensamblaje con veinte componentes sale como un único cuerpo. Los polígonos de más de tres lados se triangulan en abanico, que es correcto en caras convexas y no lo es en las cóncavas.

Los archivos que el conversor rechaza en vez de estropear

Un glTF que apunta a un `.bin` externo se rechaza con una frase que te dice que conviertas el GLB en su lugar, porque el archivo de geometría está fuera y aquí solo llega el que sueltas. La compresión Draco también se rechaza, y de un glTF solo se leen las primitivas de triángulos: tiras, abanicos, líneas y puntos se saltan.

Una nube de puntos en PLY se rechaza igualmente, y por un motivo de fondo: convertir puntos en superficie es reconstruir, no convertir, y el resultado sería una invención con aspecto de conversión. En la otra dirección, si un STL binario lleva la palabra `solid` en su cabecera de 80 bytes —cosa que la especificación permite y que varios programas hacen—, aquí se detecta por aritmética sobre el tamaño del archivo y no por esa palabra, que es la razón por la que un STL binario mal etiquetado no se lee como si fuera texto. Todo esto ocurre en el navegador, con un límite de 100 MB por archivo.

Los datos, en un solo sitio

Identificadores y procedencia del formato STL.
Extensión.stl
Tipo de mediomodel/stl
Publicado por3D Systems
Primera publicación1987