Skip to main content

bdbox

bdbox is a workshop for build123d models with live preview and interactive parameters.

License PyPI Python CI Coverage Renovate GitHub stars

Screenshot

See the documentation site for full project details!

Why?

I discovered build123d after modeling with OpenSCAD. build123d has some great advantages over OpenSCAD:

Comparatively, build123d's development experience was lacking. OpenSCAD previews a model on save or hotkey, makes exporting a model render simple, and even provides a GUI for setting toplevel variables! I started with some self-made tooling to work around these drawbacks, but having to remember how to use and maintain it resulted in me working on models less.

I built bdbox to be the missing tool I wanted: Let models just define their geometry plus optional parameters, and let bdbox handle everything else!

See more background info in the documentation!

Installation

Install user-wide with uv or pipx for use across all projects:

uv tool install bdbox
pipx install bdbox

Install in any environment where pip is available:

pip install bdbox

Installation in projects

Install in a project, such as with uv or poetry:

uv add bdbox
poetry add bdbox

bdbox detects and automatically uses virtual environments also containing bdbox.

This enables running via bdbox model.py instead of uv run bdbox model.py, for example.

Works with any build123d model

Use bdbox with any existing build123d script:

# mymodel.py
from build123d import Box

result = Box(10, 10, 10)

Export geometry files:

bdbox mymodel.py export           # Export STEP files to current directory
bdbox mymodel.py export output/   # Export STEP files to output/
bdbox mymodel.py export -f stl    # Export STL files to current directory

View your model using the web UI, which includes OCP CAD Viewer and an interactive parameters panel:

bdbox mymodel.py view

Module paths work too:

bdbox mypackage.mymodule view
bdbox mypackage.mymodule export

See more about actions in the documentation!

Add parameters

Declare typed parameters with defaults and constraints:

from bdbox import Float, Int, Params, Preset, show
from build123d import Box

class P(Params):
    width = Float(10.0, min=5, max=100)
    length = Float(20.0, min=5, max=100)
    thickness = Int(2, min=1, max=10)
    presets = (
        Preset("small", width=5.0, length=8.0),
        Preset("large", width=80.0, length=40.0, thickness=5),
    )

result = Box(P.width, P.length, P.thickness)
show(result)

Or inherit from Model for reusable, importable models:

from bdbox import Float, Int, Model, Preset
from build123d import Box

class MyModel(Model):
    width = Float(10.0, min=5, max=100)
    length = Float(20.0, min=5, max=100)
    thickness = Int(2, min=1, max=10)
    presets = (
        Preset("small", width=5.0, length=8.0),
        Preset("large", width=80.0, length=40.0, thickness=5),
    )

    def build(self):
        return Box(self.width, self.length, self.thickness)

Parameters become CLI flags automatically:

python mymodel.py                 # Run with default values
python mymodel.py view            # View with live reload and parameter panel
python mymodel.py --width 50      # Override a field value
python mymodel.py --preset large  # Apply a named preset
python mymodel.py --help          # Usage info with all parameters

Export geometry files using the built-in export action:

python mymodel.py export          # Export STEP files to current directory
python mymodel.py export -f stl   # Export STL files to current directory

See more about parameters in the documentation!

Project template

This project is generated and maintained with copier-python.

Release files for bdbox 0.28.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bdbox 0.28.0
File Size Uploaded
bdbox-0.28.0.tar.gz 414.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bdbox 0.28.0
File Interpreter ABI Platform
bdbox-0.28.0-py3-none-any.whl Python 3 none any Details

Total release size: 758.2 kB

Release files / bdbox-0.28.0.tar.gz

Download URL bdbox-0.28.0.tar.gz
Size 414.6 kB
Tags Source
SHA-256 checksum
How to use checksums
619c5463e2b085a9d68ba56d8403566c2c4046c188bfb5dff18817306b40fb13
BLAKE2b-256 checksum
How to use checksums
80ce9bad92869a85fbad05f9037241c93602878ddfa13f7e454b57745c9f1226
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release files / bdbox-0.28.0-py3-none-any.whl

Download URL bdbox-0.28.0-py3-none-any.whl
Size 343.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
284bbc1abc1058ce72acf0a88d62d5f935c51b2935d843bcdfda4d3d621559f2
BLAKE2b-256 checksum
How to use checksums
f3055a6cb0fd0d9bee7f85392a5207ea0f6475309d7a01fd24f63ec6ade99598
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release history Release notifications | RSS feed

0.28.1

2 release files

This release

0.28.0 This release

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.2

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page