This method requires two programs. One that creates the external alignments only...and your main program which recalls the external alignments and connects that to a variable. Many thanks to all on the forum (especially NinjaBadger and Matthew D. Hoedeman ).
Alignment Prg:
STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES ALIGNMENT/END LOADPROBE/7107_Y_3X40 TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0 MODE/DCC RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN PALLET_POS_1=GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<2*1,2*1,0*1>,$ MEAS/XYZ,<2*1,2*1,0*1>,$ NOM/IJK,<0*1,0*1,1*1>,$ MEAS/IJK,<0*1,0*1,1*1> ALI_RING_GAGE_0PNT750_1=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES ALIGNMENT/TRANS,XAXIS,PALLET_POS_1 ALIGNMENT/TRANS,YAXIS,PALLET_POS_1 ALIGNMENT/END SAVE/ALIGNMENT,ALI_RING_GAGE_0PNT750_1.aln,MACHINETOPARTS RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN PALLET_POS_2=GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<6*1,2*1,0*1>,$ MEAS/XYZ,<6*1,2*1,0*1>,$ NOM/IJK,<0*1,0*1,1*1>,$ MEAS/IJK,<0*1,0*1,1*1> ALI_RING_GAGE_0PNT750_2=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES ALIGNMENT/TRANS,XAXIS,PALLET_POS_2 ALIGNMENT/TRANS,YAXIS,PALLET_POS_2 ALIGNMENT/END SAVE/ALIGNMENT,ALI_RING_GAGE_0PNT750_2.aln,MACHINETOPARTS RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN PALLET_POS_3=GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<10*1,2*1,0*1>,$ MEAS/XYZ,<10*1,2*1,0*1>,$ NOM/IJK,<0*1,0*1,1*1>,$ MEAS/IJK,<0*1,0*1,1*1> ALI_RING_GAGE_0PNT750_3=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES ALIGNMENT/TRANS,XAXIS,PALLET_POS_3 ALIGNMENT/TRANS,YAXIS,PALLET_POS_3 ALIGNMENT/END SAVE/ALIGNMENT,ALI_RING_GAGE_0PNT750_3.aln,MACHINETOPARTS RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN PALLET_POS_4=GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<2*1,6*1,0*1>,$ MEAS/XYZ,<2*1,6*1,0*1>,$ NOM/IJK,<0*1,0*1,1*1>,$ MEAS/IJK,<0*1,0*1,1*1> ALI_RING_GAGE_0PNT750_4=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES ALIGNMENT/TRANS,XAXIS,PALLET_POS_4 ALIGNMENT/TRANS,YAXIS,PALLET_POS_4 ALIGNMENT/END SAVE/ALIGNMENT,ALI_RING_GAGE_0PNT750_4.aln,MACHINETOPARTS RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN PALLET_POS_5=GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<6*1,6*1,0*1>,$ MEAS/XYZ,<6*1,6*1,0*1>,$ NOM/IJK,<0*1,0*1,0*1>,$ MEAS/IJK,<0*1,0*1,1*1> ALI_RING_GAGE_0PNT750_5=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES ALIGNMENT/TRANS,XAXIS,PALLET_POS_5 ALIGNMENT/TRANS,YAXIS,PALLET_POS_5 ALIGNMENT/END SAVE/ALIGNMENT,ALI_RING_GAGE_0PNT750_5.aln,MACHINETOPARTS RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN PALLET_POS_6=GENERIC/POINT,DEPENDENT,CARTESIAN,$ NOM/XYZ,<10*1,6*1,0*1>,$ MEAS/XYZ,<10*1,6*1,0*1>,$ NOM/IJK,<0*1,0*1,1*1>,$ MEAS/IJK,<0*1,0*1,1*1> ALI_RING_GAGE_0PNT750_6=ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES ALIGNMENT/TRANS,XAXIS,PALLET_POS_6 ALIGNMENT/TRANS,YAXIS,PALLET_POS_6 ALIGNMENT/END SAVE/ALIGNMENT,ALI_RING_GAGE_0PNT750_6.aln,MACHINETOPARTS
Main Prg (simple ID-ring gage measured in 6 different positions).
STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES ALIGNMENT/END FLY/ON MOVESPEED/ 300*0.9 LOADPROBE/7107_Y_3X40 TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0 GROUP_COUNTPROMPT_AND_SERIALNUMBER=GROUP/SHOWALLPARAMS=YES COUNT_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO, How many parts are you inspecting? ASSIGN/TOTAL_PARTS=COUNT_PROMPT.INPUT ASSIGN/SER=0 WHILE/SER<TOTAL_PARTS ASSIGN/SER=SER+1 SER_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO, Please enter the Serial Number of the "part at FIXTURE POSITION# "+SER+"." RUN_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO, Please enter the Run Number of the "part at FIXTURE POSITION# "+SER+"." ASSIGN/SER_NUM[SER]=SER_PROMPT.INPUT ASSIGN/RUN_NUM[SER]=RUN_PROMPT.INPUT END_WHILE/ ENDGROUP/ID=GROUP_COUNTPROMPT_AND_SERIALNUMBER MODE/DCC RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN ASSIGN/CURR_POS=0 DO/ ASSIGN/CURR_POS=CURR_POS+1 COMMENT/REPT, "Serial Number: "+SER_NUM[CURR_POS] COMMENT/REPT, "Run Number: "+RUN_NUM[CURR_POS] ASSIGN/PROG_NAME=GETPROGRAMINFO ("PARTNAME") ASSIGN/REPORT_NAME="XX:\\INSERT_VALID_FILE-PATH_HERE\\"+PROG_NAME+"__"+SER_NUM[CURR_POS]+"__"+RUN_NUM[CURR_POS]+".PDF" SELECT/CURR_POS CASE/1 RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN RECALL/ALIGNMENT,EXTERNAL,ALI_RING_GAGE_0PNT750_1 SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS END_CASE/ CASE/2 RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN RECALL/ALIGNMENT,EXTERNAL,ALI_RING_GAGE_0PNT750_2 SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS END_CASE/ CASE/3 RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN RECALL/ALIGNMENT,EXTERNAL,ALI_RING_GAGE_0PNT750_3 SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS END_CASE/ CASE/4 RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN RECALL/ALIGNMENT,EXTERNAL,ALI_RING_GAGE_0PNT750_4 SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS END_CASE/ CASE/5 RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN RECALL/ALIGNMENT,EXTERNAL,ALI_RING_GAGE_0PNT750_5 SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS END_CASE/ CASE/6 RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN RECALL/ALIGNMENT,EXTERNAL,ALI_RING_GAGE_0PNT750_6 SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS END_CASE/ END_SELECT/ RECALL/ALIGNMENT,EXTERNAL,CUR IF/CURR_POS=="1" RP_CHECK_Z =FEAT/POINT,CARTESIAN THEO/<0*1,0*1,15*1>,<0,0,1> ACTL/<0,0,15>,<0,0,1> READPOINT/ MOVE/INCREMENT,<0,0,15-RP_CHECK_Z.Z> MOVE/POINT,NORMAL,<0,0,15> END_IF/ CLEARP/ZPLUS,4,ZPLUS,4,ON LIN_THEO_XP =FEAT/LINE,CARTESIAN,UNBOUNDED,YES THEO/<-0.5,0,0>,<1,0,0> ACTL/<-0.5,0,0>,<1,0,0> CONSTR/LINE,ALIGN,1,XPLUS FLY/ON MOVESPEED/ 300*0.9 TOUCHSPEED/ 10 PREHIT/0.4 RETRACT/0.4 CHECK/0.5,1 MOVE/CLEARPLANE CIRXY1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR THEO/<0,0,0.85>,<0,0,1>,0.75 ACTL/<0,0,0.85>,<0,0,1>,0.75 TARG/<0,0,0.85>,<0,0,1> START ANG=0,END ANG=360 ANGLE VEC=<1,0,0> DIRECTION=CCW SHOW FEATURE PARAMETERS=NO SHOW CONTACT PARAMETERS=NO FLY/ON MOVESPEED/ 300*0.9 TOUCHSPEED/ 5 PREHIT/0.125 RETRACT/0.125 CHECK/0.125,1 CIRXY2 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR THEO/<0,0,0.85>,<0,0,1>,0.75 ACTL/<0,0,0.85>,<0,0,1>,0.75 TARG/<CIRXY1.X,CIRXY1.Y,0.85>,<0,0,1> START ANG=-120,END ANG=240 ANGLE VEC=<1,0,0> DIRECTION=CCW SHOW FEATURE PARAMETERS=NO SHOW CONTACT PARAMETERS=NO MOVE/INCREMENT,<0,0,0.5> PLNZ1 =FEAT/CONTACT/PLANE/DEFAULT,CARTESIAN,NONE,LEAST_SQR THEO/<0,0,0.93>,<0,0,1> ACTL/<0,0,0.93>,<0,0,1> TARG/<CIRXY2.X,CIRXY2.Y,0.93>,<0,0,1> ANGLE VEC=<-0.978555,0.2059858,0>,RADIAL SHOW FEATURE PARAMETERS=NO SHOW CONTACT PARAMETERS=NO CLEARP/ZPLUS,PLNZ1.Z+0.5,ZPLUS,PLNZ1.Z+0.5,ON A1 =ALIGNMENT/START,RECALL:CUR,LIST=YES ALIGNMENT/LEVEL,ZPLUS,PLNZ1 ALIGNMENT/ROTATE,XPLUS,TO,LIN_THEO_XP,ABOUT,ZPLUS ALIGNMENT/TRANS,XAXIS,CIRXY2 ALIGNMENT/TRANS,YAXIS,CIRXY2 ALIGNMENT/TRANS,ZAXIS,PLNZ1 ALIGNMENT/END FLY/ON MOVESPEED/ 300*0.9 TOUCHSPEED/ 5 PREHIT/0.075 RETRACT/0.075 CHECK/0.075,1 MOVE/CLEARPLANE CIR_ID =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR THEO/<0,0,-0.1>,<0,0,1>,0.75 ACTL/<-0.0084,0.0436,-0.0964>,<-0.0001617,-0.0033755,0.9999943>,0.75 TARG/<0,0,-0.1>,<0,0,1> START ANG=0,END ANG=360 ANGLE VEC=<1,0,0> DIRECTION=CCW SHOW FEATURE PARAMETERS=NO SHOW CONTACT PARAMETERS=NO FORMAT/TEXT,OPTIONS,ID,HEADINGS,SYMBOLS, ;MEAS,NOM,TOL,DEV,OUTTOL, , DISPLAYPRECISION/5 DIM MIS_1= LOCATION OF CIRCLE CIR_ID UNITS=IN ,$ GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO AX MEAS NOMINAL +TOL -TOL DEV OUTTOL D 0.75000 0.75000 0.00050 0.00050 0.00000 0.00000 ----#---- END OF DIMENSION MIS_1 DISPLAYPRECISION/4 UNTIL/CURR_POS==TOTAL_PARTS RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN MOVE/INCREMENT,<0,0,6> MOVE/POINT,NORMAL,<1,35,15>