← All posts

Why Does a Part Pass Positional Tolerance on the CMM But Still Not Assemble?

Because the CMM checked the feature against the datum reference frame called out on the drawing, and that frame isn't necessarily how the part actually gets held during assembly. A report that says "in tolerance" is only as good as the datum scheme matching the real constraint the part sees at the m

Because the CMM checked the feature against the datum reference frame called out on the drawing, and that frame isn't necessarily how the part actually gets held during assembly. A report that says "in tolerance" is only as good as the datum scheme matching the real constraint the part sees at the mating step.

The datum reference frame is the whole story

Positional tolerance doesn't exist in isolation. It's measured relative to a stack of datums, usually a primary, secondary and tertiary surface or feature that establish an orientation and origin. If the drawing calls datum A as the back face, B as one edge, and C as a hole, the CMM sets up exactly that frame and reports true position against it.

If assembly actually locates the part off a different surface, or off two holes instead of a face-and-edge scheme, the part can be dead-on relative to the print's datums and still land somewhere else relative to the fixture actually constraining it downstream.

That's the mismatch, and it's a drawing problem, not a measurement problem.

MMC modifiers change what "in tolerance" means

A positional callout at maximum material condition gives bonus tolerance as the actual feature size departs from MMC. A hole machined slightly larger than its MMC size effectively gets a looser position tolerance under the callout. That's a legitimate way to gain assembly clearance, but it means two parts both "in tolerance" per the print can sit meaningfully differently if their hole sizes differ. A passing position number at one feature size doesn't tell you where that feature sits relative to a mating part machined at a different actual size.

Bonus tolerance versus a functional gage

The CMM answers a geometric question: is this feature within its zone relative to these datums. It doesn't simulate a functional gage. Assembly can fail in ways a positional callout alone doesn't catch: clearance holes stacking against multiple mating features, a datum precedence assumption that doesn't match how the fixture actually indexes the part, or a scheme that was fine for one feature in isolation but doesn't account for two toleranced features interacting once both parts stack together.

Size and position are coupled by design.

What actually causes the mismatch in practice

The most common real cause is a drawing where the datum scheme was chosen for ease of inspection rather than to match assembly. A part located off two dowel holes in the fixture but toleranced off a flat face and a single hole on the print will report clean numbers that don't predict fit. Another common one: position called at RFS when the design intent was actually MMC, or the reverse, changing how much positional error is allowed for a given as-built feature size without changing what the CMM prints on the report.

The takeaway

A passing CMM report tells you the part conforms to what the drawing specified. It doesn't independently verify the drawing specified the right thing. If parts keep not assembling despite clean inspection reports, go back to the datum reference frame and the MMC or RFS callouts before assuming the CMM or the machinist made an error. Fix the tolerancing scheme so it reflects how the part gets located in assembly, and the reports will start meaning what everyone assumes they mean.

Need a part made?

Upload your file for an instant price.

Start a quote