hexagon logo

PC-DMIS 3D Line Straightness

PC-DMIS appears to have issues calculating the proper straightness of a 3D line. The definition of straightness from the PC-DMIS online help is: This is the diameter of a cylinder that contains all the input points. A best-fitting routine determines the axis of the cylinder. If this is actually what PC-DMIS is using then the results are wrong using any method available in PC-DMIS.

; test points and resulting line
PNT1 =FEAT/POINT,CARTESIAN,NO
THEO/<432.03501,-1213.3127,50.2008>,<0,0,1>
ACTL/<432.03501,-1213.3127,50.2008>,<0,0,1>
CONSTR/POINT,CAST,PT_46_1
PNT2 =FEAT/POINT,CARTESIAN,NO
THEO/<455.70566,-1213.79075,42.17132>,<0,0,1>
ACTL/<455.70566,-1213.79075,42.17132>,<0,0,1>
CONSTR/POINT,CAST,PT_46_2
PNT3 =FEAT/POINT,CARTESIAN,NO
THEO/<479.38146,-1214.19232,34.15272>,<0,0,1>
ACTL/<479.38146,-1214.19232,34.15272>,<0,0,1>
CONSTR/POINT,CAST,PT_46_3
PNT4 =FEAT/POINT,CARTESIAN,NO
THEO/<503.0449,-1214.60886,26.09845>,<0,0,1>
ACTL/<503.0449,-1214.60886,26.09845>,<0,0,1>
CONSTR/POINT,CAST,PT_46_4
PNT5 =FEAT/POINT,CARTESIAN,NO
THEO/<526.72087,-1215.06874,18.08364>,<0,0,1>
ACTL/<526.72087,-1215.06874,18.08364>,<0,0,1>
CONSTR/POINT,CAST,PT_46_5
LIN1 =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
THEO/<432.0354,-1213.32863,50.20282>,<0.9468433,-0.0173208,-0.3212286>
ACTL/<432.0354,-1213.32863,50.20282>,<0.9468433,-0.0173208,-0.3212286>
CONSTR/LINE,BF,3D,PNT1,PNT2,PNT3,PNT4,PNT5,,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,WAVELENGTH=0

​; straightness results
DIM STRA3= STRAIGHTNESS OF LINE LIN1 UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=10.00 ARROWDENSITY=100 OUTPUT=BOTH
AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
M 0.00000 0.01000 0.00000 0.04133 0.04133 0.03133 -------->

​FCFSTRA2 =GEOMETRIC_TOLERANCE/STANDARD=ASME Y14.5,SHOWEXPANDED=YES,
UNITS=MM,OUTPUT=BOTH,ARROWDENSITY=100,
SEGMENT_1,STRAIGHTNESS,DIAMETER,0.01,TOL_ZONE_MATH =DEFAULT,
TEXT=OFF,CADGRAPH=OFF,REPORTGRAPH=OFF,MULT=10,
MEASURED:
LIN1:0.04623,
ADD
FEATURES/LIN1,,

​FCFSTRA3 =GEOMETRIC_TOLERANCE/STANDARD=ASME Y14.5,SHOWEXPANDED=YES,
UNITS=MM,OUTPUT=BOTH,ARROWDENSITY=100,
SEGMENT_1,STRAIGHTNESS,DIAMETER,0.01,TOL_ZONE_MATH =LSQ,
TEXT=OFF,CADGRAPH=OFF,REPORTGRAPH=OFF,MULT=10,
MEASURED:
LIN1:0.05824,
ADD
FEATURES/LIN1,,​


First off, why three different (and wrong) answers for the same thing?

The correct result is 0.04936 mm using the above data. I was able to verify this in PC-DMIS by creating an alignment from the best fit line and finding the smallest diameter circle containing all the input points:

A1 =ALIGNMENT/START,RECALL:MC_CSY,LIST=YES
ALIGNMENT/LEVEL,ZPLUS,LIN1
ALIGNMENT/TRANS,XAXIS,LIN1
ALIGNMENT/TRANS,YAXIS,LIN1
ALIGNMENT/END

CIR1 =FEAT/CIRCLE,CARTESIAN,IN,MIN_CIRCSC],NO
THEO/<-0.00715,0.00477,463.95901>,<0,0,1>,0.04936
ACTL/<-0.00715,0.00477,463.95901>,<0,0,1>,0.04936
CONSTR/CIRCLE,BF,2D,PNT1,PNT2,PNT3,PNT4,PNT5,,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,UPR=0


I did figure out the method PC-DMIS used to calculate the straightness with the GeoTol command when the TOL_ZONE_MATH is set to DEFAULT or LSQ (Least Squares is not a valid description by the way). Neither method results in the smallest containing cylinder. The legacy method is a mystery and clearly wrong.
Parents Reply Children
  • Legacy is based on the math used when constructing the line - which will be least squares. The geometric tolerance command, when set to DEFAULT math, will use Chebyshev because that is what is required by both ISO and ASME. I do not have time to investigate further at the moment but I am extremely confident the math for geotol is correct. I would need 's routine to see exactly what is happening.