This is a program we use to end mill holes in round flanges. We use this for small lot jobs. G54 X/Y is always the center of the part.
It uses WHILE/DO - END logic. I prefer this to the IF/THEN logic.
I am posting this as an example of what you can do with Macro Programming
%
O3544 (MILL HOLES ON A B.C.)
N30 (WRITTEN 07-24-2007 14:57:49)
N40 (RETURNED 07-26-2007 11:03:07)
N50 #602= 1.125 ( DIAMETER OF HOLES )
N60 #603= 18.0 ( BOLT CIRCLE OF HOLES )
N70 #604= 0.2 ( DEPTH OF EACH CUTTING PASS )
N80 #605= 3.0 ( NUMBER OF CUTTING PASSES )
N90 #601= 7.0 ( FEED RATE )
N100 #620= 3000.0 ( SPINDLE SPEED )
N110 #606= 0.5 ( DIAMETER OF END MILL )
N120 #621= 83.0 ( PERCENT OF END MILL DIA STEPOVER )
N130 #607= 16.0 ( NUMBER OF HOLES )
N140 #608= 11.25 ( STARTING ANGLE 3 O:CLOCK = ZERO )
N150 #609= 22.5 ( DEGREES BETWEEN HOLES )
N160 #610= 0.0 ( TOP OF PART IN 'Z' AXIS )
N170 #611= 2.0 ( CLAMP/FIXTURE 'Z' AXIS CLEARANCE PLANE )
( END OF INPUTS )
N190 #604= [ #604 * -1 ]
N200 #612= [ #602 / 2 ]
N210 #613= [ #603 / 2 ]
N220 #616= [ #606 / 2 ]
N230 #617= [ #606 * [ #621 / 100.0 ] ]
N240 G17 G54 G90
N250 G40 G49 G80
( TOOL #01 IS AN END MILL )
N270 G53 G00 Z0. ( RESTART TOOL #01 HERE )
N280 G53 G00 X-20. Y0.
N290 T1 M06
N300 S#620 M03
N310 #618= #608
N320 #627= #607
N330 #624= [ COS[ #608 ] * #613 ]
N340 #625= [ SIN[ #608 ] * #613 ]
N350 G54 G00 G90 X#624 Y#625
N360 G43 Z#611 H01 D01 M08
N370 WH [ #627 GT 0 ] DO1
N380 G00 X#624 Y#625
N390 Z [ #610 + 0.1 ]
N400 M97 P500
N410 #627= [ #627 - 1 ]
N420 #618= [ #618 + #609 ]
N430 #624= [ COS[ #618 ] * #613 ]
N440 #625= [ SIN[ #618 ] * #613 ]
N450 END1
N460 G53 G00 Z0. M09
N470 G53 G00 X-20. Y0.
( UNLOAD HERE )
N490 M30
N500 ( START OF HOLE MILLING CYCLE )
N510 G01 Z#610 F#601
N520 G13 G91 Z#604 I#616 K#612 Q#617 L#605
N530 G90
N540 G00 Z#611
N550 M99
% |