Archivos STL: Todo lo que debes saber sobre este formato y sus alternativas

STL, render

Si te has adentrado en el mundo de la impresión 3D, seguro que has visto en más de un lugar las siglas STL. Estas siglas hacen referencia a un tipo de formato de archivo (con extensión .stl) que ha sido muy importante, aunque ahora existen algunas alternativas. Y es que, los diseños 3D no pueden ser impresos tal cual, como bien sabrás, y necesitan de unos pasos intermedios.

Cuando se tiene el concepto de modelo 3D, se debe usar un software para diseño CAD y generar el render. Después se puede exportar a un formato STL para luego pasarlo por un slicer que lo «rebanea» para crear, por ejemplo, un GCode que sea comprensible por la impresora 3D y que así pueda ir creado las capas hasta completar la pieza. Pero, no te preocupes si no lo comprendes del todo, aquí te explicaremos todo lo que necesitas saber.

Procesamiento del modelo 3D

Blender

Con las impresoras convencionales se tiene un programa, como puede ser un lector de PDFs, o un editor de texto, un procesador de texto, etc., en el que hay una función para impresión que al pulsarla el documento irá a la cola de impresión para que sea impreso. Sin embargo, en las impresoras 3D es un poco más complejo, ya que se necesitan 3 categorías de software para que funcione:

  • Software de modelado 3D: pueden ser herrameintas de modelado o CAD en las que crear el modelo que se desea imprimir. Algunos ejemplos son:
    • TinkerCAD
    • Blender
    • BRL-CAD
    • DesignSpark Mechanical
    • FreeCAD
    • OpenSCAD
    • Wings3D
    • Autodesk AutoCAD
    • Autodesk Fusion 360
    • Autodesk Inventor
    • 3D Slash
    • Sketchup
    • MoI 3D
    • Rhino3D
    • Cinema 4D
    • SolidWorks
    • Maya
    • 3DS Max
  • Slicers: es un tipo de software que coge el archivo diseñado por alguno de los programas anteriores y lo rebanea, es decir, lo corta en capas. De esta forma, podrá ser comprensible por la impresora 3D, que, como sabes, va construyendo capa a capa, y lo convierte en G-Code (un lenguaje predominante entre la mayoría de fabricantes de impresoras 3D). En estos archivos también se incluyen datos adicionales como la velocidad de impresión, temperatura, altura de las capas, si hay multiextrusión, etc. Básicamente una herramienta CAM que genera todas las instrucciones para que la impresora sea capaz de fabricar el modelo. Algunos ejemplos son:
    • Ultimaker Cura
    • Repetier
    • Simplify3D
    • Slic3r
    • KISSlicer
    • ideaMaker
    • OctoPrint
    • 3DPrinterOS
  • Printer host o software host: en impresión 3D se refiere a un programa cuya utilidad es recibir el archivo GCode desde el slicer y entrega el código a la propia impresora, normalmente a través de un puerto USB, o por red. De esta forma, la impresora puede ir interpretando esta «receta» de comandos GCode con las coordenadas X (0.00), Y (0.00) y Z (0.00) a las que debe ir desplazando el cabezal para crear el objeto y los parámetros necesarios. En muchas ocasiones, el software host está integrado en el propio slicer, por lo que suelen ser un solo programa (véase ejemplos de Slicers).
Mientras que en el software de diseño se tiene libertad para elegir el que convenga, en el caso de los otros dos no es así. Las impresoras 3D suelen soportar solo uno o varios de ellos, pero no son compatibles con todos.

Estos dos últimos puntos suelen venir con la propia impresora 3D, como los drivers de las impresoras convencionales. Sin embargo, el software de diseño lo tendrás que elegir por separado.

Slicing: qué es un slider 3D

En el apartado anterior has conocido algo más sobre un slider, es decir, el software que corta el modelo 3D diseñado para obtener las capas necesarias, sus formas y dimensiones para que la impresora 3D sepa cómo crearla. Sin embargo, el proceso del slicing en impresión 3D es bastante interesante y una fase fundamental en el proceso. Por eso, aquí podrás obtener más información de éste.

slice, slicing 3D

El proceso de slicing paso a paso difiere ligeramente en función de la tecnología de impresión 3D empleada. Y básicamente se puede distinguir entre:

  • FDM slicing: en este caso, se necesita control preciso de varios ejes (X/Y), ya que van moviendo el cabezal en dos ejes y necesitan en gran medida del movimiento del cabezal de impresión para construir el objeto tridimensional. También incluirá parámetros como la temperatura de la boquilla y el enfriamiento. Una vez el slicer ha generado el GCode, serán los algoritmos del controlador interno de la impresora el encargado de ejecutar los comandos necesarios.
  • SLA slicing: en este caso, los comandos también deben incluir los tiempos de exposición y las velocidades de elevación. Y esto es debido a que, en vez de ir depositando capas por extrusión, debe dirigir el haz de luz a diferentes partes de la resina para solidificarla y crear capas, a la par que va elevando el objeto para permitir que otra nueva capa pueda crearse. Esta técnica necesita de menos movimientos que la FDM, ya que solo se controla un espejo reflector para dirigir el láser. Además, hay que resaltar algo importante, y es que este tipo de impresoras no suelen usar GCode, sino que suelen tener sus propios códigos patentados (por tanto, necesitan su propio software de corte o slicer). No obstante, existen algunos genéricos para SLA como ChiTuBox y FormWare, que son compatibles con muchas impresoras 3D de este tipo.
  • DLP y MSLA slicing: en este otro caso, será similar al SLA, pero con la diferencia de que el único movimiento necesario en estas será el de la placa de construcción, que viajará a lo largo del eje Z durante el proceso. La demás información irá orientada al panel o pantalla de exposición.
  • Otras: para el resto, como SLS, SLM, EBM, etc., puede haber diferencias notables en los procesos de impresión. Ten en cuenta que, en estos tres casos citados, también se agrega otra variable, como es la inyección del aglomerante y requiere de un proceso de slicing más complejo. Y a eso hay que agregar que un modelo de impresora SLS de una marca, no funcionará igual que la impresora SLS de la competencia, por lo que se requiere software de corte específico (suelen ser programas propietarios de los que provee el propio fabricante).

Por último, me gustaría agregar que existe una empresa belga llamada Materialise que ha creado un complejo software que sirve en todas las tecnologías de impresión 3D y un potente controlador para impresoras 3D llamado Magics. Además, este software se puede mejorar con módulos para generar el archivo de corte apropiado para máquinas específicas.

Archivos STL

archivo STL

Hasta ahora se han realizado referencias a los archivos STL, que son el núcleo de este artículo. Sin embargo, aún no se ha profundizado sobre este popular formato. En este apartado podrás conocerlo a fondo:

¿Qué es un archivo STL?

El formato de archivo STL es un archivo con lo que la controladora de la impresora 3D necesita, es decir, para que el hardware de la impresora pueda imprimir la forma deseada, dicho de otro modo, permite codificar la geometría de la superficie de un objeto tridimensional. Fue creado por Chuck Hull de 3D Systems en la década de los 80s, y el acrónimo no está del todo claro.

La codificación geométrica la se puede codificar mediante Tessellation (teselación), interponiendo las formas geométricas de tal forma que no haya superposiciones ni tampoco espacios, es decir, como un mosaico. Por ejemplo, se pueden componer formas mediante el uso de triángulos, como sucede en la renderización de la GPU. Una fina malla compuesta por triángulos formará toda la superficie del modelo 3D, con la cantidad de triángulos y las coordenadas de sus 3 puntos.

STL binario vs STL ASCII

Se diferencia entre STL en formato binario y STL en formato ASCII. Dos formas de almacenar y representar la información de estos mosáicos y otros parámetros. Un ejemplo del formato ASCII sería:


solid <nombre>

facet normal nx ny nz
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet

endsolid <nombre>

Donde «vertex» serán los puntos necesarios con sus respectivas coordenadas XYZ. Por ejemplo, para crear una forma de esfericón, puedes usar este código ASCII de ejemplo.

Cuando una forma 3D es muy compleja o de gran tamaño, implicará tener muchos pequeños triángulos, más aún si la resolución es mayor, que hará que los triángulos sean más pequeños para suavizar las formas. Eso genera archivos STL ASCII enormes. Para compactar eso, se emplean los formatos STL binarios, como por ejemplo:


UINT8[80] – Header                               - 80 bytes o caracteres de cabecera
UINT32 – Nº de triángulos                    - 4 bytes
for each triangle                                        - 50 bytes
REAL32[3] – Normal vector                  - 12 bytes para el plano de la normal
REAL32[3] – Vertex 1                              - 12 bytes para el vector 1
REAL32[3] – Vertex 2                             - 12 bytes para el vector 2
REAL32[3] – Vertex 3                             - 12 bytes para el vector 3
UINT16 – Attribute byte count              - 2-bytes por triángulo (+2-bytes para información adicional en algunos software)
end

Si lo deseas, aquí tienes un archivo STLB o STL binario de ejemplo para formar un simple cubo.

Por último, si te preguntas si es mejor un ASCII o un binario, lo cierto es que los binarios siempre son los recomendables para la impresión 3D por su menor tamaño. Sin embargo, si deseas inspeccionar el código y depurarlo manualmente, entonces no te queda otra forma de hacerlo que usando ASCII y un edito, ya que resulta más intuitivo para interpretarlo.

Ventajas y desventajas del STL

Los archivos STL tienen sus ventajas y desventajas, como es habitual. Es importante que las conozcas para determinar si es el formato adecuado para tu proyecto o cuándo no lo debes usar:

  • Ventajas:
    • Es un formato universal y compatible con casi todas las impresoras 3D, por eso es tan popular frente a otros como VRML, AMF, 3MF, OBJ, etc.
    • Posee un ecosistema maduro, y es fácil de encontrar todo lo necesario en Internet.
  • Desventajas:
    • Limitaciones en cuanto a la cantidad de información que puede incluir, ya que no se puede usar para colores, facetas, ni otros metadatos adicionales para incluir derechos de autor o autoría.
    • La fidelidad es otro de sus puntos débiles. La resolución no es demasiado buena cuando se trabaja con impresoras de alta resolución (micrométrica), ya que la cantidad de triángulos necesaria para describir las curvas de forma suave sería inmensa.

No todos los STL sirven para imprimir en 3D

Parece que cualquier archivo STL puede servir para imprimir en 3D, pero lo cierto es que no todos los .stl son imprimibles. Simplemente es un archivo con un formato para contener datos geométricos. Para que se puedan imprimir necesitarían tener detalles de los espesores, y otros detalles necesarios. En definitiva, el STL te garantiza que el modelo se pueda ver bien en la pantalla del PC, pero puede que la figura geométrica no sea sólida si se imprimiese tal cual.

Por tanto, intenta verificar que el STL (si no lo has creado tú) es válido para la impresión 3D. Eso te ahorrará mucho tiempo perdido y también filamento o resina desperdiciada en un modelo erróneo.

Controversia

Para finalizar este punto, deberías saber que existe algo de controversia sobre si se debe usar este tipo de archivo o no. Aunque aún existen muchos pululando por ahí, algunos ya dan por muerto al STL frente a las alternativas. Y algunas de las razones que dan para evitar el STL para los diseños 3D son:

  • Resolución pobre ya que, al triangular, se perderá algo de calidad frente al modelo CAD.
  • Se pierde el color y texturas, algo que ya permiten otros formatos más actuales.
  • Sin control de relleno avanzado.
  • Otros archivos son más productivos a la hora de editarlos o revisarlos que un STL en caso de ser necesaria alguna rectificación.

Software para .stl

CAD vs STL

Algunas de las dudas más frecuentes sobre el formato de archivo STL suelen ser referentes a cómo se puede crear este formato, o cómo se puede abrir, e incluso cómo se puede modificar. Aquí tienes estas aclaraciones:

Cómo abrir un archivo STL

Si te preguntas cómo abrir un archivo STL, lo puedes hacer de varias formas. Una de ellas es mediante algunos visualizadores online, o también con software instalado en tu equipo. Aquí tienes algunas de las mejores opciones:

Cómo crear un archivo STL

Para crear archivos STL, también tienes un buen repertorio de software para todas las plataformas, e incluso opciones online como:

*Existen algunas apps de edición 3D y modelado para dispositivos móviles como AutoCAD Mobile, Morphi, OnShape, Prisma3D, Putty, Sculptura, Shapr3D, etc., aunque no pueden trabajar con STL.

Cómo editar un archivo STL

En este caso, el software que es capaz de crear también permite editar un archivo STL, por tanto, para ver programas, puedes ver el punto anterior.

Alternativas

diseño 3D, formatos de archivos

Poco a poco han ido surgiendo algunos formatos alternativos para los diseños para la impresión 3D. Estos otros formatos también son muy importantes, y destacan:

Los archivos con este tipo de lenguaje no solo tienen una extensión, sino que se pueden presentar en varias. Algunas son .gcode, .mpt, .mpf, .nc, etc.
  • PLY (Polygon File Format): estos archivos tienen extensión .ply y es un formato para polígonos o triángulos. Fue diseñado para almacenar datos tridimensionales de escáneres 3D. Se trata de una descripción geométrica simple de un objeto, así como otras propiedades como el color, la transparencia, las superficies normales, coordenadas de textura, etc. Y, al igual que le ocurre al STL, existe una versión ASCII y otra binaria.
  • OBJ: los archivos con extensión .obj también son archivos de definición de geometría. Fueron desarrollados por Wavefront Technologies para un software llamado Advanced Visualizer. Actualmente es abierto y ha sido adoptado por muchos programas gráficos para 3D. También almacena información simple de la geometría de un objeto, como la posición de cada vértice, textura, normal, etc. Al declararse los vértices en sentido contrario a las agujas del reloj, no hace falta declarar explícitamente las caras normales. Además, las coordenadas de este formato no tienen unidades, pero sí que pueden contener información de la escala.
  • 3MF (3D Manufacturing Format): este formato se almacena en archivos .3mf, un estándar de código abierto desarrollado por 3MF Consortium. El formato de datos geométricos para fabricación aditiva se basa en XML. Puede incluir información sobre los materiales, sobre el color, etc.
  • VRML (Virtual Reality Modeling Language): fue creado por Web3D Consortium.  Estos archivos tienen un formato cuyo objetivo es representar escenas u objetos tridimensionales interactivos, además de color de la superficie, etc. Y son la base de los X3D (eXtensible 3D Graphics).
  • AMF (Additive Manufacturing Format): un formato de archivo (.amf) que también es un estándar de código abierto para la descripción de objetos para los procesos de fabricación aditiva para impresión 3D. También se basa en XML, y es compatible con cualquier software de diseño CAD. Y ha llegado como el sucesor de STL, pero con mejoras como la de incluir soporte nativo para colores, materiales, entramados y constelaciones.
  • WRL: extensión de VRML.

¿Qué es GCode?

GCode ejemplo

Fuente: https://www.researchgate.net/figure/An-example-of-the-main-body-in-G-code_fig4_327760995

Hemos comentado mucho sobre el lenguaje de programación GCode, ya que es una pieza clave en el proceso de impresión 3D en la actualidad, pasando del diseño STL a un G-Code que es un archivo con instrucciones y parámetros de control de la impresora 3D. Una conversión que realizará de forma automática el software slicer.

Sobre estos códigos veremos más en los artículos sobre CNC, ya que una impresora 3D no es más que una máquina tipo CNC que imprime…

Este código cuenta con comandos, que le indican a la impresora cómo y dónde extruir el material para conseguir la pieza, del tipo:

  • G: estos códigos son entendidos de forma universal por todas las impresoras que usan códigos G.
  • M: son códigos específicos para ciertas series de impresoras 3D.
  • Otros: también existen otros códigos nativos de otras máquinas, como las funciones F, T, H, etc.
Puedes ver ejemplos de G-Codes y los resultados gráficos en este enlace.

Como se puede ver en la imagen anterior del ejemplo, aparecen una serie de líneas de código que no son más que coordenadas y otros parámetros para indicarle a la impresora 3D lo que debe hacer, como si fuese una receta:

  • X, Y, Z: son las coordenadas de los tres ejes de impresión, es decir, lo que el extrusor debe desplazarse en una u otra dirección, siendo las coordenadas de origen 0,0,0. Por ejemplo, si hay un número superior a 0 en el X, se moverá hasta esa coordenada de en la dirección del ancho de la impresora 3D. Mientras que si hay un número por encima de 0 en el Y, el cabezal se moverá en la dirección hacia afuera y hacia adentro de la zona de impresión. Por último, cualquier valor superior a 0 en Z hará que se desplace hasta esa coordenada especificada de abajo a arriba. Es decir, respecto a la pieza, se puede decir que X sería el ancho, Y la profundidad o largo, y Z el alto.
  • F: indicará la velocidad a la que se mueve el cabezal de impresión indicada en mm/min.
  • E: se refiere a la longitud de la extrusión en milímetros.
  • ;: todo el texto que vaya precedido por ; es un comentario y la impresora lo ignora.
  • G28: se suele ejecutar al principio para que el cabezal se mueva hasta los topes. Si no se especifican ejes, la impresora moverá los 3, pero si se especifica uno concreto solo lo aplicará a ese.
  • G1: es uno de los comandos G más populares, ya que es el que ordena a la impresora 3D que deposite material mientras se mueve de forma lineal hasta la coordenada marcada (X,Y). Por ejemplo, el G1 X1.0 Y3.5 F7200 indica que deposite material a lo largo de la zona marcada por las coordenadas 1.0 y 3.5, y a una velocidad de 7200 mm/min, es decir, a 120 mm/s.
  • G0: hace lo mismo que G1, pero sin extruir material, es decir, mueve el cabezal sin depositar material, para aquellos movimientos o zonas en las que no se deba depositar nada.
  • G92: ordena a la impresora establecer la posición actual de sus ejes, algo práctico cuando se desea modificar la ubicación de los ejes. Muy usado justo al comienzo de cada capa o en la retracción.
  • M104: comando para calentar el extrusor. Se usa al principio. Por ejemplo, M104 S180 T0 indicaría que se caliente el extrusor T0 (si hay doble boquilla sería T0 y T1), mientras que S determina la temperatura, en este caso 180ºC.
  • M109: similar al anterior, pero indica que la impresión debe esperar hasta que el extrusor alcance la temperatura antes de continuar con cualquier otro comando.
  • M140 y M190: similares a los dos anteriores, pero no llevan parámetro T, ya que en este caso se hace referencia a la temperatura de la cama.

Por supuesto, este G-Code sirve para impresoras tipo FDM, ya que las de resina necesitarán otros parámetros, pero con este ejemplo es suficiente para que comprendas cómo funciona.

Conversiones: STL a…

conversión de archivos STL

Por último, otra de las cosas que más dudas genera entre los usuarios, dado la cantidad de formatos diferentes que existen sumando los de los diseños 3D CAD, y los códigos generados por los diferentes slicers, es cómo convertir de uno a otro. Aquí tienes algunos de las conversiones más buscadas:

Si haces una búsqueda en Google, verás que existen muchos servicios online de conversión, como AnyConv o MakeXYZ, que pueden convertir casi cualquier formato, aunque no todos funcionan bien, y no todos son gratuitos.
  • Convertir de STL a GCode: se puede convertir con software de slicing, ya que es uno de sus objetivos.
  • Pasar de STL a Solidworks: se puede hacer con el propio Solidworks. Abrir > en el explorador de archivos cambia a formato STL (*.stl) > Opciones > cambia Importar como a Cuerpo sólido o Superficie sólida > Aceptar > navega y pulsa sobre el STL que quieres importar > Abrir > ahora podrás ver el modelo abierto y el árbol de características a la izquierda > Imported > FeatureWorks > Recognize Features > y ya estaría listo.
  • Convertir una imagen a STL o JPG/PNG/SVG a STL: puedes usar servicios online como Imagetostl, Selva3D, Smoothie-3D, etc., o emplear algunas herramientas de IA, e incluso software como Blender etc., para generar un modelo 3D a partir de la imagen y luego exportar a STL.
  • Convertir de DWG a STL: es un archivo CAD, y se puede emplear multitud de software de diseño CAD para hacer la conversión. Por ejemplo:
    • AutoCAD: Salida > Enviar > Exportar > ingresar el nombre del archivo > selecciona tipo Litografía (*.stl) > Guardar.
    • SolidWorks: Archivo > Guardar como > Guardar como STL > Opciones > Resolución > Fina > Aceptar > Guardar.
  • De OBJ a STL: se pueden usar tanto servicios de conversión online, como también algunas herramientas de software local. Por ejemplo, con Spin3D puedes hacer lo siguiente: Añadir archivos > Abrir > elegir una carpeta destino en Guardar en carpeta > Selecciona Formato de salida > stl > pulsa el botón Convertir y espera a que termine el proceso.
  • Pasar de Sketchup a STL: lo puedes hacer con el propio Sketchup de forma fácil, ya que tiene función tanto para importar como para exportar. En este caso se necesita exportar siguiendo los pasos cuando tienes el archivo de Sketchup abierto: Archivo > Exportar > Modelo 3D > elige dónde guardar el STL > Guardar como STereolithography File (.stl) > Exportar.

Más información


2 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Rubén dijo

    Perfecto muy bien explicado y muy clarito.
    Gracias por la sintesis.

    1.    Isaac dijo

      Muchas gracias!