Skip to main content

Parametric configuration and tooling for build123d models.

Project description

bdbox

A live development environment for build123d models.

License PyPI Python CI Coverage Renovate GitHub stars

See the documentation site for full project details!

Installation

pip install bdbox

Works with any build123d model

Use bdbox with build123d models:

# mymodel.py
from build123d import Box

result = Box(10, 10, 10)

Export to STEP or STL with bdbox:

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

Python module paths work too:

bdbox mypackage.mymodule.mymodel export out.step
python -m mypackage.mymodule.mymodel export out.step

A specific model class can be chosen from a module using bdbox:

bdbox mypackage.mymodule.mymodel:MyModel export out.step

View your model in your browser with OCP CAD Viewer, started automatically. bdbox automatically re-renders your model on save:

bdbox mymodel.py view
bdbox mypackage.mymodule.mymodel view

See more about actions in the documentation!

Add parameters for interactive customization

Easily create parametric models using bdbox! Declare typed parameters with defaults, then override them individually or with named presets:

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 the provided base class 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
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.6.0.tar.gz (55.2 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.6.0-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for bdbox-0.6.0.tar.gz
Algorithm Hash digest
SHA256 f27502ef5ce254ba333ac8cdbbed14650f03e3f1e1bd5e47729dc5537991eca5
MD5 1201481324e934789d083b3929c480c5
BLAKE2b-256 b9a4e3bfa6d070179b94ea981ea14b05f5e30e2ee0605cf04296de0fc725198a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdbox-0.6.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.6.0-py3-none-any.whl.

File metadata

  • Download URL: bdbox-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 33.5 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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13629d96eb19eed51d924979e172d3c76f88373e73dfd1f76f4b8d394bd70e06
MD5 d08262b793464b3387af555121f9687a
BLAKE2b-256 1c415c85e5d6c6ab4d3f350576440d81527c3fac1503b12191c0deab601233b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdbox-0.6.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