hexagon logo

Constructing a circle from a cone and dimensionning the circularity

I need to dimension the circularity of a circle constructed from a cone, at a given height.
I think that measuring the circle cannot give an accurate result, because of the drift.
So I measured 2 circles around the given height,with the same number of hits and the same direction, and extract the center ball hits in a loop :

ASSIGN/TIP_RAD=PROBEDATA("Diam")/2+PROBEDATA("prbrdv")
PL1 =GENERIC/PLANE,DEPENDENT,CARTESIAN,
$ NOM/XYZ,<0,0,15>,
$ MEAS/XYZ,<0,0,15>,
$NOM/IJK,<0,0,1>,
$ MEAS/IJK,<0,0,15>
ASSIGN/V1=PL1.IJK 
ASSIGN/V2=PL1.XYZ
V10=LOOP/START,ID=YES,NUMBER=CIRC1.NUMHITS,START=1,SKIP=,
ASSIGN/V12=CIRC1.RAWHIT[V10].XYZ
ASSIGN/V13=CIRC2.RAWHIT[V10].XYZ
ASSIGN/V14=CROSS((V12-V13),CROSS((V12-V13),ALIGN_1.ZAXIS))
ASSIGN/V15=V12+V14*TIP_RAD
ASSIGN/V16=V13+V14*TIP_RAD
ASSIGN/V17=UNIT(V15-V16)
ASSIGN/V5=V15-V2
ASSIGN/V6=DOT(V5,V1)
ASSIGN/V7=CROSS(V1,CROSS(V17,V1))
ASSIGN/V8=SIN(DEG2RAD(90-ANGLEBETWEEN(V1,V17)))
ASSIGN/V9=V2+V5-V6*V1-DOT((V6/V8)*V17,V7)*V7
PT1 =GENERIC/POINT,DEPENDENT,CARTESIAN,
$ NOM/XYZ,<V9.X,V9.Y,V9.Z>,
$ MEAS/XYZ,<V9.X,V9.Y,V9.Z>,
$NOM/IJK,<V17.I,V17.J,V17.K>,
$ MEAS/IJK,<V17.I,V17.J,V17.K>
LOOP/END

Then I construct a circle from PT1[1..CIRC1.NUMHITS] and I get a diamter, a center and a circularity. I noticed that the diameter is close to the diameter constructed from a cone (classical method), but the center moves of some µm (same order than the circularity...)

Note :
V12 and V13 are the center ball of each circle hit
V14 is a vector perp to the line between both center ball (V12-V13) and the Z axis so it gives the ball compensation
V15 and V16 are compensated points

I used a little this code :
http://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-for-cmms/411816-pierce-point-using-variables
  • So you are measuring circles above and below your basic (15) Z location, then using this math to extract points with vectors normal to the axis of the cone, to compensate for cosine error with the above assignments and generics? That's flippin' brilliant!

    But why not just measure directly at the 15mm location and output roundness of the resultant data with a plane-cone intersect?
    I would have just made an auto-cone, set spacing so it measure hits right at the set height(15?), then use your generic plane to create a cone->plane intersect circle at the same set height(15?), then output roundness of that circle...

    You might get the same outcome and it will validate your manual process. Personally, I'd be paranoid about getting the math wrong when trying to manually do it.

    If the auto-cone's form measurement is being output, instead of just that cone->plane intersect circle, you can extract the raw cone hits to create the circle. Your vectors will be dead-on accurate, guaranteed, if you did it this way.
  • I went by this way because the intersection circle doesn't give any roundness (perfect circle).
    If I used auto cone hits, I would have to take into account the orientation change between levels, what I could do with an array, but which not allows to change the number of hits easily.
    By this way, I take into account the local angle defects instead of cone angle...

    But I must admit that I use a hammer to crush a fly Slight smile !
  • My first reaction would have been:

    - measure the cone as a cone
    - align primary, origin to the cone (does "height" come from the cone or something else?)
    - measure vector points at the correct height, normal to the cone surface
    - construct circle BF from the vector points

    Am I understanding the problem correctly?
  • My first reaction would have been:

    - measure the cone as a cone
    - align primary, origin to the cone (does "height" come from the cone or something else?)
    - measure vector points at the correct height, normal to the cone surface
    - construct circle BF from the vector points

    Am I understanding the problem correctly?


    Yes, the only problem of this method is what I called the cmm drift (not sure of the word) accuracy of positionning of the hits. On a cone, a little defect along cone axis give a defect on the radius, so on the roundness. (you can check it by constructing a plane with vector points, and look at its flatness...)
    That's what I want avoiding Slight smile !
  • How would you know the 'drift' isn't systematic (same direction for upper and lower point) - do you look at the 'flatness' (deviations in Z) of the calculated midpoints?
    Edit: Or is that what you're already saying?
  • I follow what you mean by CMM drift. Your target Z value is 15mm, but it will increase and decrease when the diameter of the cone is larger or smaller (as probe is traversing normal to the cone's surface angle).

    What's more important for the design intent, roundness at specified height or size at specified height? or are they equally a priority?
    Taking hits above and below the 15mm, then producing all the vector and theo hits are simulating the form, but giving a very accurate diameter at the specified height.
    BUT true form at the height in my opinion can't be simulated, you need hits directly (or as close as you can) to the 15mm.

    Maybe you could use your manual method to obtain the most accurate diameter, but then use hit data from autocone (with a cut of cone hits as close to 15mm as possible) to measure form/roundness?
  • How would you know the 'drift' isn't systematic (same direction for upper and lower point) - do you look at the 'flatness' (deviations in Z) of the calculated midpoints?
    Edit: Or is that what you're already saying?


    The flatness of the plane constructed from calculated points is zero, because the calculation gives the pierce point between lines and perfect plane...
    I don't think that "drift" is reproductible (repeatability of position of a point if snap is off).


  • What's more important for the design intent, roundness at specified height or size at specified height? or are they equally a priority?


    Both... Disappointed
    I measured circle with 36 hits, so the form should be close to real one... (really ? I hope !)
  • The flatness of the plane constructed from calculated points is zero, because the calculation gives the pierce point between lines and perfect plane...
    I don't think that "drift" is reproductible (repeatability of position of a point if snap is off).


    I would test the flatness of a plane from the actual points. I've seen systematic drift a couple of times, on circular scans with 'unsuitable' controller parameters. The Z values went up and down in a beautiful sine curve, when they were all supposed to be in the same plane... The same behaviour on a cone would generate 'large' measuring errors.