hexagon logo

Skipping Recalled Alignments Using Select/End Select and Case End_Case

So I need to measure a couple of ring shaped parts that vary in ID and OD. I made a fixture that will hold all the parts without having to move standoffs in and out. So the hard work would be the programming. I can't get the alignments working. I have a separate program that runs through the alignments of the parts and saved the .aln. When I recall the .aln using case/end_case, my dcc alignment uses the last recalled alignment so my choices are not working. I've seen some threads where its been recommend to save alignments to generic but I haven't been able to figure it out or have a alignment recall a generic feature. Any suggestions will be appreciated.







Here's my test program with just 2 parts.

LOADPROBE/6X30
TIP/TIP1, SHANKIJK=0, 0, 1, ANGLE=0

C1 =COMMENT/INPUT,NO,FULL SCREEN=NO,

select 1 or 2

SELECT/C1.INPUT

CASE/1
COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
you picked small
RECALL/ALIGNMENT,EXTERNAL,TEST_FEC0353_MA
ASSIGN/IN_DIA=2.755
ASSIGN/OUT_DIA=3.747
GOTO/L1
END_CASE/

CASE/2
COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
you picked big
RECALL/ALIGNMENT,EXTERNAL,TEST_FEC0357_MA
ASSIGN/PLANE_SPACER=2.5
ASSIGN/IN_DIA=4.505
ASSIGN/OUT_DIA=5.497
GOTO/L1
END_CASE/

DEFAULT_CASE/
COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
wrong choice
GOTO/C1
END_DEFAULTCASE/

END_SELECT/

L1 =LABEL/

PLN1 =FEAT/CONTACT/PLANE/DEFAULT,CARTESIAN,NONE,LEAST_SQR
THEO/<0,0,0>,<0,0,1>
ACTL/<0,0,0>,<0,0,1>
TARG/<0,0,0>,<0,0,1>
ANGLE VEC=<1,0,0>,RADIAL
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=10,NUMRINGS=1
SPACER=PLANE_SPACER
AVOIDANCE MOVE=NO,DISTANCE=0.3937
SHOW HITS=NO

CYL1 =FEAT/CONTACT/CYLINDER/DEFAULT,CARTESIAN,IN,LEAST_SQR
THEO/<0,0,-0.1876>,<0,0,1>,IN_DIA,-0.1576
ACTL/<0,0,-0.1876>,<0,0,1>,2.755,-0.1576
TARG/<0,0,-0.1876>,<0,0,1>
START ANG=0,END ANG=360
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=10,NUMLEVELS=2,DEPTH=0,END OFFSET=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=BOTH,DISTANCE=0.2
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=NO

A1 =ALIGNMENT/START,RECALL:USE_ACTIVE_ALIGNMENT(RECALL:TEST_FEC0 357_MA),LIST=YES
ALIGNMENT/LEVEL,ZPLUS,PLN1
ALIGNMENT/TRANS,XAXIS,CYL1
ALIGNMENT/TRANS,YAXIS,CYL1
ALIGNMENT/TRANS,ZAXIS,PLN1
ALIGNMENT/END

CIR1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
THEO/<0,0,0>,<0,0,1>,OUT_DIA,0
ACTL/<0,0,0>,<0,0,1>,3.747,0
TARG/<0,0,0>,<0,0,1>
START ANG=0,END ANG=360
ANGLE VEC=<1,0,0>
DIRECTION=CCW
SHOW FEATURE PARAMETERS=NO
SHOW CONTACT PARAMETERS=YES
NUMHITS=20,DEPTH=0,PITCH=0
SAMPLE METHOD=SAMPLE_HITS
SAMPLE HITS=0,SPACER=0
AVOIDANCE MOVE=BOTH,DISTANCE=0.5906
FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
SHOW HITS=NO

DIM LOC1= LOCATION OF CYLINDER CYL1 UNITS=IN ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
D IN_DIA 0.0020 0.0020 2.7550 0.0000 0.0000 ---#----
END OF DIMENSION LOC1

DIM LOC2= LOCATION OF CIRCLE CIR1 UNITS=IN ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
D OUT_DIA 0.0020 0.0020 3.7470 0.0000 0.0000 ---#----
END OF DIMENSION LOC2​
Parents
  • I was thinking about this problem again. Have you considered doing away with the operator input all together and just let the CMM figure out which part is loaded? I can think of two ways to do it depending on the size. Either you can use vector points and an onerror command and use that for the logic in determining which part is loaded. Otherwise you could pick up the ID with a higher than normal probe speed (just to get a rough size) and use that size to determine which part has been loaded. It would be a lot more reliable than expecting an person to type in the right part every time.
Reply
  • I was thinking about this problem again. Have you considered doing away with the operator input all together and just let the CMM figure out which part is loaded? I can think of two ways to do it depending on the size. Either you can use vector points and an onerror command and use that for the logic in determining which part is loaded. Otherwise you could pick up the ID with a higher than normal probe speed (just to get a rough size) and use that size to determine which part has been loaded. It would be a lot more reliable than expecting an person to type in the right part every time.
Children