TITLE: :T1 = { EMC2 Lathe 03 Dec 2009 Post Modified to remove modality check on XY for G03/G02. mmm 16/Jan/07 Post modifed for quadrant arcs, customer wants R word but Sherline cannot do full circle with R. 10/May/2011 Modified to reverse Arc directions, this done to cope with Front Tool post where X values remain positive, in this case Arc Directions are reversed. 16/Sep/2012 Restored arc directions for V11. Set Arcs to vector as temp cure for arc probs am Mar 2015 } :COPYRIGHT = { Copyright (c) 1997 Dolphin CADCAM Systems Ltd. } END: VERSION: FILEVERSION 11.0 TURNING END: WORDS: :TMP = {DDDDDD.dd} :BLOCK = {"N"DDDD} :XAXIS = {"Z"DDDDD.ddd}{"Z"DDDDD.dddd} :YAXIS = {"X"DDDDD.ddd}{"X"DDDDD.dddd} :XARC = {"K"DDDDD.ddd}{"K"DDDDD.dddd} :KFP = {"K"DDDDD.ddd}{"K"DDDDD.dddd} :YARC = {"I"DDDDD.ddd}{"I"DDDDD.dddd} :PITCH = {"P"DDDDD.ddd}{"P"DDDDD.dddd} :EXTINT = {"I"DDDDD.ddd}{"I"DDDDD.dddd} :FIRSTC = {"J"DDDDD.ddd}{"J"DDDDD.dddd} :DEPTH = {"K"DDDDD.ddd}{"K"DDDDD.dddd} :ANGLE = {"Q"DDDDD.ddd}{"Q"DDDDD.dddd} :FINC = {"H"DDDDD.ddd}{"H"DDDDD.dddd} :TAPER = {"E"DDDDD.ddd}{"E"DDDDD.dddd} :RAD = {"R"DDDDD.ddd}{"R"DDDDD.dddd} :DELAY = {"G04P"DDDDD.ddd} :DWELL = {"P"DDDD.ddd} :PECK = {"Q"DDDDD.ddd}{"Q"DDDDD.dddd} :RPLANE = {"R"DDDDD.ddd}{"R"DDDDD.dddd} :FEED = {"F"DDDDD.ddd}{"F"DDDDD.dddd} :SPIN = {"S"DDDD} :MAXSPIN = {"D"DDDD} :TOOL = {"T"DD} :SUBPR = {"P"DDDD} :REPEAT = {"L"DDDD} :CRC = {"D"DD} :TLC = {"H"DD} :INDEX = {"INDEX"DDD.ddd} :PROGNO = {"O"ZDDDD} END: GROUPS: :G1 = { G00 G01 G02 G03 } :G2 = { G17 G18 G19 } :G3 = { G90 G91 } :G4 = { G94 G95 } :G5 = { G20 G21 } :G6 = { G40 G41 G42 } :G7 = { G43 G44 } :G8 = { G73 G74 G76 G80 G81 G82 G83 G84 G85 G86 G87 G88 G89 } :G9 = { G96 G97 G98 G99 } :G10 = { G54 G55 G56 G57 G58 G59 } :M1 = { M03 M04 M05 M06 } :M2 = { M98 M99 } END: CYCLES: DRILL EXPAND DRILLDWELL EXPAND DEEPDRILL EXPAND NDEEP EXPAND NPECK EXPAND PECKDRILL EXPAND NPECK EXPAND REAM EXPAND BORE EXPAND TAP EXPAND TAPNOREV EXPAND LHTAP EXPAND LHTAPNOREV EXPAND HELIX VECTOR TURN EXPAND FACE EXPAND SCRCUT CANNED THREAD CANNED END: MACROS: #N = { IF ($BLOCK GE 9999) THEN SET $BLOCK = 5 ENDIF $BLOCK:BLOCK } #L = { [RAPID ? (G01) / (G00)] } #X = { ($X:XAXIS) } #Y = { ($Y:YAXIS) } #IXX = { ($YCEN-$OLDY):YARC } #KXX = { ($XCEN-$OLDX):XARC } #I = { $YCEN:YARC } #K = { $XCEN:XARC } #KFPR = { $FPR:KFP } #RAD = { $ARCRAD:RAD } #R = { ($CCLDIST:RPLANE) } #P = { if ( $CDELAY ne 0 ) then ($CDELAY:DWELL) endif } #F = { ($FPM:FEED) } #FSEL = { [FEEDTYPE ? ($FPM:FEED) / ($FPR:FEED) ] } #S = { [SPINTYPE ? $SPINDLE:SPIN / $SURF:SPIN ] } #FT = { [FEEDTYPE ? (G94) / (G95) ] } #ST = { [SPINTYPE ? (G97) / (G96) ] } #DWELL = { if ( $CDELAY ne 0) then (G82) else (G81) endif } #IPLANE = { if ( [CRETRACT] eq 2 ) then (G98) else (G99) endif } #CRC = { IF ([PSPROG] EQ 2) THEN [CUTCOM ? (G40) / (G41) / (G42)] ENDIF } #CRCNO = { IF ([PSPROG] EQ 2) THEN [CUTCOM ? NULL / ($CRCNO:CRC) / ($CRCNO:CRC)] ENDIF } #Q = { (ABS($CD1-$CWSURF):PECK) } #OFF = { IF ($TABLOFF EQ 0) THEN (G54) ENDIF IF ($TABLOFF EQ 1) THEN (G54) ENDIF IF ($TABLOFF EQ 2) THEN (G55) ENDIF IF ($TABLOFF EQ 3) THEN (G56) ENDIF IF ($TABLOFF EQ 4) THEN (G57) ENDIF IF ($TABLOFF EQ 5) THEN (G58) ENDIF IF ($TABLOFF EQ 6) THEN (G59) ENDIF } END: RULES: :PROGNO = { "%" EOB "( Program : " $PROGNO:PROGNO ")" EOB "( PartNo : - " $JOBTEXT " )" EOB "( " $DATE " : " $TIME " )" EOB "( Source File - " $CNCNAME " : Post - " $POST " )" EOB SET $BLOCK = 5 set $INCR = 10 set $RAPIDFEED = 10000 ; rapid feedrate SET $USR9 = 0.0 ; Itinerant } :UNITS = { #N [UNITS ? (G21) / (G20) ] EOB #N "G0G18G40G49G80G90" EOB #N "G90.1" EOB } :RETRACT = { IF ($OLDZ LT $Y ) THEN #N #CRC (G00) #Y eob ENDIF } :GOTO = { IF ( $DISTANCE ne 0 ) THEN #N (G90) #L #CRC #Y #X #CRCNO #FSEL EOB ENDIF } :SCREWING = { #N "G33" #Y #X #KFPR EOB } :SCRCUT = { #N (_G00) #X #Y eob SET $USR9 = -$CLDIST #N "G76" $FPR:PITCH $CXEND:XAXIS $USR9:EXTINT SET $USR9 = ($CDEPTH/$ROUGHCUTS) $USR9:FIRSTC $CDEPTH:DEPTH "R1" $FINISHCUTS:FINC "L0" EOB // $CYSTART - $CYEND:R1 // $CDEPTH*1000:P2 $CDEPTH/$ROUGHCUTS*1000:Q2 EOB } :THREAD = { #N (_G00) #X #Y eob #N "G76" $FPR:PITCH $CXEND:XAXIS $CLDIST:EXTINT SET $USR9 = ($CDEPTH/$ROUGHCUTS) $USR9:FIRSTC $CDEPTH:DEPTH "R1" $FINISHCUTS:FINC "L0" EOB } :INSERT = { #N $JOBTEXT EOB } :GOCLW = { #N (G03) #CRC $Y:YAXIS $X:XAXIS #I #K #CRCNO #FSEL eob } :GOACLW = { #N (G02) #CRC $Y:YAXIS $X:XAXIS #I #K #CRCNO #FSEL eob } :DELAY = { #N $DELAY:DELAY eob } :SPINDLE= { UNSETALL #N #FT #ST IF( [SPINTYPE] EQ 2 AND $SURF > 0.0 ) then $MAXSPIN:MAXSPIN ENDIF #S [SPIN ? (M05) / (M03) / (M04) ] EOB } :FINISH = { #N "G97" EOB #N "M5" EOB #N "G00" $YTLOAD:YAXIS eob #N "G00" $XTLOAD:XAXIS eob #N (G90)(M30) EOB "%" EOB } :SELCTL = { UNSETALL if ( $Y ne $YTLOAD ) then #N "G00" $YTLOAD:YAXIS eob endif IF ($USR1 EQ 0) THEN NULL ELSE #N "G00" $XTLOAD:XAXIS $YTLOAD:YAXIS EOB ENDIF "( " $JOBTEXT " )" EOB #N $TOOLNO:TOOL (M06) EOB #N #OFF EOB #N (G90) (G00) (G43) ($CLEARP:XAXIS) $TLCNO:TLC eob SET $USR1 = 1 } :OPSTOP = { #N "M01" EOB } :STOP = { #N "M00" EOB } :DRILL = { #N #IPLANE #DWELL #X #Y #Z #R #P #F eob } :BORE = { #N #IPLANE (G85) #X #Y #Z #R #F eob } :TAP = {#N #IPLANE (G84) #X #Y #Z #R #F EOB } :NPECK = { #N #IPLANE (G73) #X #Y #Z #Q #R #F EOB } :NDEEP = { #N #IPLANE (G83) #X #Y #Z #Q #R #F EOB } :DRILLDWELL = :DRILL :CYCLEOFF = {UNSETALL #N (G80) EOB } :REAM = { #N #IPLANE (G87) #X #Y #Z #R #F EOB } :GOHOME = { #N (G00) $XSAFPOS:XAXIS $YSAFPOS:YAXIS EOB } END: