build123d
A python CAD programming library
Decision gist · record as of 2026-08-14
Yes. build123d is actively maintained, has no known vulnerabilities, installs with low friction, and carries a permissive Apache-2.0 license. It is well-suited for developers who want to define CAD models programmatically rather than through a GUI. The large dependency footprint (17 packages) is typical for scientific Python and not a barrier. Start with the documentation and cheat sheet if you are new to BREP modeling or parametric CAD.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later (up to 3.14); Open Cascade geometric kernel is a compiled dependency bundled via cadquery-ocp-novtk.
- Low friction installation as a pure-wheel package.
- Actively maintained with a recent release (43 days old) and 2854 GitHub stars.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions; you may use, modify, and distribute the code provided you include the license and copyright notice.
last release 2026-07-02 (43 days) · last repo commit 2026-08-14 · 2,854 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 374,648 downloads/mo, #7,144 on PyPI
Alternatives
Verify before relying
pip install build123d
from build123d import *
line = Line((0, -3), (6, -3))
line += JernArc(line @ 1, line % 1, radius=3, arc_size=180)
sketch = make_hull(line.edges())
part = extrude(sketch, amount=2)- Whether the 17 runtime dependencies (numpy, scipy, scikit-learn, etc.) are all required for basic usage or only for specific features.
- Performance characteristics and typical model complexity limits for real-world manufacturing workflows.
- Interoperability details with FreeCAD and SolidWorks export beyond the documented STEP/STL formats.
What it is and what it does
build123d is a Python library for writing CAD models as code using boundary representation (BREP) geometry. It wraps the Open Cascade geometric kernel and provides a clean, Pythonic interface for constructing 2D and 3D shapes through two complementary paradigms: Algebra Mode (stateless, operator-driven) and Builder Mode (state-tracked, context-aware). Both modes support creating edges, wires, faces, sketches, and solids through explicit geometry classes and algebraic operations like addition and subtraction, with selectors for filtering shapes by properties like area, length, or orientation.
The library is designed for manufacturing workflows—3D printing, CNC machining, laser cutting—and supports importing and exporting standard formats (SVG, STEP, STL). It emphasizes clean, maintainable code with minimal internal state, rich type hints, and extensibility through subclassing. The 17 runtime dependencies include numpy, scipy, and scikit-learn for numerical operations, plus specialized packages like ezdxf for DXF interchange and lib3mf for 3MF format support.
Use it for
- Parametric part design for 3D printing: define dimensions as variables and regenerate models with different parameters.
- Laser cutting layouts: import SVG designs, convert to 2D faces, and export as DXF or STEP for cutting machines.
- CNC toolpath preparation: model complex geometries with fillets and chamfers, then export STEP for CAM software.
- Reusable component libraries: subclass geometry objects to create custom parametric parts (e.g., custom fasteners, brackets).
- Design automation: generate arrays of parts with GridLocations and conditional logic for batch manufacturing.
- Interoperability workflows: import STEP assemblies, modify specific components, and export back to FreeCAD or SolidWorks.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
build123d is actively maintained, has no known vulnerabilities, installs with low friction, and carries a permissive Apache-2.0 license. It is well-suited for developers who want to define CAD models programmatically rather than through a GUI. The large dependency footprint (17 packages) is typical for scientific Python and not a barrier. Start with the documentation and cheat sheet if you are new to BREP modeling or parametric CAD.
Install
build123d on PyPI
Before you install
Low friction installation as a pure-wheel package. Actively maintained with a recent release (43 days old) and 2854 GitHub stars. Requires Python 3.10–3.14 and pulls in 17 runtime dependencies including numpy, scipy, and scikit-learn, which are standard scientific packages.
Requires Python 3.10 or later (up to 3.14); Open Cascade geometric kernel is a compiled dependency bundled via cadquery-ocp-novtk.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; you may use, modify, and distribute the code provided you include the license and copyright notice.
Quickstart
pip install build123d
from build123d import *
line = Line((0, -3), (6, -3))
line += JernArc(line @ 1, line % 1, radius=3, arc_size=180)
sketch = make_hull(line.edges())
part = extrude(sketch, amount=2)
Verify before relying
- Whether the 17 runtime dependencies (numpy, scipy, scikit-learn, etc.) are all required for basic usage or only for specific features.
- Performance characteristics and typical model complexity limits for real-world manufacturing workflows.
- Interoperability details with FreeCAD and SolidWorks export beyond the documented STEP/STL formats.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release <3.15,>=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 17 packagescadquery-ocp-novtktyping_extensionsnumpysvgpathtoolsanytreeezdxfipythonocpsvgocp_gordontrianglesolversympyscipyscikit-learnwebcolorsrequestslib3mfpy-lib3mf |
| Maintenance | Actively maintained 43 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 374,648 / month, #7,144 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: Apache Software LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3 |
Evidence: build123d-0.11.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “parametric 3d design code”
- build123dbuild123d is a Python CAD framework for creating 2D and 3D models…
- cadqueryCadQuery is a Python library for writing scripts that generate…
- ocp-gordonInterpolates networks of curves into smooth Gordon surfaces using…
Give your agent the search over MCP, or paste the wish link into any chat.
More Scientific/Engineering packages
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
pandas provides fast, flexible data structures (Series and DataFrame) for loading, cleaning, transforming, and analyzing labeled or relational data in Python.
scipy provides numerical algorithms for mathematics, science, and engineering—including optimization, integration, linear algebra, Fourier transforms, signal and image processing, and ODE solvers—built on numpy arrays.
scikit-learn provides a comprehensive Python library for supervised and unsupervised machine learning, including classification, regression, clustering, dimensionality reduction, and model evaluation tools built on NumPy and SciPy.
Install it if you need to train, evaluate, or deploy supervised or unsupervised learning models.
dill extends Python's pickle module to serialize and deserialize a much wider range of Python objects, including functions, lambdas, classes, and interpreter sessions, to byte streams for storage or network transmission.
Multiprocess is an enhanced fork of Python's standard multiprocessing library that uses dill for better serialization, allowing you to spawn processes with a threading-like API and share complex objects between them.
Install it if you use multiprocessing and encounter pickle serialization limits with lambdas or complex objects.
See also cascadio · manifold3d · ocp-tessellate · cadquery · cadquery-ocp · cadquery-ocp-novtk · ocp-gordon · rhino3dm · pygmsh · py-lib3mf