Skip to content

simplecadapi 2.2.7b1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 13:19
· 56 commits to master since this release
0fd2e06

2.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_BACKEND is gone: there is one backend.
  • simplecadapi.inspect.brep is part of the default install and renders with the same software renderer as
    render_screenshot_rpath: no VTK, no GPU, no display server (no xvfb). matplotlib is now a core dependency; the
    inspect extra stays as an empty alias so older install commands keep working. Only simplecadapi.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 as make_cut_rsolid_list and replays.
  • cut_rsolid used 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 names cut_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, or cut_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.


中文说明:docs/updates/2.2.7b1.zh-CN.md