← Blog

Leer G-code binario de PrusaSlicer con stdlib

Cómo lee PrintStash los metadatos y las miniaturas de los archivos .bgcode de PrusaSlicer sin descodificar la trayectoria comprimida con heatshrink.

desarrollogcodeanálisis a fondo

PrusaSlicer puede exportar G-code binario como .bgcode. Los archivos suelen ser más pequeños que el G-code de texto equivalente, pero necesitan otro analizador. PrintStash v0.7.3 añadió la extracción de metadatos y miniaturas sin descodificar la trayectoria en sí.

Qué hay dentro de un archivo bgcode

Un archivo libbgcode empieza con una cabecera seguida de bloques con tipo. Los bloques de metadatos contienen los campos del slicer que normalmente están en los comentarios del G-code de texto. Los bloques de miniatura contienen imágenes PNG o JPEG incrustadas. La trayectoria vive en bloques aparte comprimidos con heatshrink.

Los metadatos y las miniaturas van sin comprimir o con deflate de zlib. Los módulos struct y zlib de Python bastan para recorrer esos bloques y extraer los campos que necesita una biblioteca.

El lector recoge la información del slicer y de la impresora, las temperaturas, la altura de capa, el relleno, las estimaciones de filamento, el tiempo, el material y la miniatura utilizable más grande. Se salta la trayectoria comprimida, así que una impresión grande no convierte el indexado de metadatos en una conversión completa de G-code.

Qué sigue sin estar soportado

Los proveedores de impresora de PrintStash envían G-code en texto plano. No pueden enviar con seguridad la trayectoria comprimida con heatshrink de un archivo .bgcode sin un descodificador y un paso de conversión verificado.

Por eso la interfaz muestra los metadatos y la miniatura incrustada, pero no ofrece vista previa de la trayectoria ni envío a la impresora. La API también rechaza un intento de envío. Todavía puedes descargar el archivo original y abrirlo en software que entienda BGCODE.

Ese límite es deliberado. Mostrar metadatos es un trabajo de indexado de solo lectura. Convertir e imprimir una trayectoria cuesta mucho más cuando el analizador se equivoca.

Archivos hostiles

De un contenedor con longitudes por delante no se puede confiar en que se describa a sí mismo con honestidad. Un archivo truncado puede afirmar que su siguiente bloque mide varios gigabytes. El lector comprueba cada longitud contra los límites configurados y contra los bytes que quedan en el archivo, y luego para de forma limpia cuando la estructura no es válida.

Los tests cubren contenedores sintéticos malformados y una muestra real de PrusaSlicer. Esa combinación pilla los errores de límites sin pretender que un ejemplo hecho a mano represente todo el formato.

El lector se queda dentro de lo que la biblioteca necesita de verdad: metadatos y una miniatura. La conversión de trayectorias se podrá añadir solo cuando tenga un descodificador probado y un flujo de impresión seguro.

BGCODE puede seguir estando al lado de las revisiones en texto plano dentro del flujo de revisiones de G-code, pero elige una revisión de texto imprimible antes de enviar a través de un proveedor actual.