Catallax · by Pedro De PaivaPerth, AU

Exact geometry, written in Rust, by definition.

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

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

01 / 04

Layer 01 · Topology

B-rep

From an idea to the machine shop.

  • public · MIT
  • STEP export

Layer 02 · Geometry

Exact definitions

Geometry with its receipts.

  • proof-carrying geometry

Layer 03 · Operations

Booleans

Cut. Unite. Intersect. Never quietly guess.

  • early code
  • known gaps

Layer 04 · In design

Field kernel

Lattices. Instant FEA. Booleans that never fail.

  • in design
  • the implicit half

A solid is a promise about its boundary.

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

Geometry that shows its working.

No black box. The geometry, the decisions and the doubts are right here in Rust.

  1. Read it
  2. Question it
  3. Build on it
catallax-topology / entity.rs
/// 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>,
}
catallax-numbers / outcome.rs
/// 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),
}
catallax-boolean / lib.rs · excerpt
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));

One recipe. A family of tools.

01Public · MIT

Catallax B-rep

Exact geometry, out in the open. Safe Rust, curved topology and STEP for the machine shop. Take it apart. Make something with it.

safe Rustsource on GitHub

02In design

Field kernel

Topology optimisation enabler. Instant FEA enabler. The freedom of fields, with exact geometry in the same recipe.

in designsigned distance fields

03In progress

Recipe language

Write the idea once. Grow a pattern. Rebuild the part. Code-driven geometry that speaks both kernels.

in progressnot yet in the public tree

04Open source soon

SolidDraft

The Rust CAD workshop built on Catallax. A SolidWorks-style home for the things you want to make.

by Pedro De PaivaCAD application

Measured, not marketed.

Hard cases. Real answers. The latest kernel, matched against our own hard-test corpus.

CorpusAnsweredOther outcomesTotal
Hard-test requestsMatched run · latest kernel 36316 refused379
Recorded failure packsAnswered in the same source run 944 unanswered98

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.

Proof before promise.

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.

  • Formatcargo fmt --all --check
  • Lintclippy · deny warnings
  • Testsrelease · all enabled + docs
Actual command transcript · edited for time, not a full-suite recording

Geometry belongs to everyone.

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.

Have geometry that has to be exact?

I'm open to kernel work. Got a stubborn geometry problem? Let's make something of it.