hexagon logo

Food for thought

Here's a simple program with some flow control just to give someone some ideas on ways to use advanced program. although I am not claiming this program is in anyway advanced.
We simply use this program for a quick circularity check on round parts. it Asks how many 'circles' to check and then loops through asking if each circle is outside,if it is then it prompts for a diameter, calculates the number of hits and then you measure the circle. if it isn't outside it jumps to the inside circle section and prompts for a diameter, calculates the hits and the you measure that circle. This is used on our romer arm but could be used on a bridge CMM with some modification.

PART NAME  : Circularity
REV NUMBER : 
SER NUMBER : 
STATS COUNT : 1
 
STARTUP    =ALIGNMENT/START,RECALL:,LIST=YES
            ALIGNMENT/END
            MODE/MANUAL
            PREHIT/0.05
            RETRACT/0.05
            MOVESPEED/ 40
            TOUCHSPEED/ 1
            FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, , 
            LOADPROBE/6MM_BALL_505L_6D
            TIP/TIP1, SHANKIJK=0, 0, 1, ANGLE=0
$$ NO,
     ,**************************
     ,*
     ,* AUTHOR: Moolvie
     ,*
     ,* DATE: 12/5/2011
     ,*
     ,**************************
     , 
C2         =COMMENT/INPUT,NO,FULL SCREEN=NO,'Enter the number of Circles to check for Roundness'
            ASSIGN/V5=C2.INPUT
$$ NO, 
     , 
     , 
     ,
PLN1       =FEAT/PLANE,CARTESIAN,OUTLINE
            THEO/<0,0,0>,<0,0,1>
            ACTL/<6.2372,-31.9252,2.1161>,<0.0028862,0.0019883,0.9999939>
            MEAS/PLANE,4
            HIT/BASIC,NORMAL,<1,0,0>,<0,0,1>,<5.3872,-23.7386,2.1024>,USE THEO=YES
            HIT/BASIC,NORMAL,<0,1,0>,<0,0,1>,<-2.0388,-31.7319,2.1395>,USE THEO=YES
            HIT/BASIC,NORMAL,<-1,0,0>,<0,0,1>,<6.8631,-40.1469,2.1307>,USE THEO=YES
            HIT/BASIC,NORMAL,<0,-1,0>,<0,0,1>,<14.7372,-32.0833,2.0918>,USE THEO=YES
            ENDMEAS/
A1         =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
            ALIGNMENT/LEVEL,ZPLUS,PLN1
            ALIGNMENT/TRANS,ZAXIS,PLN1
            ALIGNMENT/END
CIR1       =FEAT/CIRCLE,CARTESIAN,IN,LEAST_SQR
            THEO/<0,0,0>,<0,0,1>,10
            ACTL/<6.346,-31.8854,-0.7261>,<0,0,1>,15.7551
            MEAS/CIRCLE,4,ZPLUS
            HIT/BASIC,NORMAL,<4.7638,0,0>,<-1,-0.0000057,0>,<6.1628,-24.0102,-0.6472>,USE THEO=YES
            MOVE/CIRCULAR
            HIT/BASIC,NORMAL,<0,4.7638,0>,<0.0000057,-1,0>,<-1.5293,-31.6879,-0.5125>,USE THEO=YES
            MOVE/CIRCULAR
            HIT/BASIC,NORMAL,<-4.7638,0,0>,<1,0.0000057,0>,<7.3283,-39.7013,-0.5626>,USE THEO=YES
            MOVE/CIRCULAR
            HIT/BASIC,NORMAL,<0,-4.7638,0>,<-0.0000057,1,0>,<14.223,-31.7809,-1.1819>,USE THEO=YES
            ENDMEAS/
A2         =ALIGNMENT/START,RECALL:A1,LIST=YES
            ALIGNMENT/TRANS,XAXIS,CIR1
            ALIGNMENT/TRANS,YAXIS,CIR1
            ALIGNMENT/END
$$ NO, 
     , 
            WHILE/V5<>0
C3         =COMMENT/YESNO,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,Is this an outside Circle?
$$ NO, 
     , 
     ,
            IF_GOTO/C3.INPUT=="NO",GOTO = INSIDE
$$ NO, 
     , 
     ,
C1         =COMMENT/INPUT,NO,FULL SCREEN=NO,'Enter Diameter for Current Circle'
            ASSIGN/V1=C1.INPUT
$$ NO, 
     , 
     , 
            ASSIGN/PI=[COLOR="#FF0000"]ACOS(-1)[/COLOR]
            ASSIGN/V3=V1*PI
            ASSIGN/V4=V3/[COLOR="#008000"]2.[/COLOR]
$$ NO,
     , [COLOR="#008000"]the '2.' number just seemed like a good chord length so I could increase or decrease hits to the given diameter.[/COLOR]
     ,
            ASSIGN/V2=INT(V4)
CIR2       =FEAT/CONTACT/CIRCLE,CARTESIAN,OUT,LEAST_SQR
            THEO/<0,0,0>,<0,0,1>,V1,0
            ACTL/<-0.0001,-0.0002,0>,<0.0000199,0.0000363,1>,15.2827,0
            TARG/<0,0,0>,<0,0,1>
            START ANG=0,END ANG=360
            ANGLE VEC=<1,0.0000057,0>
            DIRECTION=CCW
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=NO
DIM LOC1= LOCATION OF CIRCLE CIR2  UNITS=IN ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
D      V1     0.0020     0.0020    15.2827    -2.4723     2.4703 <--------
END OF DIMENSION LOC1
FCFCIRTY1 =CIRCULARITY OF CIR2
            FEATCTRLFRAME/SHOWPARAMS=YES,SHOWEXPANDED=YES
            CADGRAPH=OFF,REPORTGRAPH=OFF,TEXT=OFF,MULT=10.00,ARROWDENSITY=100,OUTPUT=BOTH,UNITS=IN
              DIMENSION/CIRCULARITY,0.005
              NOTE/FCFCIRTY1
            FEATURES/CIR2,,
            GOTO/L_END
$$ NO, 
     , 
     ,
INSIDE     =LABEL/
$$ NO, 
     , 
     ,
C4         =COMMENT/INPUT,NO,FULL SCREEN=NO,'Enter Diameter for Current Circle'
            ASSIGN/V6=C4.INPUT
$$ NO, 
     , 
     , 
            ASSIGN/PI=[COLOR="#FF0000"]ACOS(-1)[/COLOR]
            ASSIGN/V3=V6*PI
            ASSIGN/V4=V3/2.
            ASSIGN/V2=INT(V4)
CIR3       =FEAT/CONTACT/CIRCLE,CARTESIAN,IN,LEAST_SQR
            THEO/<0,0,0>,<0,0,1>,V6
            ACTL/<0.0001,-0.0003,0>,<0,0,1>,15.7547
            TARG/<0,0,0>,<0,0,1>
            START ANG=0,END ANG=360
            ANGLE VEC=<1,0.0000057,0>
            DIRECTION=CCW
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=NO
DIM LOC1= LOCATION OF CIRCLE CIR3  UNITS=IN ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
D      V6     0.0020     0.0020    15.7547    -2.0003     1.9983 <--------
END OF DIMENSION LOC1
FCFCIRTY1 =CIRCULARITY OF CIR3
            FEATCTRLFRAME/SHOWPARAMS=YES,SHOWEXPANDED=YES
            CADGRAPH=OFF,REPORTGRAPH=OFF,TEXT=OFF,MULT=10.00,ARROWDENSITY=100,OUTPUT=BOTH,UNITS=IN
              DIMENSION/CIRCULARITY,0.005
              NOTE/FCFCIRTY1
            FEATURES/CIR3,,
$$ NO, 
     , 
     , 
L_END      =LABEL/
            ASSIGN/V5=V5-1
            END_WHILE/