Skip to main content

Python bindings for Geometer CAD geometry operations

Project description

Geometer

Focused C++ geometry library, CLI, Python package, and WASM interface built on OCCT. Geometer provides generic CAD/kernel operations for STEP-to-GLB conversion, STEP HLR projection, exact planar STEP synthesis, planar contouring, and packed planar boolean work.

Documentation

Build And Validate

cmake --preset default
cmake --build build --config Release
python scripts/validate_native.py
python scripts/validate_python_package.py

Native artifacts are copied to dist/native/<platform>/. Root-level dist/geometer* artifacts are intentionally not produced.

Build WASM artifacts:

python scripts/build_wasm.py

WASM artifacts are copied to:

  • dist/wasm/browser/
  • dist/wasm/node-test/
  • dist/wasm/planar-browser/

Python Package

PyPI distribution: wn-geometer

Import package: geometer

Install the current release:

python -m pip install wn-geometer==2026.5.25

Basic Python use:

from pathlib import Path
import geometer

version = geometer.version()
projection = geometer.project_step_hlr(
    Path("part.step"),
    views=[geometer.ProjectionView.top()],
)
glb_bytes = geometer.step_to_glb(Path("part.step"))
step_bytes = geometer.planar_step(
    {
        "schema": "geometry.planar_step.request.a0",
        "units": "mm",
        "bodies": [
            {
                "id": "copper",
                "thickness_mm": 0.035,
                "regions": [
                    {
                        "outer": {
                            "points": [[0, 0], [10, 0], [10, 5], [0, 5]],
                            "segments": [{"kind": "line"}] * 4,
                        }
                    }
                ],
            }
        ],
    }
)
geometer.write_planar_step(
    {
        "schema": "geometry.planar_step.request.a0",
        "units": "mm",
        "bodies": [
            {
                "id": "copper",
                "thickness_mm": 0.035,
                "fuse_regions": True,
                "regions": [
                    {
                        "outer": {
                            "points": [[0, 0], [10, 0], [10, 5], [0, 5]],
                            "segments": [{"kind": "line"}] * 4,
                        }
                    }
                ],
            }
        ],
    },
    "layer.step",
)

The package is executable-backed. Wheels bundle the platform executable under geometer/native/<platform>/, expose a geometer console command in the install environment, and call the executable through the JSON batch CLI.

CLI

geometer --version
geometer step-to-glb input.step output.glb
geometer step-project-hlr input.step output.json
geometer step-project-svg input.step output.svg --mode simple --view top
geometer planar-step planar-step-request.json output.step
geometer init-request request.json --step input.step --operation step_hlr_projection_json --output output.json
geometer run request.json response.json

Examples

  • examples/python/step_hlr_svg.py - no-GUI package example that writes HLR projection JSON, SVG, and GLB outputs.
  • examples/python/pyvista_hlr_viewer.py - PyVista/Qt STEP 3D + HLR preview.
  • examples/wasm/embedded_model_viewer.html - browser viewer using prepared GLB fixtures and the WASM HLR worker.
  • examples/cpp/ - native Dear ImGui + SDL3 + OpenGL HLR preview.

Serve browser examples from the repo root:

python -m http.server 8123 --bind 127.0.0.1

Open http://127.0.0.1:8123/examples/wasm/embedded_model_viewer.html.

Release

Geometer uses date-based releases per ADR 006:

  • Git tag: vYYYY-MM-DD
  • PyPI/CMake version: YYYY.M.D
  • C ABI generation: YYYYMMDD

Same-day follow-up releases append a serial to the tag and package version, for example v2026-05-24-2 and 2026.5.24.2. The C ABI generation stays at YYYYMMDD unless the C ABI generation itself changes.

Before tagging, run the L99 release gate plus native and package validation:

python -m pytest tests/L99_release -q
python scripts/validate_native.py
python scripts/validate_python_package.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

wn_geometer-2026.5.25-py3-none-win_amd64.whl (7.5 MB view details)

Uploaded Python 3Windows x86-64

wn_geometer-2026.5.25-py3-none-manylinux_2_39_x86_64.whl (13.5 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

wn_geometer-2026.5.25-py3-none-macosx_26_0_arm64.whl (10.6 MB view details)

Uploaded Python 3macOS 26.0+ ARM64

wn_geometer-2026.5.25-py3-none-macosx_11_0_arm64.whl (10.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file wn_geometer-2026.5.25-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for wn_geometer-2026.5.25-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f95ec9baf77ed802bcf54455648ced2241b88547e701800735b5199c3991a499
MD5 68052e7bd5e4daef61dcd59a1bb78fae
BLAKE2b-256 c79b58430e3e2130457a70ed7055cd5ad6456b3f901e58ffacc46640def72f69

See more details on using hashes here.

File details

Details for the file wn_geometer-2026.5.25-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wn_geometer-2026.5.25-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 49c5c7d90be0901e91412fc4aedd8a34436c5c1493b1d215c2ddb9cd82c49316
MD5 5ed7b251d9b2657c64ef7112885fdc34
BLAKE2b-256 d1625e2b1d76e5a8ef5fcedeb2bd130e3a3f089a7691890e8c5affeded86ed8e

See more details on using hashes here.

File details

Details for the file wn_geometer-2026.5.25-py3-none-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for wn_geometer-2026.5.25-py3-none-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 3e710c5b069ddc73b4e8b5caefbe9b7d7a0eaa2284b9028821a2147b8c41d181
MD5 a963afac1e6173c402cac340bcecdd8f
BLAKE2b-256 0c83ced4b909a763579ecb123ca0c079d439fc2c986232fb9b6600ee359fad60

See more details on using hashes here.

File details

Details for the file wn_geometer-2026.5.25-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wn_geometer-2026.5.25-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b330eb4f00e5b0bee73c28a6292ae591a8653f43bab0d4255f31867ca290ec2
MD5 47c881c101c0b59d228d00861cb615f9
BLAKE2b-256 e2891579d51fa5fb22256e3da5600eb4e801a3d89759945ca300b92e8fa61b59

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page