hexagon logo

Difficult Datum

I am having trouble figuring out how to establish Datum B (see attached). It creates that midline the red arrow points to, but it seems to be a line and a point. Does anyone have any advice on how to create that midline from a straight and curved feature?


UPDATE: SOLVED. See neil.challinor 's reply/following comments for how I created a tangent line from a circle point.

Attached Files
Parents
  • You have two datum target points for datum D (11.88 up from datum B). Datum D also needs to be a width feature - in this case a 1D width. You need to create an alignment levelled to A, rotated and translated to B. You then need to measure the R15 on each side of the part - I would use linear open scans and then construct curves from the scans. You can then intersect the curves with a generic plane (11.88 from B) to get your D1 & D2 points. Once you have D1 & D2, construct a 1D width feature and define it as datum D.
Reply
  • You have two datum target points for datum D (11.88 up from datum B). Datum D also needs to be a width feature - in this case a 1D width. You need to create an alignment levelled to A, rotated and translated to B. You then need to measure the R15 on each side of the part - I would use linear open scans and then construct curves from the scans. You can then intersect the curves with a generic plane (11.88 from B) to get your D1 & D2 points. Once you have D1 & D2, construct a 1D width feature and define it as datum D.
Children
  • D I can do. B is the problem, getting a midline from a line and a radius. I need a tangent line to the curved end of width B I think.
  • B is a width as well - 2D width this time (although to get to your D1 & D2 points you would only need the a line / plane on the bottom surface).

    Level to A, rotate to the bottom B edge, linear open scan the upper B edge and then either use the MAXINDEX function or a constructed EXTREME point to find the high point. Once you have the high point, create a line, parallel to your lower datum B edge passing through the high point. Once you have both lines, construct a 2D width feature and define it as datum B. Here's some example code I created offline using using the Hexagon training block....

    ACTL/<75.758,32.278,0>,<0,0,1>
    TARG/<75.758,32.278,0>,<0,0,1>
    ANGLE VEC=<1,0,0>,SQUARE
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,NUMROWS=3
    SPACER=0
    AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=10,DISTANCE AFTER=0
    SHOW HITS=NO
    A1 =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN1
    ALIGNMENT/TRANS,ZAXIS,PLN1
    ALIGNMENT/END
    LIN1 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,BOUNDED
    THEO/<83.668,0,-21.463>,<116.651,0,-21.463>,<1,0,0>,<0,-1,0>,<0,0,1>,32.983
    ACTL/<83.668,0,-21.463>,<116.651,0,-21.463>,<1,0,0>,<0,-1,0>,<0,0,1>,32.983
    TARG/<83.668,0,-21.463>,<116.651,0,-21.463>,<1,0,0>,<0,-1,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=3
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=10,DISTANCE AFTER=0
    SHOW HITS=NO
    A2 =ALIGNMENT/START,RECALL:A1,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN1
    ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZPLUS
    ALIGNMENT/TRANS,YAXIS,LIN1
    ALIGNMENT/TRANS,ZAXIS,PLN1
    ALIGNMENT/END
    SCN2 =FEAT/SCAN,LINEAROPEN,NUMBER OF HITS=149,SHOW HITS=NO,SHOWALLPARAMS=NO
    MEAS/SCAN
    BASICSCAN/LINE,NUMBER OF HITS=149,SHOW HITS=NO,SHOWALLPARAMS=NO
    ENDSCAN
    ENDMEAS/
    PNT2 =FEAT/POINT,CARTESIAN,NO
    THEO/<94.53,64.684,-32.002>,<0.0008722,0.991918,0.1268778>
    ACTL/<94.53,64.684,-32.002>,<0.0008722,0.991918,0.1268778>
    CONSTR/POINT,EXTREME,SCN2,MAXIMUM,YPLUS,CURRENT_ALIGNMENT
    A3 =ALIGNMENT/START,RECALL:A2,LIST=YES
    ALIGNMENT/TRANS,YAXIS,PNT2
    ALIGNMENT/TRANS,XAXIS,PNT2
    ALIGNMENT/TRANS,ZAXIS,PNT2
    ALIGNMENT/END
    F2 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<-20,0,0>,$
    MEAS/XYZ,<-20,0,0>,$
    NOM/IJK,<0,1,0>,$
    MEAS/IJK,<0,1,0>
    F3 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<20,0,0>,$
    MEAS/XYZ,<20,0,0>,$
    NOM/IJK,<0,1,0>,$
    MEAS/IJK,<0,1,0>
    LIN2 =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
    THEO/<-20,0,0>,<1,0,0>
    ACTL/<-20,0,0>,<1,0,0>
    CONSTR/LINE,BF,2D,F2,F3,,
    OUTLIER_REMOVAL/OFF,3
    FILTER/OFF,WAVELENGTH=0
    WIDTH1 =FEAT/WIDTH,CARTESIAN,OUT,LEAST_SQR,NO
    THEO/<3.378,-32.342,4.523>,<0,1,0>,64.684
    MEAS/<3.378,-32.342,4.523>,<0,1,0>,64.684
    CONSTR/WIDTH,BF,LIN1,LIN2
  • UPDATE: This worked perfectly, I am using 2020 R1 still so I couldn't use extreme point but I was able to create a generic point using MAXINDEX at the maximum Y value of my circle scan. X, Y, Z translated to that, then a line created from that alignment point to get the tangent.

    https://www.pcdmisforum.com/forum/pc-dmis-enterprise-metrology-software/pc-dmis-for-cmms/410328-max-point-min-point-of-a-scan

    ^^^See this thread for how to assign Max value with generic points/variables
  • - that's awesome, thanks for letting us know it worked! This is good to know.