¿Qué es STL?
STL — originalmente STereoLithography, ahora también interpretado como Standard Triangle Language — es el formato más antiguo y universal para impresión 3D. Creado por Chuck Hull de 3D Systems en 1987, STL describe superficies 3D como una malla de facetas triangulares. A pesar de su antigüedad y numerosas limitaciones, STL sigue siendo el formato dominante para impresoras FDM, SLA, SLS y prácticamente todos los slicers de impresoras 3D de consumo.
El éxito duradero de STL proviene de una propiedad clave: la simplicidad. Almacena solo triángulos — sin textura, sin color, sin material, sin jerarquía, sin animación.
Estructura del Archivo STL
STL viene en dos variantes: ASCII y Binario.
STL ASCII
solid cubo
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 1 0 0
vertex 1 1 0
endloop
endfacet
...
endsolid cubo
Cada facet define un triángulo con un vector normal y tres vértices en orden antihorario visto desde el exterior (regla de la mano derecha).
STL Binario
STL binario es mucho más compacto — 80 bytes de cabecera fija, luego contador de triángulos de 4 bytes, luego registros de 50 bytes por triángulo:
Bytes 0-79: Cabecera (texto ASCII, no terminado en nulo)
Bytes 80-83: Número de triángulos (uint32, little-endian)
Por cada triángulo:
Bytes 0-11: Vector normal (3 × float32)
Bytes 12-23: Vértice 1 (3 × float32)
Bytes 24-35: Vértice 2 (3 × float32)
Bytes 36-47: Vértice 3 (3 × float32)
Bytes 48-49: Recuento de bytes de atributo (uint16, normalmente 0)
STL binario es aproximadamente 5× más pequeño que ASCII STL para la misma malla.
Problemas Comunes de Calidad de Malla
| Problema | Causa | Solución |
|---|---|---|
| Aristas no manifold | Arista compartida por más/menos de 2 triángulos | Reparar con Meshmixer, Netfabb |
| Normales invertidas | Orden de devanado inconsistente | Recalcular normales en Blender o MeshLab |
| Agujeros en la malla | Triángulos faltantes | Rellenar agujeros en Meshmixer, MeshLab |
| Auto-intersecciones | Triángulos que se penetran entre sí | Unión booleana en OpenSCAD o Blender |
Herramientas de reparación:
- Meshmixer: gratuito, GUI, excelente reparación automática
- MeshLab: gratuito, código abierto, potente pipeline de procesamiento de mallas
- PrusaSlicer / Cura: reparación automática durante el corte
STL No Tiene Unidades
STL no tiene unidades. Una coordenada de 25.4 podría significar 25.4 mm, 25.4 pulgadas, o cualquier otra cosa. La interpretación de la unidad se acuerda por convención:
- La mayoría del software CAD usa milímetros por defecto.
- Algunos programas (AutoCAD) usan pulgadas por defecto.
- El software slicer asume normalmente milímetros.
Cuando una impresión es 25.4× demasiado grande o pequeña, suele ser un desajuste mm/pulgadas — escala por 25.4 o 1/25.4.
Flujo de Trabajo de Impresión 3D con STL
[CAD / Modelo 3D] → Exportar como STL
→ [Slicer: Cura / PrusaSlicer / ChituBox]
→ Configurar: altura de capa, % relleno, soportes, orientación
→ Cortar → Generar G-code / .ctb / .photon
→ Enviar a impresora
→ Imprimir
Configuraciones clave del slicer:
- Altura de capa: 0.1–0.3 mm para FDM; 0.025–0.1 mm para SLA
- Relleno: 15–20% para decorativo; 40–60% para funcional
- Soportes: árbol o normal, basado en ángulo de voladizo (normalmente > 45°)
- Orientación: minimizar soportes, maximizar adhesión a la cama
Limitaciones de STL
STL no puede representar:
- Color o textura: usa AMF o 3MF
- Múltiples materiales: no hay regiones de material
- Metadatos: sin autor, fecha o propiedades de pieza
- Superficies curvas: solo aproximaciones de triángulos
- Unidades: solo acordadas por convención
Alternativas Modernas
3MF (3D Manufacturing Format): basado en XML, admite color, materiales, texturas, múltiples piezas y metadatos. Se está convirtiendo en el formato preferido para impresión FDM profesional.
AMF (Additive Manufacturing Format): alternativa XML similar con menor adopción que 3MF.
Programación con STL
Python (numpy-stl):
from stl import mesh
import numpy as np
# Cargar STL
modelo = mesh.Mesh.from_file('modelo.stl')
print(f"Triángulos: {len(modelo.vectors)}")
print(f"Volumen: {modelo.get_mass_properties()[0]:.2f} mm³")
Conversión de STL
- STL → OBJ: Blender, MeshLab, FreeCAD.
- STL → 3MF: Cura, PrusaSlicer, o Windows 3D Builder.
- STL → STEP/IGES: FreeCAD o Autodesk Fusion 360.
- STL → PNG (render): Blender importar + renderizar.
- OBJ/FBX → STL: Blender (Archivo → Exportar → STL).
- SCAD → STL: compilación OpenSCAD (F6).
Buenas Prácticas
- Usa STL binario — 5× más pequeño que ASCII, universalmente compatible.
- Diseña en milímetros — acuerda con el slicer para evitar errores de escala.
- Asegura una malla estanca — sin agujeros, sin aristas no manifold antes de exportar.
- Mantén el conteo de triángulos razonable: 50K–500K para impresiones FDM típicas.
- Ejecuta Meshmixer Auto-Repair antes de cortar modelos complejos.
- Usa 3MF en lugar de STL al enviar a servicios de impresión profesionales.
- Guarda el archivo CAD original junto con STL para modificaciones futuras.
- Verifica el cuadro delimitador en el slicer para comprobar la escala antes de imprimir.
- Para impresiones de múltiples materiales, usa 3MF o archivos STL separados por material.
- Orienta el modelo correctamente antes de exportar para minimizar el postprocesado.
Conversiones relacionadas
Conversiones frecuentes del catálogo: