Shortened and removed CQ reference
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled

This commit is contained in:
gumyr 2025-10-23 14:34:11 -04:00
parent 3942c32804
commit 70310ddd4a

View file

@ -29,60 +29,38 @@
:align: center :align: center
:alt: build123d logo :alt: build123d logo
Build123d is a python-based, parametric, boundary representation (BREP) modeling
framework for 2D and 3D CAD. It's built on the Open Cascade geometric kernel and
allows for the creation of complex models using a simple and intuitive python
syntax. Build123d can be used to create models for 3D printing, CNC machining,
laser cutting, and other manufacturing processes. Models can be exported to a
wide variety of popular CAD tools such as FreeCAD and SolidWorks.
Build123d could be considered as an evolution of
`CadQuery <https://cadquery.readthedocs.io/en/latest/index.html>`_ where the
somewhat restrictive Fluent API (method chaining) is replaced with stateful
context managers - i.e. `with` blocks - thus enabling the full python toolbox:
for loops, references to objects, object sorting and filtering, etc.
Note that this documentation is available in
`pdf <https://build123d.readthedocs.io/_/downloads/en/latest/pdf/>`_ and
`epub <https://build123d.readthedocs.io/_/downloads/en/latest/epub/>`_ formats
for reference while offline.
######## ########
Overview About
######## ########
build123d uses the standard python context manager - i.e. the ``with`` statement often used when Build123d is a Python-based, parametric (BREP) modeling framework for 2D and 3D CAD.
working with files - as a builder of the object under construction. Once the object is complete Built on the Open Cascade geometric kernel, it provides a clean, fully Pythonic interface
it can be extracted from the builders and used in other ways: for example exported as a STEP for creating precise models suitable for 3D printing, CNC machining, laser cutting, and
file or used in an Assembly. There are three builders available: other manufacturing processes. Models can be exported to popular CAD tools such as FreeCAD
and SolidWorks.
* **BuildLine**: a builder of one dimensional objects - those with the property Designed for modern, maintainable CAD-as-code, build123d combines clear architecture with
of length but not of area or volume - typically used expressive, algebraic modeling. It offers:
to create complex lines used in sketches or paths.
* **BuildSketch**: a builder of planar two dimensional objects - those with the property
of area but not of volume - typically used to create 2D drawings that are extruded into 3D parts.
* **BuildPart**: a builder of three dimensional objects - those with the property of volume -
used to create individual parts.
The three builders work together in a hierarchy as follows: * Minimal or no internal state depending on mode
* Explicit 1D, 2D, and 3D geometry classes with well-defined operations
* Extensibility through subclassing and functional composition—no monkey patching
* Standards-compliant code (PEP 8, mypy, pylint) with rich pylance type hints
* Deep Python integration—selectors as lists, locations as iterables, and natural
conversions (``Solid(shell)``, ``tuple(Vector)``)
* Operator-driven modeling (``obj += sub_obj``, ``Plane.XZ * Pos(X=5) * Rectangle(1, 1)``)
for algebraic, readable, and composable design logic
.. code-block:: python The result is a framework that feels native to Python while providing the full power of
OpenCascade geometry underneath.
with BuildPart() as my_part:
...
with BuildSketch() as my_sketch:
...
with BuildLine() as my_line:
...
...
...
where ``my_line`` will be added to ``my_sketch`` once the line is complete and ``my_sketch`` will be With build123d, intricate parametric models can be created in just a few lines of readable
added to ``my_part`` once the sketch is complete. Python code—as demonstrated by the tea cup example below.
As an example, consider the design of a tea cup: .. dropdown:: Teacup Example
.. literalinclude:: ../examples/tea_cup.py .. literalinclude:: ../examples/tea_cup.py
:start-after: [Code] :start-after: [Code]
:end-before: [End] :end-before: [End]
@ -91,6 +69,14 @@ As an example, consider the design of a tea cup:
<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script> <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
<model-viewer poster="_images/tea_cup.png" src="_static/tea_cup.glb" alt="A tea cup modelled in build123d" auto-rotate camera-controls style="width: 100%; height: 50vh;"></model-viewer> <model-viewer poster="_images/tea_cup.png" src="_static/tea_cup.glb" alt="A tea cup modelled in build123d" auto-rotate camera-controls style="width: 100%; height: 50vh;"></model-viewer>
.. note::
This documentation is available in
`pdf <https://build123d.readthedocs.io/_/downloads/en/latest/pdf/>`_ and
`epub <https://build123d.readthedocs.io/_/downloads/en/latest/epub/>`_ formats
for reference while offline.
.. note:: .. note::
There is a `Discord <https://discord.com/invite/Bj9AQPsCfx>`_ server (shared with CadQuery) where There is a `Discord <https://discord.com/invite/Bj9AQPsCfx>`_ server (shared with CadQuery) where