hexagon logo

Repeatability issue, suspecting "leveling" on a cylinder

Hello all! Following... a tricky one!

CYL_A =FEAT/CYLINDER,CARTESIAN,IN,LEAST_SQR,NO
THEO/<0,0,-21>,<0,0,-1>,7.75,4
ACTL/<0.0055,0.0007,-20.9971>,<-0.0001267,-0.000003,-1>,7.7542,4.01
CONSTR/CYLINDER,BF,PNTB1,PNTB2,PNTB3,PNTB4,PNTB5,PNTB6,PN TB7,PNTB8,PNTB9,PNTB10,PNTB11,PNTB12,PNTB13,PNTB14 ,PNTB15,PNTB16,PNTB17,PNTB18,,
AL_REF_A =ALIGNMENT/START,RECALL:A_PIECE,LIST=YES
ALIGNMENT/LEVEL,ZMINUS,CYL_A
ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZMINUS
ALIGNMENT/TRANS,XAXIS,CYL_A
ALIGNMENT/TRANS,YAXIS,CYL_A
ALIGNMENT/TRANS,ZAXIS,PLN2
ALIGNMENT/END


This is my alignment on a cylinde constracted from points on Z axis at -19 / -21 / -23 as Z coordinates. Keep in mind that I have points at around 60 degs on the left and another 60 degs on the right "forming" incomplete inner part circles since there is material missing north and south side of the part. This is my datum and seems to be consistent as a cylinder both at cylindricity and diameter.

In any case. I have 6 "semi" circles on the outside to form 3 circles ( I am probing left and right again of the part) at Z values -5 / -12.5 / -18

CER7 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<V0,V0,-5>,<V0,V0,1>,12.86,0
ACTL/<-0.0293,-0.0004,-5>,<0,0,1>,12.8863,0
TARG/<V0,V0,-5>,<V0,V0,1>
START ANG=-50,END ANG=230
ANGLE VEC=<V0,0+1,V0>
DIRECTION=CW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=5,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=10
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=YES
HIT/BASIC,<5.0669,3.9587,-5>,<0.7880108,0.6156615,0>,<5.0623,3.9473,-4.9989>
HIT/BASIC,<6.0797,2.0934,-5>,<0.9455186,0.3255682,0>,<6.0663,2.092,-4.9997>
HIT/BASIC,<6.43,0,-5>,<1,0,0>,<6.4121,0.001,-5.0028>
HIT/BASIC,<6.0797,-2.0934,-5>,<0.9455186,-0.3255682,0>,<6.0669,-2.0893,-4.9973>
HIT/BASIC,<5.0669,-3.9587,-5>,<0.7880108,-0.6156615,0>,<5.0621,-3.9488,-4.9983>
ENDMEAS/
CER8 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<V0,V0,-12.5>,<V0,V0,1>,12.86,0
ACTL/<-0.02,-0.0008,-12.5>,<0,0,1>,12.8713,0
TARG/<V0,V0,-12.5>,<0,0,1>
START ANG=0-35,END ANG=0+35
ANGLE VEC=<V0,V0,1>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=5,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=10
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=YES
HIT/BASIC,<5.3927,-3.502,-12.5>,<0.8386706,-0.544639,0>,<5.3837,-3.4963,-12.5014>
HIT/BASIC,<6.1652,-1.8262,-12.5>,<0.9588197,-0.2840153,0>,<6.1528,-1.8214,-12.502>
HIT/BASIC,<6.43,0,-12.5>,<1,0,0>,<6.4156,-0.0032,-12.4938>
HIT/BASIC,<6.1652,1.8262,-12.5>,<0.9588197,0.2840153,0>,<6.1522,1.8219,-12.5004>
HIT/BASIC,<5.3927,3.502,-12.5>,<0.8386706,0.544639,0>,<5.3844,3.4934,-12.4991>
ENDMEAS/
CER9 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<V0,V0,-18>,<V0,V0,1>,12.86,0
ACTL/<-0.0233,-0.0013,-18>,<0,0,1>,12.8753,0
TARG/<V0,V0,-18>,<V0,V0,1>
START ANG=0-50,END ANG=230+0
ANGLE VEC=<V0,0+1,0+0>
DIRECTION=CW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=5,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=10
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=YES
HIT/BASIC,<5.0669,3.9587,-18>,<0.7880108,0.6156615,0>,<5.0576,3.951,-18.0043>
HIT/BASIC,<6.0797,2.0934,-18>,<0.9455186,0.3255682,0>,<6.0667,2.0903,-18.0007>
HIT/BASIC,<6.43,0,-18>,<1,0,0>,<6.4135,0.0017,-17.9992>
HIT/BASIC,<6.0797,-2.0934,-18>,<0.9455186,-0.3255682,0>,<6.0661,-2.089,-18.0017>
HIT/BASIC,<5.0669,-3.9587,-18>,<0.7880108,-0.6156615,0>,<5.0593,-3.9529,-17.9999>
ENDMEAS/
MOVE/POINT,NORMAL,<10,-7,8>
MOVE/POINT,NORMAL,<-10,-7,8>
CER10 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<V0,V0,-5>,<V0,V0,1>,12.86,0
ACTL/<0,0,-5>,<0,0,1>,12.86,0
TARG/<V0,V0,-5>,<0,0,1>
START ANG=0+230,END ANG=0+130
ANGLE VEC=<V0,V0,1>
DIRECTION=CW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=5,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=10
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=YES
HIT/BASIC,<-4.3025,-4.7784,-5>,<-0.6691306,-0.7431448,0>,<-4.3025,-4.7784,-5>
HIT/BASIC,<-5.8741,-2.6153,-5>,<-0.9135455,-0.4067366,0>,<-5.8741,-2.6153,-5>
HIT/BASIC,<-6.43,0,-5>,<-1,0,0>,<-6.43,0,-5>
HIT/BASIC,<-5.8741,2.6153,-5>,<-0.9135455,0.4067366,0>,<-5.8741,2.6153,-5>
HIT/BASIC,<-4.3025,4.7784,-5>,<-0.6691306,0.7431448,0>,<-4.3025,4.7784,-5>
ENDMEAS/
CER11 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<V0,V0,-12.5>,<V0,V0,1>,12.86,0
ACTL/<0,0,-12.5>,<0,0,1>,12.8223,0
TARG/<V0,V0,-12.5>,<0,0,1>
START ANG=0+45,END ANG=0+115
ANGLE VEC=<V0,0+1,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=5,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=10
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=YES
HIT/BASIC,<-4.7026,4.3852,-12.5>,<-0.7313537,0.6819984,0>,<-4.8833,4.9793,-12.3707>
HIT/BASIC,<-5.7544,2.8691,-12.5>,<-0.8949344,0.4461978,0>,<-5.9313,3.4675,-12.2888>
HIT/BASIC,<-6.3323,1.1166,-12.5>,<-0.9848078,0.1736482,0>,<-6.5055,1.7185,-12.1912>
HIT/BASIC,<-6.3887,-0.7279,-12.5>,<-0.9935719,-0.1132032,0>,<-6.557,-0.1211,-12.1076>
HIT/BASIC,<-5.9188,-2.5124,-12.5>,<-0.9205049,-0.3907311,0>,<-6.0848,-1.8983,-12.0174>
ENDMEAS/
CER12 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<V0,V0,-18>,<V0,V0,1>,12.86,0
ACTL/<-0.1875,0.3366,-17.649>,<0.0018237,0.0512188,0.9986858>,12.8411,0
TARG/<V0,V0,-18>,<0,0,1>
START ANG=0+220,END ANG=0+140
ANGLE VEC=<V0,V0,1>
DIRECTION=CW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=5,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=NO,DISTANCE=10
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=YES
HIT/BASIC,<-5.0669,-3.9587,-18>,<-0.7880108,-0.6156615,0>,<-5.2411,-3.6184,-17.4386>
HIT/BASIC,<-6.0797,-2.0934,-18>,<-0.9455186,-0.3255682,0>,<-6.253,-1.7646,-17.533>
HIT/BASIC,<-6.43,0,-18>,<-1,0,0>,<-6.6082,0.32,-17.6444>
HIT/BASIC,<-6.0797,2.0934,-18>,<-0.9455186,0.3255682,0>,<-6.2634,2.4101,-17.7432>
HIT/BASIC,<-5.0669,3.9587,-18>,<-0.7880108,0.6156615,0>,<-5.2594,4.2687,-17.841>
ENDMEAS/
MOVE/POINT,NORMAL,<-10,7,8>
Ø12_86_5 =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,YES
THEO/<-0.0298,-0.026,-4.95>,<-0.0004096,-0.0006184,0.9999997>,12.86
ACTL/<-0.0067,-0.0001,-4.9997>,<0,0,1>,12.8529
CONSTR/CIRCLE,BF,2D,CER10.HITS[1..CER10.NUMHITS],CER7.HITS[1..CER7.NUMHITS],,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,UPR=0
Ø12_86_12_5=FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,YES
THEO/<-0.0298,-0.026,-4.95>,<-0.0004096,-0.0006184,0.9999997>,12.86
ACTL/<-0.1132,0.2985,-12.3472>,<0,0,1>,13.0627
CONSTR/CIRCLE,BF,2D,CER11.HITS[1..CER11.NUMHITS],CER8.HITS[1..CER8.NUMHITS],,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,UPR=0
Ø12_86_18 =FEAT/CIRCLE,CARTESIAN,OUT,LEAST_SQR,YES
THEO/<-0.0298,-0.026,-4.95>,<-0.0004096,-0.0006184,0.9999997>,12.86
ACTL/<-0.095,0.1678,-17.8206>,<0,0,1>,13.0068
CONSTR/CIRCLE,BF,2D,CER12.HITS[1..CER12.NUMHITS],CER9.HITS[1..CER9.NUMHITS],,
OUTLIER_REMOVAL/OFF,3
FILTER/OFF,UPR=0


No problem with their circularity and diameter either. The issue comes with the repeatability of the circles that are the furthest away from the probings of my datum A, meaning circle -5 and -12.5
The -5 one has terrible repeatability in terms of true position with 0.03mm range of measurements. This is not the case with my circle at -18 which is constructed with the same logic and it is basicly the same tool that is creating it in the CNC machine and same probes and everything in CMM.


What am I missing? Where is the mistake? Could it be the level on a cylinder and how the 2d circle is projected? Does this justify the dispersion? I am not moving the part between the measurements and all other locations / positions / features are consistent.

DIM LOC_0_05_12_86_HAUT_A= POSITION OF CIRCLE Ø12_86_5 UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH FIT TO DATUMS=OFF DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
AX NOMINAL +TOL -TOL BONUS MEAS DEV OUTTOL
X V0 -0.0067 -0.0067
Y V0 -0.0001 -0.0001
DF 12.8600 0.0500 0.0500 12.8529 -0.0071 0.0000 #-
TP RFS 0.0500 0.0000 0.0133 0.0133 0.0000 #-
END OF DIMENSION LOC_0_05_12_86_HAUT_A
DIM LOC_0_05_12_86_MILIEU_A= POSITION OF CIRCLE Ø12_86_12_5 UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH FIT TO DATUMS=OFF DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
AX NOMINAL +TOL -TOL BONUS MEAS DEV OUTTOL
X V0 -0.1135 -0.1135
Y V0 0.2984 0.2984
DF 12.8600 0.0500 0.0500 13.0627 0.2027 0.1527 ->
TP RFS 0.0500 0.0000 0.6386 0.6386 0.5886 ->
END OF DIMENSION LOC_0_05_12_86_MILIEU_A
DIM LOC_0_05_12_86_BAS_A= POSITION OF CIRCLE Ø12_86_18 UNITS=MM ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH FIT TO DATUMS=OFF DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
AX NOMINAL +TOL -TOL BONUS MEAS DEV OUTTOL
X V0 -0.0951 -0.0951
Y V0 0.1677 0.1677
DF 12.8600 0.0500 0.0500 13.0068 0.1468 0.0968 ->
TP RFS 0.0500 0.0000 0.3856 0.3856 0.3356 ->
END OF DIMENSION LOC_0_05_12_86_BAS_A


Thanks in advance for your answers and time.
  • Since they are small arcs, I would recommend using the "small arc" method. there should be a PDF floating around on the forum which details how to measure small arcs with higher reproducibility.
  • Since they are small arcs, I would recommend using the "small arc" method. there should be a PDF floating around on the forum which details how to measure small arcs with higher reproducibility.


    I know this method but in this case I am interested for the true position of the circles and not the PR in order to get the diameter. Also I might be probing a small arc but the construced circles have in fact points on the mirror side also making almost a semi circle worth of data if not more.
  • a few other observations:
    1: CER10 is reporting actual values at nominal. there's something wrong with the results here. There is no possible way it's perfect.
    CER10 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
    THEO/<V0,V0,-5>,<V0,V0,1>,12.86,0
    ACTL/<0,0,-5>,<0,0,1>,12.86,0


    2: Your interrupted cylinder is exhibiting cylindricity of (12.8663-12.8223 = 0.064mm), so your 5 points of "not small arc method" hit data is ABSOLUTELY contributing to your positional variation.
    CER7 -5z =___12.8863___CER10 -5z =___12.860 NOMINAL --RED FLAG--
    CER8 -12.5z = 12.871____CER11 -12.5z = 12.8223
    CER9 -18z =__12.8753___CER12 -18.5z = 12.8411

    3. You are judging your 13mm long cylinder upon a datum that's constructed with a 4mm long axis length. this is a GD&T gaff. Any time you have a longer axis, you should be using that longer axis as the datum.

    I strongly advise you figure out what's going on with CER10 and i would also again suggest you implement the small arc method for each of your respective CER7-12 features if you want to improve on your measured precision.
  • also, all your start and end angles for CER7-12 look inconsistent.
  • Kind of hard to read from the code, but my general rule of thumb is to not use a cylinder as a primary datum if the diameter is larger than than length of the cylinder. Wacky things happen to axis because of the fitting.
  • Good advices. This is somewhat good rules to follow for cylinders. The code is not mine just a collogue' s that I am trying to modify to improve. I c/p an earlier version that has these cir7-12 that are terrible constructs. I did replace them all with vector points (polar coordinates) and reconstructed the circles with perfect coordinates but I am still getting (better although) "bad" results.

    Having said that, using a cylinder of 4 mm length 7,75 diameter as a datum maybe is causing this issue as suggested. The thing is that this is the only way to do this following the drawing due to the 3 constructed circles being 3x features. you are calling this a gd&t gaff could you please be more specific so we learn from our mistakes Slight smile ? Also the small arc method gives results for the DIA, I am more interested for the position here!
  • Small arc method is a means of establishing the centroid and diameter with the highest level of repeatability. Once you align locally with the fixed radius circle, then remeasure, your measured circle will be much more reproducible. Why debate with us on how effective it is or it is not? I've been using the demon for over 20 years. Just try it and see for yourself.

    As for GD&T datum gaff: Technically you can make anything that is a feature of size into a datum on a drawing. It doesn't mean it will be a good datum however.
    Functionally speaking, let's just consider your 4mm axis the diameter for a press-fit bearing... Although the center axis of that diameter is the functional center, the real vector control of that axis for that press-fit bearing is the shoulder in which the bearing stops against.
    --If you press-fit that bearing, and you don't get it all the way to the shoulder, it's going to skew that axis and the bearing will self-destruct in no time.
    --The shoulder of that bearing surface is the controlling datum vector of a bearing such as this, not the cylinder's walls.
    Any instance in which you have an interface with a larger surface (7.75mm plane vs 4mm cylinder axis) from which to derive a vector... that larger surface will become the dominant vector-controlling datum surface.
  • When i say use the small arc method. I mean to say construct a circle using hits on your cylinder walls, and setting the diameter as fixed radius.
    Align/Origin to that constructed circle.
    Remeasure the circle with an abundance of hits. Do not set this second circle as fixed radius, use least squares calculation.
    This will effectively eliminate as much cosine error as mathematically possible, increasing your reproducibility of not only the diameter, but also the centroid of the said arc segment.

    To make it even more reproducible if the component allows, measure both opposing arc segments in one feature. Considering the features are an OD, i presume that is not possible?
  • I am not debating and I did not meant to offend you if I did. Apologies for that. I am just aware of the small arc method as a way to better estimate the diameter (or polar radius per say) of an arc that is less than 90 degs. In this case I am constructing circles from mirror side arcs of less than 90 degs although together give more than that, close to 180 degs worth of data points. I just don't see this method helping me here. Ofcourse you are more than welcome to correct me!

    PS: There is always something new to learn no matter the years of experience, I am sure you know this very well Slight smile
  • Good advices. This is somewhat good rules to follow for cylinders. The code is not mine just a collogue' s that I am trying to modify to improve. I c/p an earlier version that has these cir7-12 that are terrible constructs. I did replace them all with vector points (polar coordinates) and reconstructed the circles with perfect coordinates but I am still getting (better although) "bad" results.

    Having said that, using a cylinder of 4 mm length 7,75 diameter as a datum maybe is causing this issue as suggested. The thing is that this is the only way to do this following the drawing due to the 3 constructed circles being 3x features. you are calling this a gd&t gaff could you please be more specific so we learn from our mistakes Slight smile ? Also the small arc method gives results for the DIA, I am more interested for the position here!


    Hmm I will give this a try although I am not sure why one circle is repeatable and the rest not. Everything is the same, only thing changing is the distance from my cylinder / Primary datum. Well, I guess I will have to investigate further and rpeat everything you guys suggested because to be honest, I dislike the way my colleague has fabricated this program altogether.