Repository navigation
simplecadapi 2.2.7b1
Pre-release2.2.7b1 Update Notes (beta)
The geometry engine is now C++ on OpenCASCADE, shipped inside the wheel. pip install simplecadapi
needs no cadquery-ocp and no OpenCASCADE on the machine. Models, graphs, packages and the public
API behave as before: the whole previous test suite passes on the new engine.
Prebuilt packages
| platform | wheels |
|---|---|
| Linux x86_64 (manylinux_2_28) | Python 3.10, 3.11, 3.12, 3.13 |
| Linux aarch64 (manylinux_2_28) | Python 3.10, 3.11, 3.12, 3.13 |
| macOS arm64 (macOS 14+) | Python 3.10, 3.11, 3.12, 3.13 |
| Windows x86_64 | Python 3.10, 3.11, 3.12, 3.13 |
Every wheel links the same OpenCASCADE 7.9.3, built from source, so a model computes the same on
every platform. There are no wheels for macOS Intel, musl Linux or Windows on ARM; there the source
distribution builds the module and needs a C++20 toolchain and OpenCASCADE >= 7.8.
This is the first release with prebuilt wheels: please report a platform that does not install or
import.
Faster and smaller
On the six-axis arm (sandbox-envs/desktop_arm_sources), same sources, same machine, Python runtime:
| 2.2.6.post2 | 2.2.7b1 | |
|---|---|---|
| cold build | 43.8 s | 29.1 s |
| nothing changed | 12.8 s | 6.0 s |
| edit one joint | 9.9 s | 6.1 s |
| peak memory, cold build (process tree) | 2690 MB | 2043 MB |
import simplecadapi |
1.6 s, 360 MB | 0.2 s, 68 MB |
The models computed are the same (volumes agree to 1e-12 relative).
One package
- The compiled module is
simplecadapi._cpp;simplecadapi.core,simplecadapi.operators.*,
simplecadapi.ql,simplecadapi.std.*and the other modules keep their import paths as
forwarding modules, and each says in its docstring which C++ source defines its names. - Removed dependencies:
cadquery-ocp,ocp-gordon,py-slvs. The OpenCASCADE view of a shape
(shape.wrapped) is now the module's own binding,simplecadapi._cpp.occt, laid out like OCP. SCA_BACKENDis gone: there is one backend.simplecadapi.inspect.brepis part of the default install and renders with the same software renderer as
render_screenshot_rpath: no VTK, no GPU, no display server (noxvfb).matplotlibis now a core dependency; the
inspectextra stays as an empty alias so older install commands keep working. Onlysimplecadapi.inspect.drawing
still needs an extra (drawing).
Booleans that split a body
- New
cut_rsolid_list(base, *tools)returns every piece of a cut: a slot through a bar gives both halves, a tool that
encloses the whole body gives an empty list. It is recorded asmake_cut_rsolid_listand replays. cut_rsolidused to return only the first piece when a cut split the body, silently losing the rest (a slot through a
100x20x10 bar reported half the volume). It now raises and namescut_rsolid_list. A tool that only touches a wall
tangentially also leaves a separate sliver, so a script that relied on the dropped sliver needs a tool that does not
touch the wall, orcut_rsolid_list.
Errors
- Every message the library writes is English.
- The tag-validation and semantic-query errors render in full, like every operator error: what
happened, possible causes, how to fix.
Python 3.10 to 3.13
Built and tested on all four.