StockOnNoCan: IF NOT CannedCycle? StockOn {need stock for SP positioning, if not a canned cycle} END RETURN
FeedNoCan: IF NOT CannedCycle? FeedC END RETURN
FeedRateNoCan: IF NOT CannedCycle? FeedRateC END RETURN
ApproachSP: IF ApproachFace? SeqC StockOnNoCan XSPC EOL SeqC StockOff ZOpCPC EOL StockOnNoCan IF NotEqual? CycleStartZ# ZOpCP# SeqC FeedNoCan ZSPC FeedRateNoCan EOL END ELSE { ODApproach/IDApproach } SeqC StockOnNoCan ZSPC EOL SeqC StockOff XOpCDC EOL StockOnNoCan IF NotEqual? CycleStartX# XOpCD# SeqC FeedNoCan XSPC FeedRateNoCan EOL END END RETURN
AppMove: StockOff ThisOpEntryZCP CoolOn RETURN
Approach: { NOT FOR TAILSTOCK, .82 } RapidF# { RapidF# Forces FeedRate } IF ApproachOD? SeqC ThisOpEntryXCP AppMove EOL ELSE IF ApproachID? SeqC XOpCD AppMove EOL ELSE {ApproachFace} SeqC StockOnNoCan XSP AppMove EOL END END ApproachSP RETURN
CheckOffset: DoEndOpPS IF LAST ProgStop? SeqC 'M0' EOL ELSE IF CoolOff? AND LAST NOT CoolOff? SeqC CoolOff EOL END END IF NewToolOffset? SeqC OpToolID 'D' ToolOffset# EOL END CSSOff IF ConstantSurfaceFeed? IF LAST ConstantSurfaceFeed? IF NotEqual? MaxRPM# LAST MaxRPM# SeqC Preset MaxRPM EOL END IF LAST ProgStop? CSSOn 'G96' Speed ELSE IF NotEqual? SpeedRPM# LAST SpeedRPM# CSSOn 'G96' Speed END END ELSE SeqC Preset MaxRPM EOL CSSOn 'G96' Speed END ELSE IF LAST ConstantSurfaceFeed? 'G95' Speed ELSE IF LAST ProgStop? 'G95' Speed ELSE IF NotEqual? SpeedRPM# LAST SpeedRPM# 'G95' Speed END END END END IF LAST ProgStop? SeqC {SpeedC} SpinOn EOL SeqC CoolOn EOL ELSE SeqC {SpeedC} EOL IF NOT CoolOff? AND LAST CoolOff? SeqC CoolOn EOL END END DoPostScript RETURN
FormatArc: IF ArcCW? CWArcC ELSE CCWArcC END MoveXC MoveZC IF ArcIJFormat? ArcIJC ELSE ArcRC END RETURN
CkCRC: { 4.2 } IF XMove? OR ZMove? { Approach Length Feature and Multiple Pockets } IF LastFeat? CRCOffC { Exit Length Feature } ELSE CRCOnC { Entry Length Feature } END END RETURN
ToolPath: EACHFeat GetToolTip IF LastFeat? IF Drilling? IF Tap? InverseSpinOn ELSE IF Dwell? SeqC 'G4X' Dwell# EOL END END END END IF PointFeat? SeqC MoveSXYC EOL ELSE IF RapidFeat? SeqC RapidC MoveXC MoveZC EOL ELSE IF LineFeat? SeqC CkCRC FeedC MoveXC MoveZC FeedRateC EOL ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, LAST, FIRST or NEXT modifiers in this loop } SeqC FormatArc FeedRateC EOL NEXTQuadrant ELSE IF ThreadFeat? SeqC 'G33' MoveXC MoveZC FeedRateC EOL Rapid END END END END END NEXTFeat RETURN
CheckRapid: CRCOffC IF LAST CannedCycle? Rapid ELSE RapidC END RETURN
{Start of executable Prog **************************************************}
{setup and initializations} InitProg PosSideLathe StandardXZArcs SetMaxRPM('10000') SetMaxFeed('500') IF PSComment? AND UseComments? 'PostScript:' EOL ' Literals: put between single or double quotes.' EOL ' Separate commands and literals with at least one space.' EOL ' A CR ( RETURN key ) will start a new line.' EOL ' Commands: must be all capital letters when typed in.' EOL ' ENDOP -' EOL ' all literals and commands before an ENDOP command' EOL ' will appear at the beginning of the operation. All ' EOL ' literals and commands after an ENDOP command will appear' EOL ' at the end of the operation. ' EOL END EachOp {Start of post processing *********************} GetLCycle IF FirstOperation? EOR 'MPF' Program# EOL IF UseComments? IF ProgramNameComment? '( PROGRAM: ' ProgramName$ ' )' EOL END IF ProgramComment? '( ' ProgramComment$ ' )' EOL END IF FormatNameComment? '( FORMAT: ' FormatName$ ' )' EOL END IF TimeComment? '( ' Date$ ' AT ' Time$ ' )' EOL END IF MovesComment? '( OUTPUT IN ' MoveType$ ' METERS )' EOL END END RestoreScale OpenSub StockOff {.71.2} SetHome DoOpComments DoPostScript Plane Seq AbsOrInc EOL SeqC 'G55' EOL SeqC OpToolID 'D' ToolOffset# 'M51' SpinOn EOL SeqC Rapid Home EOL IF ConstantSurfaceFeed? CSSOn 'G96' ELSE CSSOff 'G95' END SeqC Speed EOL Approach ELSE IF NewTool?
{Finish off last Operation}
StockOff {.62} CheckRapid IF LAST ApproachOD? SeqC LAST OpExitXCPC EOL ELSE IF LAST ApproachID? SeqC LAST XOpECDC EOL END END SeqC LAST OpExitZCPC EOL DoEndOpPS SeqC NewHome EOL IF LAST ProgStop? SeqC 'M0' EOL ELSE SeqC ProgStop EOL END
{Start new Operation}
DoOpComments DoPostScript Seq OpToolID 'D' ToolOffset# 'M51' SpinOn EOL SeqC Rapid Home EOL IF ConstantSurfaceFeed? CSSOn 'G96' ELSE CSSOff 'G95' END SeqC Speed EOL Approach ELSE IF SameTool? {.62}
{Start new Operation}
StockOff DoOpComments IF LAST StraightConnect? CheckOffset CheckRapid SeqC StockOnNoCan XSPC ZSPC EOL ELSE CheckRapid IF ApproachOD? IF LAST ApproachOD? SeqC LAST XOpECDC EOL ELSE {around} IF LAST ApproachID? SeqC LAST XOpECDC EOL END SeqC LAST OpExitZCPC EOL SeqC LAST OpExitXCPC EOL END ELSE IF ApproachID? IF LAST ApproachID? SeqC LAST XOpECDC EOL ELSE IF LAST ApproachOD? {around} SeqC LAST OpExitXCPC EOL END SeqC LAST OpExitZCPC EOL SeqC XOpCDC EOL END ELSE {ApproachFace} IF LAST ApproachFace? SeqC LAST ZOpECPC EOL ELSE IF LAST ApproachOD? {around} SeqC LAST OpExitXCPC EOL ELSE {LAST ApproachID} SeqC LAST XOpECDC EOL END SeqC LAST OpExitZCPC EOL END END END CheckOffset ApproachSP END END END END {common point for all operations} IF CannedCycle? StockOff IF Roughing? IF RoughContour? SetPass1 NewProg SeqC FORMAT(Program#,6) 'R20=' Program# 'R21=' CycleStartXDia# 'R22=' CycleStartZ# 'R24=' StockXRadius# 'R25=' StockZ# 'R26=' CutDepth# 'R27=40' IF ApproachOD? 'R29=11' ELSE IF ApproachID? 'R29=13' ELSE {OD ApproachFace} 'R29=12' {R29=14 is for ID ApproachFace} END END EOL SetPass2 SeqC 'L95P1' FeedRate EOL OpenSub 'L' Program# EOL DoSubComment SeqC StepMove StrtPos EOL ToolPath SeqC 'M17' EOL CloseSub IF AutoFinish? SeqC 'R24=0R25=0' IF ApproachID? 'R29=22' ELSE 'R29=21' END EOL SeqC 'L95P1' Feedrate EOL END SetPass1 TrackXNO# CycleStartX# TrackZNO# CycleStartZ# END ELSE IF Threading? SeqC 'R20=' FeedIPR# 'R21=' FinishXDia# 'R22=' CycleStartZ# IF AutoFinish? 'R23=2' ELSE 'R23=1' END IF ApproachID? 'R24=' ThreadXInc# ELSE 'R24=-' ThreadXInc# END 'R25=' StockXRadius# 'R26=.05' {Thread in amount} 'R27=.05' {Thread out amount} EOL SeqC 'R28=' CalcNumCuts IF SingleEdgeCut? 'R29=30' ELSE 'R29=0' END 'R31=' FinishXDia# 'R32=' FinishZ# 'L97P1' EOL ELSE IF Drilling? IF PeckChipBreaker? SeqC 'R22=' CycleStartZ# 'R24=' Retract# {Peck decrease amount} 'R25=' Peck# 'R26=' FinishZ# 'R27=' Dwell# {Dwell at start} 'R28=' Dwell# {Dwell at end} 'L98P1' Feedrate EOL END END END END ELSE StockOn SetPass1 ToolPath IF AutoFinish? { .82.1c } StockOff IF Turning? IF ApproachFace? SeqC RapidC ZOpECPC EOL ELSE SeqC RapidC XOpECDC EOL END ApproachSP SeqC StockOff StrtPosC EOL ToolPath ELSE IF Roughing? AND NOT RoughSimple? SetPass2 SeqC RapidC XSPC ZSPC EOL SeqC StockOff StrtPosC EOL ToolPath SetPass1 ELSE IF Threading? SeqC 'X' MUL# Num#('2') ADD# FinishXRadius# Taper# EOL SeqC 'G33' IF Taper? 'X' MUL# Num#('2') FinishXRadius# END 'Z' FinishZ# EOL SeqC Rapid XSP EOL SeqC ZSP EOL END END END END END IF Drilling? AND Tap? SeqC SpinOn EOL END NextOp {loops back to EachOP until last Operation}
{End of program ************************************************************}
{finish last operation} StockOff CRCOffC IF CannedCycle? Rapid ELSE RapidC END IF ApproachOD? SeqC OpExitXCPC EOL ELSE IF ApproachID? SeqC XOpECDC EOL END END SeqC OpExitZCPC EOL DoEndOpPS SeqC CoolOff EOL SeqC SpinOff EOL IF ProgStop? SeqC 'M0' EOL END SeqC EOP EOL Post Close IF UseComments? SetScale('1') {restore scale for comments} Reopen IF FileBytesComment? '( FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL END IF FileFeetComment? '( FILE LENGTH: ' FileFeet# ' FEET )' EOL END IF FileMetersComment? '( FILE LENGTH: ' FileMeters# ' METERS )' EOL END Close END