Looping_Multiple Parts on a Fixture Plate

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Looping_Multiple Parts on a Fixture Plate

    This is the most clean way I know (thus far) to measure multiple parts on a fixture plate. I like this method a lot because I don't have to go through my program and lock my theo values down with "*1" or "+0"

    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:
    Code:
    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).
    Code:
    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>
    picgrp.PNG
    Last edited by DAN_M; 11-12-2020, 10:24 AM.
    Beep beep beep..

Related Topics

Collapse

Working...
X