GD&T
The hole is in tolerance on X. It’s in tolerance on Y. The bolt still won’t go through.
You dimensioned the hole ±0.1 mm on both axes. Inspection checked both axes and signed it off. The assembly still doesn’t go together. Nobody lied to you — coordinate tolerancing and the thing you actually need are not the same question.
What’s actually happening
Two holes, same nominal position, same ±0.1 mm on X and ±0.1 mm on Y. One lands 0.1 mm off dead-centre along the X axis. The other lands 0.1 mm off in X and 0.1 mm off in Y at the same time — 0.141 mm off on the diagonal. Both pass. Both were told the same tolerance. One is 41% further from nominal than the other.
A square tolerance zone doesn’t match a round hole and a round bolt — GD&T’s position control does. That’s the entire reason the symbol set exists. It isn’t decoration on top of ordinary dimensioning; it’s a different, more honest way of saying what a round feature is actually allowed to do.
Square zone (±0.1 mm X, ±0.1 mm Y): 0.2 × 0.2 mm → area 0.0400 mm²
Circular zone, diameter = square diagonal: ⌀0.283 mm → area 0.0628 mm²
Increase in usable zone, same worst-case allowance: 57.1%
Checked in Python before writing this: the circle isn’t a bigger tolerance out of nowhere — it gives every direction the same 0.141 mm the square’s corners already got away with, instead of only 0.1 mm along the axes.The datum reference frame
None of this works without something to measure from. A feature control frame is meaningless until you know what it’s being measured relative to — that’s the datum reference frame, and it’s usually three features: primary, secondary, tertiary, in that order.
Order isn’t optional. Primary constrains the most degrees of freedom (a flat face sitting on three points), secondary constrains what’s left (a pin or edge stopping rotation and one more translation), tertiary mops up the last one. Swap the order — call out B-A-C instead of A-B-C — and you get a different part checked against a different frame, from the same nominal geometry.
The controls, grouped by what they actually constrain
| Category | Controls | What it actually constrains | Needs a datum? |
|---|---|---|---|
| Form | Flatness, straightness, circularity, cylindricity | The feature’s own shape, nothing else | No |
| Orientation | Perpendicularity, parallelism, angularity | Direction relative to a datum | Yes |
| Location | Position, concentricity, symmetry | Where the feature sits relative to datums | Yes |
| Profile | Profile of a surface, profile of a line | Form and location together — the most versatile control | Usually |
| Runout | Circular runout, total runout | Combined effect of several errors on a rotating part | Yes |
Form controls are the only ones that don’t reference a datum — everything else on this table is meaningless without the datum reference frame above it. That’s the single most common misread I see on client drawings: a perpendicularity or position callout with no datum letters in the frame, which isn’t actually a spec.
Bonus tolerance — the free tolerance nobody explains
A position tolerance next to a hole often carries an M after the value — “at maximum material condition.” This means the tolerance stated is the minimum you get. As the hole is produced larger than its smallest allowed size (MMC), you earn back the difference as extra position tolerance, because a bigger hole has more room to be off-centre and still let the same bolt through.
Hole: ⌀10 mm, +0.2/-0 → MMC = 10.00 mm (smallest hole, least slack) → LMC = 10.20 mm (largest hole, most slack)
Position tolerance specified: ⌀0.2 mm at MMC
Actual 10.00→bonus 0.00→total 0.20 mm · 10.05→0.05→0.25 mm · 10.10→0.10→0.30 mm · 10.15→0.15→0.35 mm · 10.20→0.20→0.40 mmThe M isn’t generosity — it’s an acknowledgement that position and size trade off against each other on a physical part, and the drawing should let a good part pass instead of rejecting it on a technicality. L (least material condition) does the same thing in the other direction — used less often, mostly for wall thickness and minimum edge distance.
Reading a feature control frame
Left to right, always: the characteristic symbol, then the tolerance value (with a diameter symbol if the zone is round, and M or L if it’s modified), then the datums in precedence order, each in its own compartment. Primary first, secondary second, tertiary third. Skipping a compartment, or reversing the datum order, changes what’s being checked.
Why we care
A drawing full of ±0.1 mm block tolerances on every hole looks precise and controls almost nothing that actually matters to assembly. What matters is whether the part goes together — and that’s a question about relationships between features, not the size of any one of them in isolation.
When I put a position callout with a datum reference frame on a drawing, I’m telling the shop exactly what has to line up and exactly how much slack they have to work with, in the direction the slack actually needs to exist. That’s fewer rejected parts that were functionally fine, and fewer parts that passed a coordinate check and still didn’t assemble.
It also tells me, reading someone else’s drawing, whether the designer understood what they were asking for. A position callout with no datums, or a profile control on a surface that has no clear function, is usually a sign the drawing was built from a template rather than from the part.