Skip to main content

Package plain G-code into Bambu Lab .gcode.3mf files

Project description

bambox

Package plain G-code into Bambu Lab .gcode.3mf files — no OrcaSlicer required.

bambox is a standalone Python library for creating printer-ready Bambu Lab archives from any G-code source. It handles the BBL-specific packaging format (metadata, checksums, settings) so that any slicer — CuraEngine, PrusaSlicer, KiriMoto, or a custom toolpath generator — can target Bambu printers.

Where This Fits

bambox is one piece of a three-project architecture that decouples estampo from OrcaSlicer:

estampo (pipeline + slicer backends)
    ↓ G-code
bambox (packaging + settings generation)
    ↓ .gcode.3mf
bambu-cloud (printer communication)
    ↓ MQTT/FTP
Bambu printer

estampo orchestrates the build pipeline — plate arrangement, profile management, CI integration. It can invoke any slicer backend and delegates Bambu-specific concerns downward.

bambox (this project) owns two things: (1) the .gcode.3mf archive format that Bambu firmware requires, and (2) the slicer settings blob (project_settings.config) that would normally come from OrcaSlicer. It can generate the full 544-key settings from just a machine name and filament types.

bambu-cloud (currently the bridge module here, to be extracted) handles printer communication via the Bambu Network Library Docker bridge.

Each project is independently useful. You don't need estampo to use bambox, and you don't need bambox to use bambu-cloud.

Installation

pip install bambox

Packaging G-code

Python API

from pathlib import Path
from bambox import pack_gcode_3mf, SliceInfo, FilamentInfo

gcode = Path("plate_1.gcode").read_bytes()

info = SliceInfo(
    nozzle_diameter=0.4,
    filaments=[FilamentInfo(filament_type="PLA", color="00AE42")],
)

pack_gcode_3mf(gcode, Path("output.gcode.3mf"), slice_info=info)

With generated settings (no OrcaSlicer)

from bambox.settings import build_project_settings

settings = build_project_settings(
    filaments=["PETG-CF"],
    machine="p1s",
    filament_colors=["2850E0FF"],
    overrides={"layer_height": "0.2"},
)

pack_gcode_3mf(
    gcode,
    Path("output.gcode.3mf"),
    slice_info=info,
    project_settings=settings,
)

CLI

# Package G-code into a .gcode.3mf
bambox pack plate_1.gcode -o output.gcode.3mf

# Query printer status and AMS tray info
bambox status DEVICE_SERIAL

# Send a .gcode.3mf to a Bambu printer via cloud
bambox print output.gcode.3mf --device DEVICE_SERIAL

Modules

pack — Core Packager

Takes G-code bytes and produces a .gcode.3mf ZIP archive with all required metadata files (slice_info, model_settings, project_settings, thumbnails, MD5 checksums). Supports both OrcaSlicer 2.3.1 and BambuStudio 2.5.0.66 format variants.

Key types: SliceInfo, FilamentInfo, ObjectInfo, WarningInfo

settings — Slicer-Agnostic Settings Generator

Generates the full project_settings.config (544 keys) from a machine base profile and per-filament-type data files. No OrcaSlicer in the loop.

Available machines: p1s Available filaments: pla, asa, petg_cf

from bambox.settings import available_machines, available_filaments, build_project_settings

bridge — Cloud Printing

Wraps the Bambu cloud bridge Docker image to send prints, query printer status, and handle AMS tray mapping. Reads credentials from ~/.config/estampo/credentials.toml.

from bambox.bridge import cloud_print, query_status

BBL .gcode.3mf Format

A .gcode.3mf is a ZIP archive containing 13–17 files:

File Purpose
Metadata/plate_1.gcode The actual G-code
Metadata/slice_info.config Print metadata (time, weight, filaments)
Metadata/project_settings.config Full slicer settings (536–544 keys)
Metadata/model_settings.config Per-plate filament mapping
Metadata/plate_1.png Thumbnail (required by firmware)
3D/3dmodel.model OPC/3MF model XML
[Content_Types].xml OPC content types
_rels/.rels OPC relationships

BambuStudio adds: cut_information.xml, filament_sequence.json, top_N.png, pick_N.png.

All files include MD5 checksums validated by the printer firmware.

Development

uv pip install -e .
uv run ruff check src tests
uv run mypy src/bambox
uv run pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bambox-0.1.0.tar.gz (827.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bambox-0.1.0-py3-none-any.whl (46.0 kB view details)

Uploaded Python 3

File details

Details for the file bambox-0.1.0.tar.gz.

File metadata

  • Download URL: bambox-0.1.0.tar.gz
  • Upload date:
  • Size: 827.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bambox-0.1.0.tar.gz
Algorithm Hash digest
SHA256 87966070d2b808028b10743720632b9050303eb9162a4881458994d671e556fa
MD5 8a8a711e2c4f910393d34dd89d513552
BLAKE2b-256 27c9f15dc6cb6339c67e733da942bb83677ec69a5038ceddb58c19c4515405e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bambox-0.1.0.tar.gz:

Publisher: release.yml on estampo/bambox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bambox-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bambox-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 46.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bambox-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29041be84951dbae8ea310a808c8d2d4e78de8fff7677f334637957afa0bcd75
MD5 79165d12563412bcb555e58b92f61c4b
BLAKE2b-256 d902df37d95491205c53bff090428293cf4524c40dee03d2688fb9a452be704b

See more details on using hashes here.

Provenance

The following attestation bundles were made for bambox-0.1.0-py3-none-any.whl:

Publisher: release.yml on estampo/bambox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page