hexagon logo

Pallet Routine Example - Loop Pattern types and Start direction options

Pallet Routine - Example

Pallet Routine highlight features

Use either Part ID or Pallet Cell (Station) number.
Pattern layouts are Z-Pattern or Linear-Pattern.
Change the start direction.
Skip Cells (Station) Parts.

PART NAME  : Pallet Routine Auto count Direction Forum
REV NUMBER : 20220816
SER NUMBER :
STATS COUNT : 1
 
STARTUP    =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
            ALIGNMENT/END
            MODE/MANUAL
            FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, ,
            LOADPROBE/5BY50_M3_SH
            TIP/TIP1, SHANKIJK=0, 0, 1, ANGLE=0
$$ NO,
            Add Manual Part Alignment and Features
            .
$$ NO,
            Add DCC Part Alignment and Features
            .
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter Part ID per-part (Ex. 101,107) or enter Same as Cell Count ; partIdNo : Same as Cell Count
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Measurement Pattern Layout ; movePattern : Linear-Pattern
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Select Start direction ; cellRunDirection : X Row
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Rows - X axis ; xRowsTrace : 3
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Columns - Y axis ; yColumnsTrace : 3
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each row X ; xCellOffsetRow : 2,3
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each column Y ; yCellOffsetColumn : 2,3
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Skip Cells(part Ex.1 or parts Ex.1,2,3) Enter in ascending order ; skipCellTrace : 2,6
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report skip Cell information? ; skipCellReportInfo : Yes
            TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report Part ID information? ; partId : Yes
            ASSIGN/X_AXIS_NUMBER_ROWS=GETTRACEVALUE("xRowsTrace")
            ASSIGN/Y_AXIS_NUMBER_ROWS=GETTRACEVALUE("yRowsTrace")
            ASSIGN/X_OFFSET_INPUT=GETTRACEVALUE("xCellOffsetRow")
            ASSIGN/Y_OFFSET_INPUT=GETTRACEVALUE("yCellOffsetColumn")
            ASSIGN/X_ROW_OFFSET=0
            ASSIGN/Y_COLUMN_OFFSET=0
            ASSIGN/Y_COLUMN_UNTIL_CNT=0
            ASSIGN/DIRECTION="ONE"
            ASSIGN/CELL_COUNT=0
            ASSIGN/SKIP_CELL_CNT=1
            DO/
              ASSIGN/Y_COLUMN_UNTIL_CNT=Y_COLUMN_UNTIL_CNT+1
              ASSIGN/X_ROW_UNTIL_CNT=0
              IF/GETTRACEVALUE("movePattern")=="Z-Pattern"
                IF/GETTRACEVALUE("cellRunDirection")=="X Row"
                  ASSIGN/X_ROW_OFFSET=0
                END_IF/
                ELSE/
                  ASSIGN/Y_COLUMN_OFFSET=0
                END_ELSE/
              END_IF/
              DO/
                ASSIGN/X_ROW_UNTIL_CNT=X_ROW_UNTIL_CNT+1
                ASSIGN/SKIP_CELL_TRACE=ELEMENT(SKIP_CELL_CNT,",",GETTRACEVALUE("skipCellTrace"))
                ASSIGN/SKIP_CELL=SKIP_CELL_TRACE
                ASSIGN/CELL_COUNT=CELL_COUNT+1
                IF/CELL_COUNT==SKIP_CELL
                  IF/GETTRACEVALUE("skipCellReportInfo")=="Yes"
                    COMMENT/REPT,
                    "Skip Cell Number: "+CELL_COUNT
                  END_IF/
                  ASSIGN/SKIP_CELL_CNT=SKIP_CELL_CNT+1
                END_IF/
                IF_GOTO/CELL_COUNT==SKIP_CELL,GOTO = SKIP_CELL_L1
                ASSIGN/SER_NO_TRACE=ELEMENT(CELL_COUNT,",",GETTRACEVALUE("partIdNo"))
                ASSIGN/SER_NO=SER_NO_TRACE
LOOP_ORIGIN    =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                NOM/XYZ,<0+0,0+0,0+0>,$
                MEAS/XYZ,<X_ROW_OFFSET,Y_COLUMN_OFFSET,0+0>,$
                NOM/IJK,<0+0,0+0,1+0>,$
                MEAS/IJK,<0+0,0+0,1+0>
A1             =ALIGNMENT/START,RECALL:USE_ACTIVE_ALIGNMENT(STARTUP),LIST=YES
                  ALIGNMENT/TRANS,XAXIS,LOOP_ORIGIN
                  ALIGNMENT/TRANS,YAXIS,LOOP_ORIGIN
                ALIGNMENT/END
    $$ NO,
                Add Measured Features
                .
F1             =GENERIC/CIRCLE,DEPENDENT,CARTESIAN,OUT,$
                NOM/XYZ,<0,0,0>,$
                MEAS/XYZ,<0,0,0>,$
                NOM/IJK,<0,0,1>,$
                MEAS/IJK,<0,0,1>,$
                DIAMETER/1,1
                COMMENT/REPT,
                "Cell Count: "+CELL_COUNT
                IF/GETTRACEVALUE("partId")=="Yes"
                  COMMENT/REPT,
                  "Part ID: "+SER_NO
                END_IF/
    $$ NO,
                Add Dimensions
                .
    DIM LOC1= LOCATION OF CIRCLE F1  UNITS=IN ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    X       0.0000     0.0020     0.0020     0.0000     0.0000     0.0000 ----#----
    Y       0.0000     0.0020     0.0020     0.0000     0.0000     0.0000 ----#----
    Z       0.0000     0.0020     0.0020     0.0000     0.0000     0.0000 ----#----
    END OF DIMENSION LOC1
                RECALL/ALIGNMENT,INTERNAL,STARTUP
    $$ NO,
                Add Print or File save per-part
                .
SKIP_CELL_L1    =LABEL/
                ASSIGN/X_ROW_OFFSET_INPUT=ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))
                ASSIGN/Y_COLUMN_OFFSET_INPUT=ELEMENT(Y_COLUMN_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))
    $$ NO,
                Routine Settings results - Test - Change from document to operator to validate the Setting results.
                .
                "X_ROW_OFFSET_INPUT for next feature is: "+X_ROW_OFFSET_INPUT+" and Current X_ROW_OFFSET: "+X_ROW_OFFSET
                "X_ROW_UNTIL_CNT: "+X_ROW_UNTIL_CNT
                "Y_COLUMN_OFFSET_INPUT for next feature is: "+Y_COLUMN_OFFSET_INPUT+" and Current Y_COLUMN_OFFSET: "+Y_COLUMN_OFFSET
                "Y_COLUMN_UNTIL_CNT: "+Y_COLUMN_UNTIL_CNT
                "Entered info for X_OFFSET_INPUT: "+X_OFFSET_INPUT+" and Y_OFFSET_INPUT: "+Y_OFFSET_INPUT
                "Entered info for X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS+" and X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS
                IF/GETTRACEVALUE("movePattern")=="Z-Pattern"
                  IF/GETTRACEVALUE("cellRunDirection")=="X Row"
                    ASSIGN/X_ROW_OFFSET=X_ROW_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow")))
                  END_IF/
                  ELSE/
                    ASSIGN/Y_COLUMN_OFFSET=Y_COLUMN_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn")))
                  END_ELSE/
                END_IF/
                ELSE/
                  IF/X_ROW_UNTIL_CNT<>ABS(GETTRACEVALUE("xRowsTrace"))
                    IF/GETTRACEVALUE("cellRunDirection")=="X Row"
                      ASSIGN/X_ROW_OFFSET=IF(DIRECTION=="ONE",X_ROW_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))),X_ROW_OFFSET-(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))))
                    END_IF/
                    ELSE/
                      ASSIGN/Y_COLUMN_OFFSET=IF(DIRECTION=="ONE",Y_COLUMN_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))),Y_COLUMN_OFFSET-(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))))
                    END_ELSE/
                    ASSIGN/ROW_COMPLETE=IF(DIRECTION=="ONE","LEFT","RIGHT")
                  END_IF/
                END_ELSE/
              UNTIL/X_ROW_UNTIL_CNT==ABS(GETTRACEVALUE("xRowsTrace"))
              ASSIGN/X_ROW_OFFSET_INPUT=ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow"))
              ASSIGN/Y_COLUMN_OFFSET_INPUT=ELEMENT(Y_COLUMN_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn"))
  $$ NO,
              Routine Settings results - Test - Change from document to operator to validate the Setting results.
              .
              "Y_COLUMN_OFFSET_INPUT for next feature is: "+Y_COLUMN_OFFSET_INPUT+" and Current Y_COLUMN_OFFSET: "+Y_COLUMN_OFFSET
              "Y_COLUMN_UNTIL_CNT: "+Y_COLUMN_UNTIL_CNT
              "X_ROW_OFFSET_INPUT for next feature is: "+X_ROW_OFFSET_INPUT+" and Current X_ROW_OFFSET: "+X_ROW_OFFSET
              "X_ROW_UNTIL_CNT: "+X_ROW_UNTIL_CNT
              "Entered info for X_OFFSET_INPUT: "+X_OFFSET_INPUT+" and Y_OFFSET_INPUT: "+Y_OFFSET_INPUT
              "Entered info for X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS+" and X_AXIS_NUMBER_ROWS: "+X_AXIS_NUMBER_ROWS
              ASSIGN/DIRECTION=IF(ROW_COMPLETE=="RIGHT","ONE","TWO")
              IF/GETTRACEVALUE("cellRunDirection")=="X Row"
                ASSIGN/Y_COLUMN_OFFSET=Y_COLUMN_OFFSET+(ELEMENT(Y_COLUMN_UNTIL_CNT,",",GETTRACEVALUE("yCellOffsetColumn")))
              END_IF/
              ELSE/
                ASSIGN/X_ROW_OFFSET=X_ROW_OFFSET+(ELEMENT(X_ROW_UNTIL_CNT,",",GETTRACEVALUE("xCellOffsetRow")))
              END_ELSE/
  $$ NO,
              Test - Change from document to operator to validate the offset distance.
            UNTIL/Y_COLUMN_UNTIL_CNT==ABS(GETTRACEVALUE("yColumnsTrace"))
            ASSIGN/TOTAL_PART_CNT=CELL_COUNT-(SKIP_CELL_CNT-1)
            COMMENT/REPT,
            "Total Part Quantity: "+TOTAL_PART_CNT
$$ NO,
            Add append Print or File save
            .
Parents
  • TraceFields drop down settings

    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter Part ID per-part (Ex. 101,107) or enter Same as Cell Count ; partIdNo : Same as Cell Count
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Measurement Pattern Layout ; movePattern : (Drop down list: Z-Pattern or Linear-Pattern)
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Select Start direction ; cellRunDirection : (Drop down list: X Row or Y Column)
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Rows - X axis ; xRowsTrace : 3
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Columns - Y axis ; yColumnsTrace : 3
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each row X ; xCellOffsetRow : 2
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each column Y ; yCellOffsetColumn : 2
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Skip Cells(part Ex.1 or parts Ex.1,2,3) Enter in ascending order ; skipCellTrace :
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report skip Cell information? ; skipCellReportInfo : (Drop down list: Yes or No)
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report Part ID information? ; partId : (Drop down list: Yes or No)
Reply
  • TraceFields drop down settings

    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter Part ID per-part (Ex. 101,107) or enter Same as Cell Count ; partIdNo : Same as Cell Count
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Measurement Pattern Layout ; movePattern : (Drop down list: Z-Pattern or Linear-Pattern)
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Select Start direction ; cellRunDirection : (Drop down list: X Row or Y Column)
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Rows - X axis ; xRowsTrace : 3
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter number of Columns - Y axis ; yColumnsTrace : 3
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each row X ; xCellOffsetRow : 2
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Enter offset distance between parts - Each column Y ; yCellOffsetColumn : 2
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Skip Cells(part Ex.1 or parts Ex.1,2,3) Enter in ascending order ; skipCellTrace :
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report skip Cell information? ; skipCellReportInfo : (Drop down list: Yes or No)
    TRACEFIELD/DISPLAY=YES,REPORT=NO,DISPLAY MESSAGE=Report Part ID information? ; partId : (Drop down list: Yes or No)
Children
No Data