hexagon logo

measuring a countersink

Good evening Pcdmis masters, I`m fairly new to Pcdmis, and i would love to get some help , I am trying to measure a Countersink Dia at the intersection of the top surface on this part, the available area is very limited and the thread leads are not clocked to the model to get an auto cone reading accurately, is there any method i can use to first identify the rotation of the the double lead thread and then construct a cone avoiding the thread lead`s in order to get an accurate reading? any tips will be appreciated ,thanks in advance
  • Ø3mm could be a little too small, depends on the size of the threaded hole...
    Have a nice day, and make the most of the training Slight smile
  • To summarize and correct :

    ASSIGN/V1=PROBEDATA("diam","tip4")/2+PROBEDATA("prbrdv","tip4")
    ASSIGN/V2=PROBEDATA("diam","tip5")/2+PROBEDATA("prbrdv","tip5")
    ASSIGN/V3=RAD2DEG(ASIN((PT2.Z-PT1.Z)/(V2-V1))) is the angle of the chamfer in degrees
    ASSIGN/V3R=ASIN((PT2.Z-PT1.Z)/(V2-V1)) is the angle of the chamfer in radians

    Then the radius of the contact point are :

    ASSIGN/R1=V1*SIN(V3R)
    ASSIGN/R2=V2*SIN(V3R)

    The height of contact point are :

    ASSIGN/H1=PT1.Z-V1*COS(V3R)
    ASSIGN/H1=PT2.Z-V2*COS(V3R)

    The a 2D line (H=a R + b) should give :

    ASSIGN/A=​(H2-H1)/(R2-R1)
    So
    ASSIGN/B=H2-A*R2


    The upper diameter of the countersick is done when H=0, so when R=-B/A


    ASSIGN/DIAM=2*(-B/A)


    ASSIGN/DIST1=DOT(PT1.XYZ-PL1.XYZ,PL1.IJK)....................distance between the centerball of PT1 and the top plane
    ASSIGN/ANGLE_AXIS=ACOS(DOT(UNIT(PT2.XYZ-PT1.XYZ),PL1.IJK))......................angle between cone axis and top plane vector
    ASSIGN/CENTER=PT1.XYZ+(DIST1/COS(ANGLE_AXIS))*UNIT(PT2.XYZ-PT1.XYZ)......................if CENTER.Z is not zero, there's a problem !!!!!
    ASSIGN/VECT=UNIT(PT2.XYZ-PT1.XYZ)
    CS_X34.5 =GENERIC/CIRCLE,DEPENDENT,CARTESIAN,OUT,$
    NOM/XYZ,<CENTER.X,CENTER.Y,CENTER.Z>,$
    MEAS/XYZ,<CENTER.X,CENTER.Y,CENTER.Z>,$
    NOM/IJK,<0,0,1>,$
    MEAS/IJK,<VECT.I,VECT.J,VECT.K>,$
    RADIUS/(-B/A),(-B/A)
    
    ASSIGN/DIST2=B-DIST1
    ASSIGN/VERTEX=PT1.XYZ+(DIST2/COS(ANGLE_AXIS))*UNIT(PT2.XYZ-PT1.XYZ)......with DIST2 should be negative...
  • i have a program that i wrote following your steps, i`m just waiting for a 4mm stylii to arrive on the mail in the next couple of days ,super excited about this ,i will let you know how it goes once i run it online, one more question, is it normal that the probedata assignment returns a value of 0? will it make a difference if i do the assignment between tip swaps ?thanks in advance, after reading this thread multiple times i`m starting to understand more and more, thank you
  • another thing i just noticed is that starting on this line ASSIGN/V3=RAD2DEG(ASIN((PT2.Z-PT1.Z)/(V2-V1))) the results are returning a nan ind value, but if i switch to atan instead of asin it returns a value of 90 but my chamfer angle i think is 65° nominal i think i should`ve mention that in the beginning
  • I think you have to add the angle tip (like "T1A0B0") in the probedata assignment.
    As V1 and V2 are 0, nan is logicical, because you can't divide by 0. !
  • PROBEDATA(<OPTPROBEDATATYPE>, <OPTTIPID>, <OPTPROBEFILENAME>Wink

    OPTTIPID - This optional parameter specifies the tip to be used when obtaining the
    probe data specified in the first expression. If not supplied, the current tip is used. This
    parameter should be type string.

    OPTPROBEFILENAME - This optional parameter specifies the probe filename to be
    used in obtaining the probe data. If this is not supplied, the current probe file is used.

    ASSIGN/V1=PROBEDATA("diam","T1A0B0","T1_3X20")

    Here, you can print "27_Using_Expressions_and_Variables.pdf" and learn a lot of assignments Wink :
    https://files.ms.hexagonmi.com/public/docs/v2022.2manual/en_pcdmis_2022.2_core_manual.zip​
  • i think i`m a step closer ,with this instructions i was actually able to extract the right probe data, my center after the last changes in now .191 awful ,but i`m still positive this can be done with the right ball sizes, i`m getting a nominal result on that top circle of 3.6 when is supposed to be 3.3 , but i think if i`m able to construct a generic cone and then intersected to the top surface with circle it will be more accurate.thanks again for all of your help
  • I think I'm in the right direction, i should get my 4 mm Stylus tomorrow morning, I still not sure I'm doing this correct hopefully it works, so I don't have to use reprorubber , i did the vertex's assignment, how can I create a generic cone? I would like to compare intersecting the cone to the top surface vs the circle assignment .
  • I think I'm in the right direction, i should get my 4 mm Stylus tomorrow morning, I still not sure I'm doing this correct hopefully it works, so I don't have to use reprorubber , i did the vertex's assignment, how can I create a generic cone? I would like to compare intersecting the cone to the top surface vs the circle assignment .


    To create the generic cone, you need to assign the vertex, the angle and the length and the axis
    ASSIGN/AXIS=UNIT(PT2.XYZ-PT1.XYZ) (maybe *-1, I'm not sure...)

    CONE =GENERIC/CONE,DEPENDENT,CARTESIAN,IN,$
    NOM/XYZ,<VERTEX.X,VERTEX.Y,VERTEX.Z>,$
    MEAS/XYZ,<VERTEX.X,VERTEX.Y,VERTEX.Z>,$
    NOM/IJK,<AXIS.I,AXIS.J,AXIS.K>,$
    MEAS/IJK,<AXIS.I,AXIS.J,AXIS.K>,$
    ANGLE/V3,V3.....................V3 in degrees, not V3R in radians !!!!!
    LENGTH/5,5.......................not sure of it, but I believe the length isn't important (Vertex and angle define enough to create the circle)​
  • Here we go again, I should get my probes today I will let you know how it goes, this is so beautiful , thank you