hexagon logo

Physically square something to the table

I created this as a means to help square a star probe to the table. There's probably better ways to do this, but I'm still pretty much a noob.

So, I have two pins screwed into the table. I have a parallel clamped in a vise, and the vise is up against the pins. I park the probe a quarter inch off a corner of the parallel, and the program takes off and does an alignment.

Once it does that, it takes hits at either end of the parallel, and then compares their locations. It prompts the operator to nudge the vise one way or the other, until the two hits are within .01 of each other. and the face of the parallel is parallel to the front of the CMM to within that amount. I can then use the corner of the parallel to eyeball the squareness of my star probe. Still kind of a pain to get things lined up, but I have a reference to go by that I know is close to square with the table.

CHECK/0.3,1
            PREHIT/0.3

            COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
            PLACE PROBE DIRECTLY ABOVE
            CORNER OF PARALLEL AS PER PHOTO.
READPOINT  =FEAT/POINT,CARTESIAN
            THEO/<46.45789,15.9962,-23.53323>,<0,0,1>
            ACTL/<46.09008,15.75631,-29.26277>,<0,0,1>
            READPOINT/
READPOINT ALIGNMENT=ALIGNMENT/START,RECALL:STARTUP,LIST=YES
            ALIGNMENT/TRANS,XAXIS,READPOINT
            ALIGNMENT/TRANS,YAXIS,READPOINT
            ALIGNMENT/TRANS,ZAXIS,READPOINT
            ALIGNMENT/END
            MODE/DCC
            CLEARP/ZPLUS,0.5,ZPLUS,0,ON
TOP OF PARALLEL=FEAT/POINT,CARTESIAN
            THEO/<-0.32839,0.37363,-0.35387>,<0,0,1>
            ACTL/<-0.32847,0.37347,-0.39224>,<0,0,1>
            MEAS/POINT,1
            MOVE/CLEARPLANE
            HIT/BASIC,NORMAL,<-0.32839,0.37363,-0.35387>,<0,0,1>,<-0.32847,0.37347,-0.39224>,USE THEO=YES
            ENDMEAS/
END OF PARALLEL=FEAT/POINT,CARTESIAN
            THEO/<-0.68733,-0.09977,-0.53108>,<0,0,1>
            ACTL/<-0.68733,-0.11659,-0.60743>,<0,0,1>
            MEAS/POINT,1
            MOVE/CLEARPLANE
            HIT/BASIC,NORMAL,<-0.68733,-0.09977,-0.53108>,<0,-1,0>,<-0.68733,-0.11659,-0.60743>,USE THEO=YES
            ENDMEAS/
INIT ALIGN =ALIGNMENT/START,RECALL:READPOINT ALIGNMENT,LIST=YES
            ALIGNMENT/TRANS,ZAXIS,TOP OF PARALLEL
            ALIGNMENT/TRANS,YAXIS,END OF PARALLEL
            ALIGNMENT/END
            MOVE/CLEARPLANE
FRONT OF PARALLEL=FEAT/CONTACT/VECTOR POINT,CARTESIAN
            THEO/<0,6,-0.15>,<1,0,0>
            ACTL/<-0.00949,6.00002,-0.15001>,<1,0,0>
            TARG/<0,6,-0.15>,<1,0,0>
            SNAP=NO
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=NO
MAIN ALIGNMENT=ALIGNMENT/START,RECALL:INIT ALIGN,LIST=YES
            ALIGNMENT/TRANS,ZAXIS,TOP OF PARALLEL
            ALIGNMENT/TRANS,XAXIS,FRONT OF PARALLEL
            ALIGNMENT/TRANS,YAXIS,FRONT OF PARALLEL
            ALIGNMENT/END
STARTLOOP  =LABEL/
            MOVE/CLEARPLANE
LEFT SIDE  =FEAT/CONTACT/VECTOR POINT,CARTESIAN
            THEO/<0,-5.5,-0.15>,<1,0,0>
            ACTL/<0.00126,-5.49996,-0.15001>,<1,0,0>
            TARG/<0,-5.5,-0.15>,<1,0,0>
            SNAP=NO
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=NO
            MOVE/CLEARPLANE
RIGHT SIDE =FEAT/CONTACT/VECTOR POINT,CARTESIAN
            THEO/<0,5.5,-0.15>,<1,0,0>
            ACTL/<0.00374,5.49999,-0.15001>,<1,0,0>
            TARG/<0,5.5,-0.15>,<1,0,0>
            SNAP=NO
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=NO
            RECALL/ALIGNMENT,INTERNAL,STARTUP
DIM LOC1= LOCATION OF POINT LEFT SIDE  UNITS=IN ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS     OUTTOL        DEV
X     46.45789    0.00000    0.00000   46.08185    0.37604   -0.37604 <--------
END OF DIMENSION LOC1
$$ NO,
            THE NEXT LINE OF CODE EXTRACTS THE "MEAS' VALUE.
            FOR THE DIMENSION OF THE HIT ON THE LEFT END OF 
            THE PARALLEL.
            
            THE ONE AFTER THAT PLUGS THAT VALUE INTO THE
            NOMINAL FOR THE DIMENSION FOR THE RIGHT SIDE.
             
            THEN WE PULL THE DEVIATION FOR THAT DIMENSION
            INTO A VARIABLE AND CHECK TO SEE IF IT IS WITHIN
            PLUS OR MINUS .01.  IF IT ISN'T, THEN WE CHECK TO SEE
            IF IT IS MINUS OR PLUS AND PROMPT THE OPERATOR
            TO MOVE THE REAR OF THE VISE A "SMIDGE" IN THE
            APPROPRIATE DIRECTION.
            ASSIGN/LEFT_POINT=LOC1.X.MEAS
DIM LOC2= LOCATION OF POINT RIGHT SIDE  UNITS=IN ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS     OUTTOL        DEV
X    LEFT_POINT    0.00000    0.00000   46.08432    0.00247    0.00247 -------->
END OF DIMENSION LOC2
            ASSIGN/DIFFERENCE=LOC2.X.DEV
            IF/(DIFFERENCE > -.010) AND (DIFFERENCE < .010)
            COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
            PARALLEL IS SQUARE TO WITHIN
            .020.  ENDING PROGRAM.
            PROGRAM/END
            END_IF/
            ELSE_IF/DIFFERENCE < 0
            COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
            "DIFFERENCE IS :" + DIFFERENCE + ", PLEASE NUDGE REAR OF VISE TO THE Y PLUS"
            END_ELSEIF/
            ELSE_IF/DIFFERENCE > 0
            COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
            "DIFFERENCE IS :" + DIFFERENCE + ", PLEASE NUDGE REAR OF VISE TO THE Y MINUS"
            END_ELSEIF/
            GOTO/STARTLOOP