Guides

GD&T computation, explained

Bonus tolerance, virtual condition, resultant condition, and stack-up — what each one means, the formula behind it, and which of the six GD&T Compute tools computes it.

Guide · Geometric dimensioning & tolerancing

A drawing's tolerances aren't just a tolerance block — a feature control frame under ASME Y14.5-2018 can grant a part more room to be wrong, depending on how far its actual size lands from a stated material-condition boundary. Getting that math wrong in either direction either rejects parts that would have assembled fine, or passes parts that won't. None of what follows is ForgeMCP-specific; it's the standard, and it's worth knowing cold whether or not an AI assistant ever touches your drawings.

Bonus tolerance

A geometric tolerance applied to a feature of size — a hole, a shaft, a slot — can carry a material-condition modifier: MMC (maximum material condition, the size at which the feature has the most material) or LMC (least material condition, the opposite). When it does, the feature earns bonus tolerance as its actual produced size departs from that modifier's boundary.

Bonus tolerance = |Produced size − Material-condition size|

That bonus adds directly to the tolerance stated in the feature control frame. A pin toleranced at MMC that's produced under-size — smaller than its MMC diameter — picks up bonus tolerance equal to that difference, and the pin is now allowed to be that much further out of position and still satisfy the callout. This is why two parts with identical stated tolerances can have very different allowable tolerances once they're actually measured — the bonus is earned per part, not per drawing.

Virtual condition and resultant condition

Bonus tolerance tells you what one produced part is allowed. Virtual and resultant condition tell you the two worst-case boundaries across every part that could ever be produced to the callout — the numbers a mating-part designer or a gauge designer actually needs.

Virtual condition is the boundary at MMC, with zero bonus: stated tolerance applied directly at the material-condition size. For an external feature like a shaft, VC = MMC + geometric tolerance (the largest the shaft's worst-case envelope ever gets). For an internal feature like a hole, VC = MMC − geometric tolerance (the smallest the hole's worst-case envelope ever gets). It's the tightest the mating interface is ever required to clear, which is exactly why it's the number a functional gauge is built to.

Resultant condition is the opposite end: the boundary at LMC, with the full bonus tolerance included. It answers a different question — not "what must a mating part clear," but "how thin can a wall get, or how far can a feature's true position drift, in the worst combination of size error and position error." For an external feature, RC = LMC − stated tolerance − bonus at LMC; for an internal feature, RC = LMC + stated tolerance + bonus at LMC.

Mixing these two up is a common, expensive mistake: designing a mating clearance to resultant condition instead of virtual condition either over-constrains the fit or lets parts through that shouldn't clear.

Worst-case vs. RSS stack-up

A tolerance stack-up adds a chain of individual tolerances to find the resulting variation at an assembly-critical dimension. There are two standard ways to combine them, and they give meaningfully different answers.

Worst-case stack-up sums every contributor's full tolerance: Total = Σ tolerance_i. It guarantees the assembly works even in the statistically improbable scenario where every dimension in the chain lands at its limit at once. That guarantee is also its cost — worst-case stacks are often tighter, and therefore more expensive to hold, than the assembly actually needs.

RSS (root-sum-square) stack-up combines the same contributors in quadrature instead: Total = √(Σ tolerance_i²). This is far less conservative, because it assumes each contributor's variation is independent and roughly normally distributed — which is a real assumption, not a formality. RSS is the right tool once a process has the capability data to back that assumption; used without it, RSS just replaces a known-safe answer with an optimistic guess.

Feature control frames, as data

A feature control frame packs a lot into one symbol string: a geometric characteristic (position, perpendicularity, flatness, and the rest of the fourteen ASME Y14.5-2018 symbols), a tolerance value, an optional material-condition modifier, and up to three datum references in precedence order. Parsed into structured fields — characteristic, tolerance, modifier, datums — a feature control frame becomes something a rules engine, or an AI assistant, can actually check: is this callout syntactically valid, is the modifier applied to a feature of size (it's a Y14.5 violation on anything else), does the datum reference sequence make sense.

Where the compute lives

GD&T Compute is six tools that run every calculation above, live, on every ForgeMCP plan, with no credentials and no external calls:

Concept aboveTool
Bonus tolerancegdt_bonus_tol
Virtual conditiongdt_virtual_cond
Resultant conditiongdt_resultant_cond
Stack-up (worst-case and RSS)gdt_stack_up
Feature control frame parsinggdt_parse_fcf
ASME Y14.5-2018 compliance checkgdt_asme_check

On the desktop connectors, this closes a loop end to end: Inventor and SolidWorks can both pull the feature control frames straight off an open drawing, and GD&T Compute takes it from there — parse the callout, check it against the standard, and run whatever bonus, virtual-condition, resultant-condition, or stack-up math the review actually needs, in the same session.

ForgeMCP and GD&T Compute are independent products of All Aligned Consulting LLC and are not affiliated with, sponsored by, or endorsed by ASME. References to ASME Y14.5-2018 are for identification and interoperability only. GD&T Compute assists engineering review and is not a substitute for professional engineering judgment or qualified human verification.

Related