OPJAW

How Automated Fixture Generation Works

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:

  1. Surface analysis — find the seating face and orient the part
  2. Strategy selection — score each tooling type against the part geometry
  3. Pocket generation — extract the clamping profile from the solid
  4. Validation — measure the output before you ever see it

The entire pipeline is procedural geometry code. Deterministic — same input, same output, every time. No neural networks, no model weights, nothing stochastic.

1. Surface Analysis

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.

2. Strategy Selection

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.

3. Pocket Generation

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).

4. Validation

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.

The 20 Parts

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.

Upload a STEP file

Related articles: