Layer 01 · Topology
B-rep
From an idea to the machine shop.
- public · MIT
- STEP export
Catallax · by Pedro De PaivaPerth, AU
Bridging explicit and implicit kernels. Exact B-rep × signed distance fields. One recipe. The best of both. Field kernel · in design
Drag to orbit · hand-built wireframe illustration
01Built for what comes next Vision · in design
Topology optimisation. Instant FEA without meshing. Wild patterns, driven by code. One recipe builds exact faces and distance fields. Precision meets possibility. From drawings and STEP to the machine shop. Next stop: meshes for Blender and the printer.
Pedro De Paiva · Perth
Mechanical engineer, 8+ years. Founder of Zigrawbohnbawerick Pty Ltd.
The engineer behind the kernel
02Kernel anatomy
01 / 04
Layer 01 · Topology
From an idea to the machine shop.
Layer 02 · Geometry
Geometry with its receipts.
Layer 03 · Operations
Cut. Unite. Intersect. Never quietly guess.
Layer 04 · In design
Lattices. Instant FEA. Booleans that never fail.
03Assembly illustration
10 s wireframe illustration · a little mechanical daydream, not kernel output
54,668
physical lines of Rust
0
lines of C or C++
409
enabled Rust tests
0
unsafe blocks
Repository snapshot and counting method · includes tests and comments in Rust line count · ignored tests excluded
04Code is the geometry
No black box. The geometry, the decisions and the doubts are right here in Rust.
/// A vertex: a point stored by definition.
#[derive(Clone, PartialEq, Eq, Hash, Debug)]
pub struct Vertex {
/// The point.
pub point: PointId,
}
/// An edge on a curve. Both ends `None` is a ring edge over a whole closed curve.
#[derive(Clone, PartialEq, Eq, Hash, Debug)]
pub struct Edge {
/// The curve.
pub curve: CurveId,
/// Edge direction relative to the curve's natural direction.
pub sense: Sense,
/// Start vertex along the edge direction.
pub start: Option<VertexId>,
/// End vertex along the edge direction.
pub end: Option<VertexId>,
}
/// The result of one decision. See `docs/ARCHITECTURE.md`.
#[must_use]
#[derive(Clone, Debug, PartialEq)]
pub enum Outcome<T> {
/// The strict answer is certified; the quantity is proven non-zero.
Proven(T),
/// The quantity is proven exactly zero.
ProvenCoincident(Coincidence),
/// The budget ran out; the quantity is proven to lie within the bound.
NotExact(NotExact),
/// The decision cannot be answered.
Refused(Refusal),
}
let graph = run!(Stage::Intersect, intersect(model, a, b, dec));
let imprinted = run!(Stage::Imprint, imprint(model, &graph, dec));
let classes = run!(Stage::Classify, classify(model, &imprinted, dec));
let before = dec.stats().clone();
let selection = keep(&classes, &imprinted, op);
report.stages.push(StageRecord {
stage: Stage::Keep,
stats: statistics_delta(&before, dec.stats()),
marks: 0,
});
let body = run!(Stage::Sew, sew(model, &imprinted, &selection, dec));
05Selected work
Exact geometry, out in the open. Safe Rust, curved topology and STEP for the machine shop. Take it apart. Make something with it.
Topology optimisation enabler. Instant FEA enabler. The freedom of fields, with exact geometry in the same recipe.
Write the idea once. Grow a pattern. Rebuild the part. Code-driven geometry that speaks both kernels.
The Rust CAD workshop built on Catallax. A SolidWorks-style home for the things you want to make.
06Benchmarks
Hard cases. Real answers. The latest kernel, matched against our own hard-test corpus.
16 refusals: 6 impossible geometries, rejected by design. 10 timeouts, still on the bug list. No previously answered output changed. Source-run results, not a replay of this public revision. Counts, provenance & scope.
Speed comparisons with OpenCASCADE and other kernels? When we've measured them. What's still to build.
07Release discipline
Every pull request faces format, clippy and the full enabled release test suite. Exact maths keeps us honest. OpenCASCADE checks our STEP.
Our rule: the same answer on every machine. Still to fix: the 50-second deadline can make an answer depend on load.
08Sponsor the free kernel
Keep geometry free. Help me chase the hard cases and build the bridge between explicit and implicit. MIT today. MIT tomorrow. Yours to build on.
09Contact
I'm open to kernel work. Got a stubborn geometry problem? Let's make something of it.