2026-04-03
You upload a STEP file. You get back workholding — soft jaws, a fixture plate, or a zero-point plate — as downloadable STEP files ready for CAM. No templates. No manual modeling. The geometry comes directly from the part.
Four stages make that happen:
The entire pipeline is procedural geometry code. Deterministic — same input, same output, every time. No neural networks, no model weights, nothing stochastic.
First question: which face does the part sit on?
The analyzer examines every planar face on the imported solid and measures its surface normal against the approach axis. Any face within 5° of perpendicular to Z qualifies as a seating candidate. The largest qualifying face wins.
Once selected, the part is reoriented: seating face flipped to point downward, translated so that face sits at Z = 0, centered on the XY origin. Every downstream stage operates on this standardized pose.
Some parts make this easy. A pillow block has a large flat base that dominates the ranking — there is no ambiguity about where it sits. A pipe cross is a different story. Four cylindrical branches, no dominant flat face. When no qualifying face is found, the part is flagged as incompatible with fixture plates and zero-point plates. Vise jaws use a different positioning scheme that does not depend on a seating face, so they can still handle it.
Four tooling strategies are available:
When you select auto, the system scores every strategy on a 0.0–1.0 scale
in two phases.
Phase 1: Geometric pre-screen (scores 0.0–0.5). Three features are extracted from the part: the flat face ratio (Z-aligned planar faces divided by total faces), compactness (shortest bounding box dimension divided by longest), and the max dimension. Each strategy has a preference profile. Fixture plates favor parts with high flat face ratios. Vise jaws favor compact parts. Anything wider than 152.4 mm gets penalized for vise strategies. Anything wider than 350 mm gets penalized for fixture plates.
Phase 2: Generation probe (scores 0.0 or 0.5). The system actually builds the tooling — runs the full generation pipeline for each strategy and checks whether postconditions pass. If it works, the strategy gets the full 0.5 bonus. If it throws a compatibility error (part too large for the bolt circle, no seating face, pocket generation failed), zero.
So auto-selection is not a heuristic guess. It builds every option, measures the results, and picks the highest scorer. An angle bracket with large flat faces and moderate dimensions might score 0.85 on fixture plate and 0.60 on vise jaws. A shaft coupling — cylindrical, compact, 40 mm diameter — scores the reverse.
This is the hard part.
The pocket is the part-conforming cavity machined into the tooling. For vise jaws, it is the grip profile cut into the jaw faces. For fixture plates, it is a shallow nest pocket on the top surface. The pocket must match the part closely enough to locate it repeatably, with controlled clearance for the cutter.
Vise jaw pockets run through a tier cascade. Each tier attempts a different profile extraction method. If a tier times out or fails quality checks, the next one runs automatically.
| Tier | Method | Timeout | How it works |
|---|---|---|---|
| 0 | Z-bounded slice | 30 s | Clip part to grip zone, section at multiple Z heights, union into a 2D profile |
| 0.25 | Multi-Z slice | 45 s | Same clip, lower area threshold — tolerates complex internal geometry |
| 0.35 | Cross-section | 30 s | Single section at grip zone midpoint — preserves concave features |
| 0.5 | 3D conformal | 45–120 s | Subtract part from envelope box, remove undercuts with Z-prism extrusions |
The tiers exist because geometry kernels are unpredictable. A boolean subtraction that finishes in 200 ms on a pillow block might hang indefinitely on a ball valve. Rather than hope the kernel cooperates, each tier runs in an isolated subprocess with a hard timeout. If it does not return in time, the process is killed and the next tier takes over.
What makes each tier different is the tradeoff between fidelity and reliability. The Z-bounded slice captures the most detail — every contour at every height within the grip zone is preserved. But it requires clipping the part to the grip zone first, which is itself a boolean operation that can hang on complex geometry. The 3D conformal tier at the bottom of the cascade is the most resilient. It builds a solid envelope box at grip zone height, subtracts the part from it, then removes undercuts by extruding Z-height cross-sections upward through the envelope. The result is always machinable from above, but it can be slower and the geometry is heavier.
A heat sink is a good example of why tiers matter. The cross-section tier (tier 0.35) captures the fin gaps as individual channels in the jaw face — exactly what you want for repeatable location. The Z-bounded slice might union those gaps into a flat plane if the fins are thinner than the slice spacing. A star knob, with organic lobes that defeat clean 2D slicing entirely, falls through to the 3D conformal tier.
Fixture and zero-point plate pockets are simpler. The part is sectioned at multiple Z heights across its full extent, each section is flattened to Z = 0, and the results are unioned into a single 2D silhouette. That silhouette becomes a 3 mm deep nest pocket. If sectioning fails, the system falls back to a bounding-box rectangle — less precise, but the part still drops in.
Tool radius compensation adjusts the pocket profile for the endmill. The
profile is expanded outward by clearance + tool_radius, then contracted by
tool_radius. This double-offset rounds all internal corners to the cutter
diameter while maintaining exact clearance on straight edges. Default clearance:
0.15 mm. Default tool radius: 3.175 mm (¼" endmill).
Every generated STEP file is checked before it reaches you. Two layers.
Postcondition checks verify that each tooling component is a valid solid (not a shell or degenerate compound), that the positioned part does not interfere with the tooling body, and that the BRep representation passes integrity checks. If any check fails, the result is rejected — you get an error, not a bad file.
The geometric oracle is a dimensional sanity check. Each tooling configuration declares expected ranges for the output — bounding box X, Y, Z dimensions and volume. The oracle measures the actual STEP output and compares. If a fixture plate for a 100 mm part suddenly measures 400 mm wide, the oracle catches it.
Think of it as a headless CMM. Same idea as measuring a physical part against a drawing, applied to generated CAD before it ever leaves the server.
We validate the pipeline against 20 off-the-shelf industrial components. These are not cherry-picked to make the system look good — they were chosen to cover the range of geometry that shows up in real shops.
| Part | Character | Why it matters |
|---|---|---|
| Pillow block | Prismatic | Large flat base, obvious seating face. The easy case. |
| Terminal block | Prismatic | Thin walls, internal channels. Tests pocket fidelity at small scales. |
| Angle bracket | Prismatic | Two dominant flat faces. Tests seating face disambiguation. |
| Toggle clamp | Mixed | Articulated geometry with thin linkage arms. |
| Strap hinge | Sheet | Thin, wide, and flat. Pushes minimum grip depth limits. |
| Spur gear | Rotational | Teeth create high-frequency radial detail in the pocket profile. |
| Shaft coupling | Rotational | Cylindrical with keyway. Compact, favors vise strategies. |
| Cam follower | Rotational | Eccentric profile. Tests off-center grip zone behavior. |
| Hand knob | Organic | Lobed grip with no flat faces. Falls through to 3D conformal. |
| Wing nut | Organic | Thin wings, threaded bore. Complex cross-section at every height. |
| Star knob | Organic | Five-pointed lobes. Defeats 2D slicing, requires conformal subtraction. |
| Pipe cross | Tubular | No dominant flat face. Hollow interior. Incompatible with plates. |
| Ball valve | Tubular | Complex internal cavity. Boolean operations tend to hang here. |
| U-bolt | Tubular | Thin bent rod. Tests minimum cross-section viability. |
| Heat sink | Finned | Parallel fin gaps must be preserved as individual pocket channels. |
| Shoulder eye bolt | Mixed | Ring, shoulder, and threaded shank in one part. |
| Rod end | Mixed | Spherical bearing housing with a threaded stud. |
| Leveling mount | Mixed | Rubber pad, threaded base, hex flats. Multi-material intent. |
| Quick release pin | Mixed | Slender shaft with spring-loaded balls. Fragile grip zone. |
| Spring plunger | Mixed | Small, cylindrical, threaded. Tests the lower end of viable part size. |
Every commit to the codebase runs the full pipeline against all 20 parts across every strategy. Parts that cannot be fixtured by a given strategy are expected to be rejected cleanly — a controlled incompatibility, not a crash.
Related articles: