The Drawing That Said ±0.05 and Built ±0.3
A customer’s drawing called for a hole pattern on a machined plate with ±0.05 mm positional tolerance. The machine shop held each hole to ±0.02 mm individually. But when the plate mated with its counterpart, the holes were 0.3 mm off. Why? Because nobody had calculated the stack-up. Each hole was fine individually, but the cumulative tolerance across the plate — plus the tolerance in the mating part, plus the tolerance in the machine that drilled them — added up to something the drawing never accounted for.
Tolerance stack-up analysis for machine design is the gap between what the drawing says and what the machine actually produces. Engineers draw tight tolerances because they look precise. Shops cut them because that’s what the print says. But when the parts don’t fit, nobody can point to the specific tolerance that caused it — because nobody calculated it.
This article is how I do tolerance stack-ups before I release a drawing. It’s not a GD&T textbook. It’s the practical method that prevents the “why don’t these fit?” phone call after the parts come back from the shop.
Why Stack-Up Matters in Custom Machines
In a custom machine, parts don’t just need to be made to a tolerance — they need to assemble and function. A locator pin needs to enter a hole. A sensor needs to see a surface. A cover needs to close. The dimension that matters isn’t any single part — it’s the accumulated variation through the assembly.
Consider a simple assembly: a part sits on a fixture plate, a locator pin on the plate enters a hole in the part. The pin height is controlled by the plate thickness, the pin protrusion, the datum surface, and the flatness of both the plate and the part. Each has a tolerance. Add them up and the pin might not reach the hole — or it might protrude too far and jam.
The stack-up analysis tells you whether the assembly will actually work, given the real tolerances on every part in the chain.
Two Methods: Worst Case vs. Statistical (RSS)
There are two ways to add up tolerances. They give very different answers, and picking the wrong one gets you in trouble.
Worst Case (100% of Parts Assemble)
Worst-case stack-up adds every tolerance directly. The maximum possible variation is the sum of all individual tolerances. If each of five dimensions has a ±0.1 mm tolerance, the worst-case stack-up is ±0.5 mm.
This is the conservative approach. It guarantees that every part, within its tolerance, will assemble. But it’s also the most expensive — it forces every dimension to be tighter than it needs to be.
Use worst-case when:
- The number of dimensions in the chain is small (3–5).
- The fit is critical (a locating pin, a sealing surface).
- You can’t sort or selectively assemble parts.
- The cost of a non-assembling part is high (safety, rework, downtime).
Statistical / Root Sum Square (RSS)
Real tolerances aren’t all at their worst simultaneously. If you make 1,000 parts, most dimensions fall near the middle of their tolerance band, not at the edges. The RSS method reflects this: the stack-up is the square root of the sum of the squares.
For five ±0.1 mm dimensions: RSS = √(5 × 0.1²) = √0.05 = ±0.224 mm. That’s less than half the worst-case value. The parts are more likely to fit than the worst-case analysis suggests.
Use RSS when:
- The chain has 6+ dimensions.
- The parts are produced in volume (statistics mean something).
- A small fraction of non-assembling parts is acceptable (sorting, rework).
- You want to loosen individual tolerances without risking the fit.
The honest approach: Run both. Worst-case tells you the worst that can happen. RSS tells you what’s likely. If the worst-case stack-up exceeds your required clearance, you need tighter tolerances or a different design. If RSS works but worst-case doesn’t, you accept a small defect rate and add a sorting step.
Building the Tolerance Chain: Pick the Right Dimensions
The most common mistake is including the wrong dimensions in the stack-up. Not every tolerance on a drawing affects the critical fit. Identify the gap — the dimension you’re trying to control — and trace the chain from one side of the gap to the other.
How to Build the Chain
- Identify the gap. What clearance or interference are you trying to control? (Pin-to-hole clearance, cover-to-frame gap, sensor-to-part distance.)
- Pick the starting datum. One side of the gap. (The frame datum surface.)
- Trace through every dimension from that datum to the other side of the gap. (Frame height tolerance, plate thickness tolerance, pin protrusion tolerance.)
- Assign each dimension a tolerance and a sign. Dimensions that add to the gap are positive; dimensions that subtract are negative.
- Add them up (worst case) or square-sum them (RSS).
Every dimension in the chain must be a real, toleranced dimension on a drawing. “We’ll make it fit” isn’t a dimension. “The shop will hold it” isn’t a tolerance. If you can’t point to the tolerance on a drawing, it’s not in the chain.
GD&T: Making Tolerances Meaningful
Plus/minus tolerances on a drawing don’t capture how parts actually assemble. A hole with a diameter tolerance of Ø10 ±0.05 doesn’t tell you where the hole is located relative to the datums. That’s what GD&T (Geometric Dimensioning and Tolerancing) is for.
The Symbols That Matter Most
| Symbol | Controls | Use It When |
|---|---|---|
| Position (⌖) | Where a hole or feature is located relative to datums | Mating holes, pin locations, bolt patterns |
| Flatness (⏤) | How flat a surface is | Mounting surfaces, rail ways, fixture datums |
| Perpendicularity (⟂) | How square a surface is to a datum | Vertical walls, bearing bores, guide rail faces |
| Parallelism (∥) | How parallel two surfaces are | Opposite faces, dual rail mounting surfaces |
| Profile (◡) | The shape of a complex contour | Formed parts, contoured tooling |
Material Condition Modifiers: Leveraging Bonus Tolerance
Position tolerances with an MMC (Maximum Material Condition) modifier give you bonus tolerance. A hole that’s larger than its minimum diameter gets extra positional tolerance. A pin that’s smaller than its maximum diameter gets extra positional tolerance. This is free tolerance — it costs nothing and makes parts easier to make.
For a Ø10 H7 hole with a position tolerance of 0.1 at MMC: if the hole comes out at Ø10.05 (larger than the minimum Ø10.00), the position tolerance grows to 0.15. The part is easier to make because the hole is bigger. This is standard for bolt holes and pin holes — use it.
The 1D Stack-Up Spreadsheet
You don’t need fancy tolerance analysis software. A spreadsheet does the job for 1D chains. Set up columns:
| # | Dimension | Nominal | Tolerance ± | Sign (+/-) |
|---|---|---|---|---|
| 1 | Frame height | 850 | 0.5 | + |
| 2 | Plate thickness | 20 | 0.1 | − |
| 3 | Pin protrusion | 15 | 0.05 | + |
| Worst case: | 0.5 + 0.1 + 0.05 = ±0.65 mm | |||
| RSS: | √(0.5² + 0.1² + 0.05²) = ±0.51 mm | |||
If the required clearance is 1.0 mm, both methods work. If the required clearance is 0.5 mm, worst-case fails — you need to tighten the frame height tolerance or redesign the interface. The spreadsheet tells you that before the parts are cut.
Common Stack-Up Mistakes
Mistake 1: Forgetting the Assembly Tolerance
When parts bolt together, the assembly itself has tolerance. A plate bolted to a frame isn’t perfectly flat — there’s the flatness of the frame, the flatness of the plate, and the gap between them. If you only stack the part dimensions, you miss the assembly variation.
Mistake 2: Tightening Everything Instead of Choosing What Matters
The instinct is to give every dimension a tight tolerance because “precision.” That makes parts expensive without improving the assembly. Identify which dimensions are in the critical chain and tighten those. Leave the non-critical dimensions at loose tolerances. The shop will thank you.
Mistake 3: Ignoring Datum Reference
A hole’s position tolerance is relative to the datums on the drawing. If the mating part uses different datums, the stack-up doesn’t work. Make sure both parts in the assembly use the same datum scheme. If the fixture locates on datum A and B, and the part’s hole pattern is dimensioned from datum C and D, you’re comparing apples to oranges.
When to 3D Stack-Up (and When 1D Is Enough)
Most custom machine applications are 1D stack-ups — you’re controlling a clearance in one direction (height, depth, position along an axis). 3D stack-up (where variation in X, Y, and Z combine) matters for:
- Robot reach envelopes: The robot’s position error in X, Y, and Z combines to determine whether it can place the part.
- Vision-guided placement: Camera calibration error, robot error, and part variation all combine in 3D space.
- Multi-datum fixtures: When the part locates on three non-coplanar surfaces, the 3D variation matters.
For 1D chains, the spreadsheet is enough. For 3D, you need software like Sigmetrix, VisVSA, or the tolerance analysis module in your CAD package. But 90% of custom machine stack-ups are 1D.
A Tolerance Analysis Checklist
- What is the critical gap or clearance you’re controlling?
- Have you traced every dimension in the chain from datum to datum?
- Have you included the assembly variation (not just individual parts)?
- Did you run both worst-case and RSS?
- Do the critical dimensions use GD&T (position, flatness, perpendicularity)?
- Did you apply MMC bonus tolerance where appropriate?
- Are the datums consistent between mating parts?
- Have you identified which tolerances need tightening (and which can stay loose)?
- Does the final stack-up leave enough clearance (with margin)?
- Is the tolerance analysis documented with the drawing release?
The Bottom Line
GD&T for custom machinery and tolerance stack-up analysis aren’t academic exercises. They’re the difference between a machine that assembles on the first try and one that goes to the shop for shimming on every install. Identify the critical gap, trace the chain, run both worst-case and RSS, and put the right GD&T on the drawing. The hole that fits on the first try isn’t luck — it’s the result of knowing where the variation goes before the parts are cut.