True position is probably one of the most used tolerance tools in any CMM software and depending on which industry you're in, you've probably used this tool on every program that you've created for so many years. As long time CMM users we all know the magic formula to calculate TP value from deviations from each axis (and of course we need to double it at the end). This formula works no problem if your features (e.g. circles) are 2D, but have you ever double checked how it works on 3D features (e.g. circles with compound angle to your co-ordinate system)? When I was doing on-site support recently, one of the QE brought up this question: how come the final TP value from PC-Dmis doesn't seem to be calculated correctly from the deviations of 3 axis? What an interesting question, so let's have a look:

From the above results, with a very quick calculation we don't think the TP of circle P106, 2.546 is anywhere near the double of those deviations from xyz axis. If I use the formula, here's what I got:

TP=2xsqrt[(2.083)^2+(0.552)^2+(0.879)^2] =** 4.655**

So what was wrong? I think you've must realized that there's surface deviation involved in 3D circles so you can't use all those axis deviations for TP calculation. Then how does it work? Firstly, we need to know the orientation of this circle P106:

Now you can see the axis of P106 is at 40.15 deg. from your co-ordinate system, but the TP deviation should be square to surface normal (think of a plug pin on checking fixture). To get the correct TP value, we need to follow these steps:

1, We need to project deviations from X and Y to get deviation 1:

Proj.X = 2.083 x sin(40.15) = 1.3437

Proj.Y = 0.552 x cos(40.15) = 0.4219

Total dev. = 1.3437 - 0.4219 = 0.9218

2, Now we need to combine this deviation with Z deviation:

TP = 2 x sqrt [(0.9218)^2 + (0.879)^2] = 2 x 1.2735 = **2.547**

That's only .001 difference from PC-Dmis results, due to round off in software. You can try following this method to double check the TP result on P107 to see if you can get close enough reading compared to the output. Even though we don't need to do this kind of calculation in real world since the software has taken care of this, but this is a good challenge to yourself if you want to be a good CMM programmer to give people right answer when facing questions like this from people who don't trust your CMM as much as you do.

I hope you enjoy this collaboration and feel free to send me e-mails for other questions you might have.