Command Line Interface (CLI)¶
build123d models with bdbox are Python programs. When run directly, command line arguments are processed using tyro. Geometry is collected automatically after a model finishes running. No entry point or argument parsing code is needed.
Invocation modes¶
| Command | Effect |
|---|---|
bdbox model.py |
Build with all field defaults (equivalent to run) |
bdbox model.py --width 25 |
Override one or more fields |
bdbox model.py --preset large |
Apply a named preset |
bdbox model.py --preset large --width 25 |
Preset as baseline, then override |
bdbox model.py --help |
Show all fields, defaults, presets, and actions |
bdbox model.py run |
Explicitly run the model |
bdbox model.py view |
View geometry in OCP CAD Viewer |
bdbox model.py export |
Export geometry to STEP files |
bdbox model.py export -f stl |
Export geometry to STL files |
| Command | Effect |
|---|---|
bdbox mypackage.mymodule |
Build with all field defaults (equivalent to run) |
bdbox mypackage.mymodule --width 25 |
Override one or more fields |
bdbox mypackage.mymodule --preset large |
Apply a named preset |
bdbox mypackage.mymodule --preset large --width 25 |
Preset as baseline, then override |
bdbox mypackage.mymodule --help |
Show all fields, defaults, presets, and actions |
bdbox mypackage.mymodule run |
Explicitly run the model |
bdbox mypackage.mymodule view |
View geometry in OCP CAD Viewer |
bdbox mypackage.mymodule export |
Export geometry to STEP files |
bdbox mypackage.mymodule export -f stl |
Export geometry to STL files |
| Command | Effect |
|---|---|
python model.py |
Build with all field defaults (equivalent to run) |
python model.py --width 25 |
Override one or more fields |
python model.py --preset large |
Apply a named preset |
python model.py --preset large --width 25 |
Preset as baseline, then override |
python model.py --help |
Show all fields, defaults, presets, and actions |
python model.py run |
Explicitly run the model |
python model.py view |
View geometry in OCP CAD Viewer |
python model.py export |
Export geometry to STEP files |
python model.py export -f stl |
Export geometry to STL files |
| Command | Effect |
|---|---|
python -m mypackage.mymodule |
Build with all field defaults (equivalent to run) |
python -m mypackage.mymodule --width 25 |
Override one or more fields |
python -m mypackage.mymodule --preset large |
Apply a named preset |
python -m mypackage.mymodule --preset large --width 25 |
Preset as baseline, then override |
python -m mypackage.mymodule --help |
Show all fields, defaults, presets, and actions |
python -m mypackage.mymodule run |
Explicitly run the model |
python -m mypackage.mymodule view |
View geometry in OCP CAD Viewer |
python -m mypackage.mymodule export |
Export geometry to STEP files |
python -m mypackage.mymodule export -f stl |
Export geometry to STL files |
See the Actions documentation for full details,
including the view and export
actions and use of the bdbox runner.
Field flags¶
Each parameter becomes a --field-name flag. Underscores in field names are
converted to hyphens. For example, a value for:
wall_thickness = Float(3.0)
can be overridden with the option --wall-thickness.
Boolean fields¶
Boolean fields are represented as a pair of --flag / --no-flag options:
--hollow, --no-hollow (default: False)
bdbox model.py --hollow # Set to True
bdbox model.py --no-hollow # Set to False
bdbox mypackage.mymodule --hollow # Set to True
bdbox mypackage.mymodule --no-hollow # Set to False
python model.py --hollow # Set to True
python model.py --no-hollow # Set to False
python -m mypackage.mymodule --hollow # Set to True
python -m mypackage.mymodule --no-hollow # Set to False
Help output¶
--help lists every field with its type, description, and default value, plus
available presets and actions:
usage: MyBox [-h] [OPTIONS] [{run,view,export}]
╭─ options ──────────────────────────────────────────────╮
│ -h, --help show this help message and exit │
│ --preset {None,small,large} │
│ (default: None) │
│ --width 5 <= FLOAT <= 100 │
│ (default: 10.0) │
│ --thickness 1 <= FLOAT <= 10 │
│ (default: 3.0) │
╰────────────────────────────────────────────────────────╯
╭─ subcommands ──────────────────────────────────────────╮
│ (default: run) │
│ • run Run the model. │
│ • export Export geometry to a STEP or STL file. │
│ • view View model geometry. │
│ • version Show bdbox version and exit │
╰────────────────────────────────────────────────────────╯
Automatic execution¶
Params: Subclassing Params
provides the CLI and resolves parameter values.
Model: Defining exactly one Model subclass
in a model program enables the model to be built without calling
the run method. For more control over program
execution, run may be called manually. If multiple subclasses are defined, a
warning is printed and run must be manually called on the desired class.
from bdbox import Params, show
from build123d import Box
class P(Params):
size = Float(10.0, min=5.0, max=20.0)
# Parameter values are now accessible on P
cube = Box(P.size, P.size, P.size)
from bdbox import Model
from build123d import Box
class MyBox(Model):
size = Float(10.0, min=5.0, max=20.0)
def build(self):
# Parameter values are accessible on the current instance
return Box(self.size, self.size, self.size)
Geometry collection¶
Params: One or more calls to show accumulate
geometry in call order. If show is never called (and
Params is subclassed within the
invoked script), bdbox scans the program's global variables for
build123d.Shape instances on completion.
Model: Geometry must be returned from the
build method.
from bdbox import Params, show
from build123d import Box
class P(Params):
size = Float(10.0, min=5.0, max=20.0)
cube = Box(P.size, P.size, P.size)
show(cube) # optional
from bdbox import Model
from build123d import Box
class MyBox(Model):
size = Float(10.0, min=5.0, max=20.0)
def build(self):
return Box(self.size, self.size, self.size)
MyModel.run() # optional, as only one Model subclass is defined