Tolerance Stack-Up in Multi-Process Assemblies
When parts from different processes won't assemble despite passing inspection individually.

A batch of parts shows up, every single one checks out against its drawing, and assembly still refuses to go together. Cumulative dimensional variation across a chain of components caused it, and it gets sharpest right at the seams where one manufacturing process hands off to another. A CNC-machined bracket, a cast housing, and a sheet metal enclosure cost different amounts, take different lead times, and produce dimensional output by entirely different rules. Combine them into one assembly and you're combining three different pictures of "close enough." The spots where they meet, mating surfaces, fastener patterns, press-fit bores, are where the math turns ugly fast.
Tolerance stack-up works like this: each part in an assembly carries its own variation, and the assembly closes on the sum of all of it, not on any one part alone. Every process contributes a slice of error. String a few processes together and you're not adding small numbers; you're adding numbers pulled from different distributions, different machines, and often different vendors who never see each other's parts. Catch it late and rework, re-sourcing, or a redesign costs far more than the parts ever did. Catch it early, before anything gets cut, and it comes down to knowing where the risk actually sits.
What each major manufacturing process can and cannot hold dimensionally
Stack-up math is only as good as the numbers going into it. Feed it bad assumptions about what a process can hold, and the output means nothing, no matter how careful the arithmetic looks.
CNC machining sets the tightest baseline of the group. A well-maintained mill routinely holds ±0.025 mm on critical features. That number comes with conditions attached, though. Thin walls flex under the cutting tool. Deep cavities lose stiffness the farther the tool reaches in. Multi-axis setups stack their own small errors with every repositioning, and if the raw stock came from extrusion or casting, residual stress inside the material can warp the part once metal gets removed; it measures right on the machine and then drifts afterward as it settles.
Sheet metal fabrication lives in a wider band, and many engineers assume laser cutting runs loose because it's fast and cheap. Laser cutting holds around ±0.005 in., steady regardless of feature size. Waterjet runs a bit looser at roughly ±0.009 in., still plenty for most structural features. Under standard shop conditions, sheet metal laser cutting lands near ±0.1 mm, about four times looser than precision CNC work. None of that accounts for forming, though. Bend a flat blank and you get springback, bend-radius drift, and whatever the fixturing adds on its own. Flat-cutting tolerances tell you nothing about what happens once the part gets folded.
Casting covers the widest native range of any process here, and how wide depends on which casting method you mean. Die casting gives the tightest as-cast tolerances in the family, tight enough in some cases to mate with machined parts with no secondary work at all. Investment casting can hit ±0.005 in. on small parts, though that number opens up fast as the casting gets bigger. Sand casting, for general industrial parts, typically runs ±0.5 mm to ±2.0 mm, and once a part grows large, plan on tolerances opening up significantly beyond that baseline. Worth remembering if a large structural casting sits anywhere in the assembly. As-cast surfaces almost never qualify as controlled interfaces on their own; they need a machined datum feature before they can enter a stack-up as something you can trust.
3D printing resists a single number entirely, and treating it as one process is a common mistake. FDM, SLA, SLS, and metal powder-bed each produce different accuracy, and lumping them under "3D printing tolerance" hides more than it reveals. The real hazard is anisotropy: dimensional accuracy shifts depending on which axis the part was built along, so a part that looks symmetric can carry asymmetric variation just from how it sat on the build plate. Any prototype assembly mixing printed and machined parts has to account for that directly, not assume the printed part behaves like a uniform block of material.
Composite layup sits off to the side of this comparison. Tolerances there depend heavily on tooling and cure method, and a machined edge cut after cure behaves far more predictably than a net surface straight out of the mold.
The point across all of it: these processes carry different price points, and beyond that, they produce different statistical pictures of dimensional output. Mix them in one assembly and the variation budget doesn't add up cleanly. It multiplies.
How stack-up accumulates when process boundaries are crossed
Picture a CNC-machined shaft seating into a cast bore. The stack there includes the shaft's OD variation, the bore's as-cast or post-machine variation, and any datum shift baked in when the casting got fixtured for its secondary machining pass. That's three separate contributors at one interface already, and a three-process assembly can rack up five or six independent sources of variation at a single critical joint without anyone intending it.
Datum shift deserves more attention than it usually gets. When a casting or forging goes into a fixture for CNC work, the fixturing itself introduces positional error. The machined feature ends up accurate relative to the fixture's datum, sure, but that datum might not line up with the as-cast reference surface the original design assumed it would use. Once that mismatch exists, it rides along in every downstream dimension measured from that machined feature.
Surface finish mismatch causes trouble too. A rough cast surface pressed against a precision-ground surface shifts the effective contact plane. On paper, the dimensional stack checks out fine. In the physical part, the mating plane sits somewhere other than where the drawing assumed.
Temperature adds a whole different axis to the problem. A cast aluminum housing paired with a steel shaft expands and contracts at different rates as temperature swings. A tolerance that works fine at room temperature can bind or loosen at operating temperature.
Assemblies with pivots, guided slides, or articulated brackets don't stack linearly at all, and standard analysis can quietly fail here. A small angular error at one joint can amplify into a much larger positional error out at the end of a lever arm. Root-sum-square analysis assumes linear behavior, so applied blindly to a kinematic assembly, it can badly underestimate the real risk.
Take a sheet metal chassis with cast mounting bosses and CNC-machined mating plates bolted across all of it. The bolt pattern has to close tolerances pulled from three separate process regimes at the same time. Every part can be individually in-spec, and the bolt-hole true position can still land far enough off that the assembly simply won't go together.
Worst-case versus statistical analysis, and when to use each
Many teams reach for worst-case analysis out of habit rather than need, and that habit costs money it doesn't need to spend. Worst-case sums every tolerance at its extreme limit, all at once, as if the worst possible version of every part showed up on the same day. If the assembly closes under that condition, it closes every time, guaranteed. That guarantee costs something, though: individual part tolerances have to survive that pile-up scenario, which often forces expensive tolerances onto dimensions that have nothing to do with how the part actually functions. Save worst-case for safety-critical features, low-volume runs where a single non-assembling unit isn't acceptable, or anywhere a field failure costs vastly more than tight tolerancing does up front. Everywhere else, it tends to be the wrong tool for the job.
Statistical analysis, root-sum-square, takes a different approach. It treats each dimension as a distribution and sums the variances instead of the extremes, predicting a likely yield of conforming assemblies rather than promising every single one will fit. Under RSS, accepting a small, known nonconformance rate, under 0.27 percent, is a deliberate trade: skip the over-tolerancing, keep part costs down, and write the risk down instead of pretending it isn't there. That decision belongs on paper, reviewed and signed off, never just assumed by default. Monte Carlo simulation pushes the same idea further, sampling from real process distributions millions of times over to build a probabilistic picture of yield instead of one bounding number.
Standard RSS breaks down once casting or forging enters the loop, a limitation many stack-up spreadsheets miss without anyone noticing. RSS assumes normal distributions and linear assembly behavior, but tool wear, sand compaction variation, and cooling gradients in casting produce skewed or heavy-tailed distributions that don't fit that assumption. Second-order tolerance analysis, which accounts for skewness and kurtosis and handles non-linear assembly functions, fits these situations better. Anywhere a pivot arm or a guided mechanism is involved, the assembly function itself needs modeling, not just the dimensional chain feeding into it.
None of this works without real process capability data behind it. Common targets are Cpk of 1.67 for key characteristics and Cp of 1.33 for non-key ones, but those are targets, not guarantees. A CNC vendor running at Cpk 1.67 and a casting vendor running at Cpk 1.0 contribute very different amounts of real variation to the same loop, even if both are technically "in spec" on paper. The analysis needs actual vendor data, not generic tolerance bands pulled from a handbook. Once that data's in, the payoff is simple: it shows which contributor dominates the stack, so engineering attention goes there first instead of spreading evenly across every dimension on the drawing.
Design strategies that reduce cross-process stack-up before the analysis is even run
Tight tolerances belong on the features that actually need them: sealing surfaces, press fits, alignment bores. Nowhere else. A tight tolerance slapped on a non-critical face spends tolerance budget for no functional gain, and it drives up cost and lead time on a dimension that never touches assembly performance. Keep everything else as open as the process naturally runs.
Cast and formed parts need a machined datum before they enter the stack at all. The as-cast surface isn't a reference point anyone should trust; machine a face or bore first, then reference every critical downstream dimension from that machined surface instead. It costs a secondary operation, but it turns a wide, uncertain native tolerance into a known, tighter datum, and it stops datum ambiguity from spreading through every feature that mates to it later.
Adjustability at the boundary absorbs a lot of pain. Slotted holes instead of round ones, at bolt patterns crossing a process boundary, soak up positional variation without demanding tighter tolerances from either side. Shims, eccentric adjusters, set-screw locking, all of these let final position get corrected at assembly rather than forcing every upstream part to be perfect. This gives the assembly somewhere to put the variation, rather than trying to squeeze it out of each part.
Fewer parts in the critical loop means fewer contributors to the stack. Every part added to a dimensional chain adds its own variation on top of what's already there. Consolidating two parts into one machined piece removes a contributor outright: the old design-for-assembly principle, applied to a tolerance problem instead of an assembly-time problem.
GD&T earns its keep here too. Composite tolerances and true position control what actually matters at a mating feature, instead of stacking independent plus-or-minus values that don't reflect the real geometric relationship between parts.
Prototypes exist for exactly this reason: to find out, cheaply, whether a looser tolerance still does the job before committing to production tooling. A failed prototype costs a fraction of what a die-cast tool built to the wrong tolerance costs. If the stack-up analysis or the process capability assumption was wrong, the prototype stage is the cheapest place in the whole process to find out.
How sourcing decisions affect stack-up risk in ways the drawing doesn't capture
Split a multi-process build across separate vendors and the interfaces between processes end up managed by no one. That part of the problem never shows up in a tolerance stack calculation, and it's arguably the biggest risk on this whole list. One shop machines a shaft to its own read of the drawing; another casts a housing to its own read of the same drawing; neither has visibility into what the other actually produced. Variation that would get caught and corrected inside a single facility instead surfaces for the first time at final assembly, usually the most expensive place to find it.
Drawing interpretation drifts across vendors too. The same GD&T callout read by a casting shop and read by a machine shop can produce two parts that both technically comply, and still don't mate the way the design intended, especially at the exact spot where one vendor's output surface is supposed to be another vendor's datum.
Incoming inspection doesn't catch any of this either. A part that passes incoming inspection against its own drawing tolerance is, correctly, in spec. The failure isn't in any single part; it's in the combination. Only checking the actual mating condition at assembly reveals a cross-process stack-up problem, and by then the parts are already built.
Sourcing the full multi-process bill of materials through one capable partner changes that picture, and it's a fix many teams underrate. A partner producing both the machined and cast components can measure real part output and adjust or select based on actual population variation, not just nominal drawing values. Design-for-manufacturing feedback delivered at the quoting stage, before any metal gets cut, catches tolerance calls that don't match what the processes in that BOM can realistically hold. One purchase order, one shipment, one round of assembly-level inspection before anything ships out, and the gap where cross-process variation usually hides just isn't there to hide in.
For hardware teams working short development cycles, this matters beyond quality. Coordinating multiple vendors burns exactly the schedule time that stack-up analysis was supposed to protect in the first place. Consolidating the BOM carries its own risk-reduction value, standing right alongside the analysis and the design choices that came before it.


