Engineering

Engineering-grade geometry analysis.

Buildable is not a checklist of generic manufacturing tips. Its checks analyse the actual geometry of your model. This page is the technical detail behind the homepage's claims.

Thin-wall detection

Grid-accelerated ray casting measures wall thickness across the whole mesh rather than relying on a bounding-box approximation. A spatial grid buckets triangles so nearby-surface queries stay fast even on dense meshes, then rays are cast inward along local surface normals to find the opposing wall and measure true local thickness at that point, not a global average.

Overhang and undercut detection

Overhang angle comes directly from the angle between each face's normal and the vertical build axis. Undercut detection for moulding and casting is a different, more fundamental check: a grid of rays is cast along the mould's pull direction, and the number of surface crossings is counted per ray. A simple, pull-mouldable shape crosses exactly twice; a re-entrant tunnel, hook, or pocket crosses more, which is how genuine undercuts are distinguished from merely shallow draft.

Trapped-volume detection (SLA)

Every connected surface component in the mesh is labelled via a flood-fill over edge adjacency. A fully sealed interior shell, one with no boundary edges connecting it to the outside, is a trapped cavity: resin poured in has no way out. This is real mesh topology analysis, not a heuristic borrowed from FDM.

Tool-access and deep-pocket detection (CNC)

Tool access flags sharp, unrounded internal corners a round end mill physically cannot reproduce: it always leaves at least its own radius behind. Deep-pocket detection groups upward-facing floor regions, then compares each region's own depth against the surrounding rim height and its own footprint's narrowest span, flagging aspect ratios that would need a long, chatter-prone tool.

Sheet-metal bend detection

Sheet thickness is estimated via the same ray-cast sampling as wall-thickness detection, then curved transition regions between flat facets are located and their local bend radius measured by point sampling. Individual bend-edge hits are clustered into full bend lines via union-find on edge adjacency, which is what lets flange-length and bend-relief checks reason about a bend as a whole line rather than isolated points.

Interference detection (multi-part STEP assemblies)

A multi-solid STEP import is split into independent solids by the CAD kernel itself, not a mesh heuristic. Every pair of parts is first compared by axis-aligned bounding box, a cheap, purely local check, before the expensive step ever runs; only pairs whose boxes overlap get a true boolean intersection via the CAD kernel, reported as an exact overlap volume. This bounding-box pre-filter is why the assembly cap can be set at 150 parts instead of a token single-digit limit. Two figures matter here and they measure different things, so both are given. The pre-filter itself: a 150-part grid (149 non-overlapping 8mm boxes plus one deliberately overlapping pair) has 11,175 possible pairs, of which the boxes reduce the expensive step to exactly 1 real boolean intersection, in about 215ms. That number is the broad phase, measured in Node against the synchronous kernel on box-shaped parts, and it excludes STEP parsing and tessellation. It is deliberately arranged so almost nothing overlaps, so it says nothing about how long a boolean takes. The narrow phase, on real geometry: the 35-part parametric drive on this site has 79 pairs close enough to need a true boolean, and in Chromium on the live site those 79 booleans take about 8 seconds, shared across 5 CAD kernel instances running in parallel Web Workers. One kernel alone takes about 20 seconds for the same work, and the slowest single pair, two meshing gears, is about 4 seconds on its own. So per-part geometric complexity, not part count, is what governs the cost, and a genuinely dense 150-part assembly of gears and threads would not finish in milliseconds. That is what the 45-second budget is for: when it runs out, Buildable reports how many pairs it checked and states that the rest were not evaluated, rather than calling them clear.

Automatic geometry fixes

Supported STEP edits (fillets, hole compensation, countersinking, draft, wall-thickness refinement) are performed as real CAD-kernel geometry operations on the actual B-rep solid, then re-tessellated for preview, not a visual mesh overlay pretending to be a fix. Countersinking and any fix that adds new material (a brace, support pillar, or wall-thickening addition) only run once you explicitly opt in; every other fix here refines geometry that is already there automatically. Every real CAD-kernel edit passes through one shared validity gate after the operation, and a result the kernel reports as an invalid solid is discarded rather than kept. That gate covers the STEP edits above; mesh-only fixes have no B-rep to validate. It refuses rather than risk producing broken geometry.

How the process-comparison part was built

The CH-90 controller housing on the homepage and the manufacturing page is generated through the OCCT kernel from a single parameter file, in two states: as designed, with six seeded design errors, and the reference, with each error set to its clean value and nothing else changed. The generator runs the real production detectors on both states before it writes anything, and refuses to publish unless every seeded fault is found by its own check inside its own region on the as-designed part and absent from the reference, which measured clean on every process check. The fixes the pages quote were applied with the app's own kernel operations and rechecked by the same detectors, so each outcome names what the recheck measured rather than what the operation attempted. Building the part against the detectors also found four defects in the detectors themselves, each fixed with a unit test: facets resting on the build plate were counted as overhangs, zero-area facets read as zero-draft walls, the candidate cap on the ray probe could drop the nearest triangle and report a farther one, and a thick reading was taken from one ray along a normal, so a thin wall read end-on passed as a thick section; a thick reading now has to be confirmed in eight tilted directions before it counts. Eight and not four: with four, the probe directions land on the tangent frame’s own axes, and at the top of a junction of two walls all four run down the length of an arm, so a 2.5mm wall junction was confirmed as a 10mm thick section. The eight are still fixed in world space, so a part saved in a rotated frame can still defeat the check.