Geometry specifications for CAD

State what the model must be.

GeoSpec measures delivered geometry against claims you write: bounding boxes, watertightness, holes, wall thickness and more. The engine reads STEP, glTF and mesh bytes in Node, the browser and Python, and answers pass, fail or refused.

What it is

GeoSpec, geometry specifications for CAD. A Rust engine with an OCCT bridge for BRep, shipped as Node bindings, a WASM module and a CPython wheel.

  • Pass, fail or refused

    Each claim answers with one of three statuses. A failed claim carries a diagnostic code, the measured values and a suggestion.

  • Refused, never guessed

    A claim the engine cannot decide on the given geometry is refused with a typed reason. It is never reported as a pass, including under negation.

  • Reproducible

    The same model bytes, claims and engine version give the same result bytes. Plans and results are canonical JSON.

Live demo

Three claims against one STEP part, evaluated in your browser: one passes, one fails and one is refused, each with the diagnostic the engine returned.

The model is a 40 × 40 × 20 mm plate with a 10 mm through bore (plate-with-through-bore.step, 19 KB). Running the spec loads the engine's WASM build, about 16 MB, in a Web Worker in this tab.

  • not runtoHaveBoundingBox · size 40 × 40 × 20
  • not runtoHaveCircularHole · diameter 12
  • not runtoHaveMass · 82, no density

Write the claim. Read the result. Run it again and get the same bytes.