Skip to main content

build123d development with live preview and interactive parameters.

Project description

bdbox

build123d development 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

pip install bdbox

Works with any build123d model

Use bdbox with any existing build123d script — no imports required:

# mymodel.py
from build123d import Box

result = Box(10, 10, 10)

Export to STEP or STL:

bdbox mymodel.py export out.step  # Export to STEP
bdbox mymodel.py export out.stl   # Export to STL

View your model in the browser with OCP CAD Viewer, started automatically:

bdbox mymodel.py view

Module paths work too:

bdbox mypackage.mymodule view
bdbox mypackage.mymodule export out.step

See more about actions in the documentation!

Interactive parameter panel

Add parameters to your model and run with view to open an interactive parameter panel in your browser. Adjust sliders, enter values, and select presets — the model re-renders automatically on every change.

See more about the parameter panel 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 to STEP or STL files using the built-in export action:

python mymodel.py export output.step  # Export to STEP
python mymodel.py export output.stl   # Export to STL

See more about parameters in the documentation!

Project template

This project is generated and maintained with copier-python.

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

bdbox-0.8.0.tar.gz (173.9 kB view details)

Uploaded Source

Built Distribution

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

bdbox-0.8.0-py3-none-any.whl (130.2 kB view details)

Uploaded Python 3

File details

Details for the file bdbox-0.8.0.tar.gz.

File metadata

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

File hashes

Hashes for bdbox-0.8.0.tar.gz
Algorithm Hash digest
SHA256 933c387aa7899d2f88d8c4db675e851ef9178ef94cf6686e0e4e3fb1cba31302
MD5 0fd2e3b5b7605668a75ed196962ac844
BLAKE2b-256 1c2a4f4a12eba652a92e24c62b2e39b51a77dc04b0d7e6d2d13cd0edbd79bbef

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdbox-0.8.0.tar.gz:

Publisher: release.yaml on smkent/bdbox

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

File details

Details for the file bdbox-0.8.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for bdbox-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd98b916bf862376c421fe42512f61013b0d64f69da38a0c7bf2d1aa823d239e
MD5 8fcbcb896c63d171feae7738e2576ef7
BLAKE2b-256 3aec55dfaa1c4af1b28bb5cc31fa5ca3738bbdb7f199af47859c63b3727a722b

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdbox-0.8.0-py3-none-any.whl:

Publisher: release.yaml on smkent/bdbox

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