SFP CAD designs a negative-block kit: the removable negative of a concrete or gypsum pour, made from moulded units that fill a region the way space-filling polyhedra fill space. A minimal surface runs through the region. The units it crosses are left out, and the gaps they leave are the cast. You build the kit layer by layer, pour, and wash the units out. What is left is the cast: a piece shaped by the surface.
It is built the way SOLIDWORKS works — a feature tree you can roll back, edits you preview before OK, parts, configurations, relations — and it keeps the kit's own rules: one mould per shape, every unit lowered straight in, exact geometry, checks that run on every rebuild.
Every edit previews live. OK (or Enter) keeps it, Cancel (or Esc) throws it away, and Ctrl+Z undoes any step.
The kit is a list of features, each a step of the recipe, top to bottom. Click one to edit it. Changing one re-runs only what depends on it: a dowel change does not re-plan the box.
| Feature | What it decides |
|---|---|
| Region | the solid to fill: a box, an outline, an STL |
| Surface | the minimal surface, its period, offset, turn and wall |
| Lattice | the unit shape, its size, offset and turn |
| Ends | top and bottom cut to the box; a whole bottom layer with the top cut; or whole units at both ends. Under whole units: a sand bed, or the cast to the floor. Also set from Lattice |
| Gaps | the cells the surface crosses: the cast |
| Overrides | your hand edits: a cell made a gap, a unit, or hand fill |
| Trim | edge units; slivers below a size become hand fill |
| Moulds | units grouped by shape: one mould per shape |
| Joinery | dowel holes: every face, joined only, or pins in the mould |
| Marks | each mould's name, debossed (see the Marking guide) |
| Plan | the layer order, support and washout |
| Outputs | instructions, STLs, STEPs |
Rollback. Drag the orange bar (or focus it and use the arrow keys) to see the kit at any step. Marks. A yellow or red dot on a feature is a warning or an error; click it for What's wrong. The head of the tree holds the History, the Sensors (every check at once), the Material, the Mates, the three planes and the origin.
The surface and the lattice are each one rigid pattern with a size: seven numbers — three turns, three coordinates of the origin, one size. Relations to the region set them. Open Surface or Lattice to see the list.
| Relation | Sets |
|---|---|
| Dimension | the size (the period, or the unit size) |
| Distance | the origin's distance from a box face (one coordinate) |
| Parallel | all three turns to 0: axes along the box edges |
| Angle | one turn (about x, y or z) |
| Lay on face | two turns: a chosen face of the unit flat on the floor (lattice only) |
| Coincident | the origin — or a unit's vertex — on the box centre or a corner |
The badge says fully defined (all seven set), under-defined (the free ones are listed and keep their values) or over-defined (a number set twice: the later relation is named, marked red and ignored).
Handles. While Surface or Lattice is open, the view shows arrows (move), rings (turn) and an orange knob (size). A handle edits the relation that fixes its number; a fixed one (Parallel, Coincident, Lay on face) refuses, and for Parallel offers to become three angles you can drag. Handles work with a finger.
Turning the lattice off the box axes costs moulds: the preview counts them live. Fit to box needs an unturned lattice.
Click a cell to select it (a box opens beside it: its mould, layer, support). Make gap, Make unit and Hand fill override what the surface decided; every check re-runs on the edited kit, and the Overrides feature lists your edits. Make independent gives one unit a mould of its own — the one edit that splits a part. The selection filter (heads-up toolbar) limits clicks to units or to gaps.
Open a mould from the Moulds feature, or Open part on a selected unit. The part document shows its features (base cell, trim, holes or pin bores, the name), which units use it and on which layers, and its mass for your material's density. Part edits: move the name to another face or take it off; take a pin bore out of use (its dowels go, at both ends). Show in kit lights every unit made from it. Export the master as STL or STEP.
Dowels stand upright, because every unit is lowered straight in; each joins a unit to the one under it, half its length in each. Every face gives the fewest moulds (holes facing the cast are plugged before the pour); joined only leaves nothing to plug but needs more moulds; pins in the mould keeps the moulds plain and lists, per unit, the numbered pins to push in before casting it. Each mould's name is debossed into it — the Marking guide (Output) explains how to read them.
At the Plan step the timeline steps through the layers (‹ ›, or drag), and explode lifts each layer apart. The Mates folder lists the dowels as the assembly's mates, by layer. Instructions (Output) is a drawing: a bill of materials, then a sheet per layer with a map and a table of what to place, which way its name faces, and which pins.
A configuration is a whole kit. In the configs tab, Add keeps the current kit and starts a new one to change; click one to activate it. The design table rebuilds each and compares units, cut units, moulds, hand fill, cast share, layers, dowels and the checks — side by side.
Save writes a small .sfpkit file (JSON: every setting, relation, edit and configuration; an imported STL is
not stored — re-link it). Open reads one back. Exports: mould STLs (zip, with pin bodies), mould STEPs (AP214 solids, zip),
the cast STL, the instructions and the marking guide (HTML). Inside the claude.ai viewer, files come zipped and the kit saves as
.sfpkit.json.
| Turn the view | middle drag or left drag; one finger |
| Pan | Ctrl + middle drag, Shift + drag; two fingers |
| Zoom | wheel, Shift + middle drag; pinch |
| Standard views | Ctrl+1 … Ctrl+7, or Space for the list |
| Zoom to fit · cast view · shortcut bar | F · C · S |
| Rebuild · force rebuild | Ctrl+B · Ctrl+Q |
| Undo · redo · new · open · save | Ctrl+Z · Ctrl+Y · Ctrl+N · Ctrl+O · Ctrl+S |
| OK · Cancel | Enter · Esc |
On an iPad the tree and the properties sit under the view in portrait; everything is reachable by touch, and the keys are extras.
Credits: three.js (MIT) draws the view; manifold-3d (Apache-2.0, Emmett Lalish and contributors) trims units along an STL skin. The kernel is Negative Blocks' own.