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 run
toHaveBoundingBox · size 40 × 40 × 20 - not run
toHaveCircularHole · diameter 12 - not run
toHaveMass · 82, no density
Write the claim. Read the result. Run it again and get the same bytes.