Tolerances in CAD: What AI Tools Usually Get Wrong
The specific ways generative CAD tools mishandle tolerance — from silently defaulting to nominal dimensions to ignoring fit relationships between mating parts — and how to catch it before a part reaches the shop.
Most AI-generated CAD models carry no tolerance information at all — every dimension is treated as an exact, nominal value with no allowance for real-world manufacturing variation. This isn't a minor omission. A model with only nominal dimensions and no tolerance is not a complete engineering specification; it's a shape. Whether that gap matters depends entirely on what the part is for, but for anything that mates with another part, it matters a lot.
Why "exact dimensions" isn't actually a complete spec
Every manufacturing process has inherent variation — a CNC-machined hole won't be exactly 10.000 mm every time, it'll be 10.000 mm ± some process capability, typically a few hundredths to a few tenths of a millimeter depending on the process and machine. A model that specifies "10 mm" with no tolerance leaves the actual acceptable range up to whoever inspects the part — which usually means either the shop applies a generic default tolerance (which may be too loose or too tight for your actual need) or nothing gets flagged as out-of-spec until an assembly fails.
The specific mistakes generative tools tend to make
1. Treating every dimension as equally important
A real design has a handful of dimensions that are functionally critical (they control fit, alignment, or load path) and many more that are not (they just need to be "close enough" for clearance or aesthetics). A model that can't distinguish between these — and most freeform generation can't, because it isn't reasoning about function, just producing a plausible shape — has no way to tell you where tight tolerance actually matters. This is one of the reasons GD&T exists as a separate discipline; see our GD&T basics guide for how to communicate "this is critical, this is not" explicitly.
2. Ignoring fit relationships between mating parts
A shaft and the bore it sits in aren't two independent dimensions — their relationship (how much clearance or interference exists between them) is the actual functional requirement. A model that generates a shaft and a bore as separate features, each with its own nominal dimension and no explicit fit relationship, can produce a pair that's geometrically "close" but functionally wrong — a running fit that's actually a light interference fit once real tolerances are applied, for example. This is exactly what the ISO 286 fit system exists to formalize: a hole and shaft toleranced as a matched pair (H7/g6, H7/p6, etc.), not two independent numbers.
3. Defaulting to unrealistically tight tolerance, or none at all
Two opposite failure modes show up in practice: some generated outputs imply (or a downstream user assumes) unnecessarily tight tolerance on every dimension, which drives up manufacturing cost for no functional benefit; others carry no tolerance information at all, which pushes the decision downstream to whoever manufactures the part — often without the context needed to make it well. Neither is correct. The tolerance should be as loose as function allows and as tight as function requires, dimension by dimension — which requires actually reasoning about what each dimension does, not applying one blanket rule.
4. Not accounting for tolerance stack-up in a chain of dimensions
If several toleranced dimensions are chained together (e.g., a series of features along one axis, each with its own tolerance, where the cumulative position of the last feature depends on all the previous ones), the worst-case total variation is the sum of the individual tolerances — not the tolerance of any single dimension. A generated part that looks fine dimension-by-dimension can still fail an assembly-level requirement once stack-up is considered, and this is very hard to catch by inspecting individual dimensions in isolation.
A worked example: why "10 mm hole, 10 mm shaft" isn't a spec
Consider a shaft meant to rotate freely in a bore. If both are simply specified as "10 mm" with no tolerance:
- The shop machining the bore might hold it to their default tolerance, say 10.00–10.05 mm.
- The shop machining the shaft might independently hold their default, say 9.95–10.00 mm.
- In the worst case, you get a 10.05 mm bore and a 9.95 mm shaft — 0.1 mm clearance, which might be fine for a loose rotating fit, or might be far too much play for a precision application.
- In the other worst case, you get a 10.00 mm bore and a 10.00 mm shaft — a line-to-line fit with essentially zero clearance, which likely won't rotate freely at all.
Specify it correctly with a matched fit — say H7 hole / g6 shaft — and the acceptable range for both parts together is defined as a pair, guaranteeing a specific clearance range regardless of where each individual part lands within its tolerance. This is the difference between "two numbers that happen to be close" and an actual engineering fit specification.
What a tolerance-aware pipeline should actually do
- Flag dimensions with no stated tolerance rather than silently treating them as exact — an unstated tolerance should be a visible gap, not a hidden assumption.
- Recognize mating relationships between features (shaft/bore, bolt/clearance hole) and apply fit logic rather than independent nominal dimensions.
- Default to standard, proven fit classes (like the ISO 286 preferred fits) rather than inventing a custom tolerance band for every feature — proven fits are proven precisely because they've been used enough to know they work and can be manufactured economically.
- Surface tolerance stack-up risk in chained dimension sequences, rather than only validating each dimension in isolation.
- Distinguish functionally critical dimensions from non-critical ones, ideally through explicit GD&T callouts rather than uniform ± tolerance across the whole part.
The bottom line
A model without tolerance information isn't wrong, exactly — it's incomplete. The gap between "a shape that looks like the part" and "a manufacturing specification for the part" is precisely the tolerance information, and it's the part of the job that generative tools most often skip because it requires actually reasoning about function and fit, not just producing plausible geometry. Before trusting a generated model for manufacturing, check whether tolerance was considered at all — and if it wasn't, treat that as an open engineering task, not a detail to skip.
Sources: ISO 286-1:2010 — Geometrical product specifications, tolerance code system · AmesWeb — ISO Tolerance Calculator (H7, h6) · Fictiv — GD&T 101.