{Change Comments ***********************************************************}
{10/17/96
Modified: Fanuc 6M M001.13.1
Created: BP EZ-Trak [I] MZ59.13
For: Iomega
Machine: Bridgeport
Control: EZ-Trak
Versions: Catalyst v3.09C/Compost 4.21.37/v1.0b1
Changes made per Jeff Jensen of Iomega, manual and sample printouts.
DWB}
{10/30/96
Modified: BP EZ-Trak [I] MZ59.13
Created: BP EZ-Trak [I] MZ59.13.1
For: Iomega
Versions: Catalyst v3.09C/Compost 4.21.37/v1.0b1
Changes made per Jeff Jensen of Iomega and sample printouts.
Customer reported that Line Number cannot contain N Address.
Only number value is allowed.
Changed Sequence Label from N to ? in Compost2 General Info Dialog.
Added Format#8 '0000' at Prog Numeric Format Definitions.
Added Sequence# to Format#8 at Prog Numeric Format Definitions.
Changed Seq/SeqC to SeqLab/SeqLabC throughout Prog.
Added Retag at End3 sub.
Deleted Space between SUBPRGM and [PGM] words at StdSub, OpenMP, ToolPath AutoCycle,
ZonlyRepAutoCycle, ZonlyRep, and two places at OpGuts Drilling.
DWB}
{30Dec97
Original: BP EZ-Trak [I] MZ59.13.1
Created: BP EZ-Trak SX [RPM] MW86.13
For: Reell Precision Mfg.
Changes made per: Mike Desjardins
NOTE:
Control is 2 axis with a manual positioning Z Axis.
Customer requested the removal of most CLEARANCE PLANE Z-MOVES
EXERCISE CAUTION if using this PROG to create other posts.
Changed MoveXYZ to Move XY in FinishSub1, Opguts (2 places),
FirstOp4 , NewToolOp1, SameToolOp1 and End1
Deleted ZCP1 from NewToolOp2, NewToolOp6 and End2
Commented out ZMove boolean at the start of OpGuts
Deleted MoveSZ in SameToolOp3
Changed ToolDiameter# to Literal '0' in ckCRCOn
Added an additional blank comment line to comments at InitOp
Added Literal 'EZTRAK' to all comment lines
Charles Winston}
{14Jan98
Original: BP EZ-Trak SX [RPM] MW86.13
Created: BP EZ-Trak SX [RPM] MW86.13.1
For: Reell Precision Mfg.
Changes made per: Mike Desjardins
Added Formatting for MUL# in Prog Numeric Format Definitions
Changed FeedRate to ' F' MUL# NUM#('10') FeedContour#,
Customer requires a high Feedrate here. Used a multiple of 10 times the contour feed
Deleted ' Rapid' ckAbsOrInc MoveXY from IF FIFO? boolean in Opguts and in End1
Deleted ' || TOOLCHG' OpToolID from FirstOp1 and NewToolOp3
Charles Winston}
{2Feb98
Original: BP EZ-Trak SX [RPM] MW86.13.1
Created: BP EZ-Trak SX [RPM] MW86.13.2
For: Reell Precision Mfg.
Changes made per: Mike Desjardins
NOTE:
Control is 2 axis with a manual positioning Z Axis.
Customer requested the removal of nearly all CLEARANCE PLANE Z-MOVES
*** EXERCISE CAUTION if using this PROG to create other posts.
Added ZCP2 to FirstOp4
Deleted Program# at the start of InitOp
Changed Literal to '0000 EZTRAK|SX1 MODE|INCH |' Date$ ' ' Time$ at InitOp
Charles Winston}
{24Mar98
Original: BP EZ-Trak SX [RPM] MW86.13.2
Created: BP EZ-Trak SX [RPM] MW86.13.3
For: Reell Precision Mfg.
Changes made per: Mike Desjardins
Added formatting for ClearancePlane2# in Prog Numeric Format Definitions ****
Added an ASCII $7C (hex), 'Pipe' Character to all lines containing 'EZTRAK'
Added 'Z' ClearancePlane2# to the CutterRadiusComp line in ckCRCOn
Charles Winston}
{08/17/98,
Initial: BP EZ-Trak SX [RPM] MW86.13.3
Created: BP EZ-Trak SX [RPM] MW86.13.4
For: Reel Precision Mfg.
Changes to Prog:
1) NewToolOp6/SameToolOp3 - Added ZCP2 right after StrtPos. RAPID moves need
Z component.
CDH}
{Prog Numeric Format Definitions ****}
#1 = '#.00'
#2 = '#####.###;0.'
#3 = '*#####.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '####^##0'
#7 = '#bbb0'
#8 = '0000'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Recall#,4)
FORMAT(SUB#,4)
FORMAT(ToolDiameter#,4)
FORMAT(TrackXNO#,4)
FORMAT(TrackYNO#,4)
FORMAT(TrackZNO#,4)
FORMAT(LineLength#,4)
FORMAT(ArcI#,4)
FORMAT(ArcJ#,4)
FORMAT(MUL#,4)
FORMAT(RepeatX#,4)
FORMAT(RepeatY#,4)
FORMAT(RepeatZ#,4)
FORMAT(OriginUSRXCTP#,4)
FORMAT(OriginUSRYCTP#,4)
FORMAT(PartShiftX#,4)
FORMAT(PartShiftY#,4)
FORMAT(PartShiftZ#,4)
FORMAT(ClearancePlane2#,4)
FORMAT(OriginUSPXCTP#,4)
FORMAT(OriginUSPYCTP#,4)
FORMAT(Program#,5)
FORMAT(CallMasterNum#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(NewWFO#,5)
FORMAT(Parts#,5)
FORMAT(Dwell#,6)
FORMAT(Sequence#,8)
{Prog Subroutines ****}
RestoreScale:
IF Metric? {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
RETURN
DoSubComment:
IF UseComments? AND SubComment?
'( SUB NUMBER: ' Program# ' )' EOL
END
RETURN
DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
SeqLabC ' EZTRAK| ( OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
SeqLabC ' EZTRAK| ( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
SeqLabC ' EZTRAK| ( ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
SeqLabC ' EZTRAK| ( TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
SeqLabC ' EZTRAK| ( ' ToolComment$ ' )' EOL
END
RestoreScale
END
RETURN
PSInit:
NewWFOF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
FourthCWF
FourthCCWF
FifthCWF
FifthCCWF
RETURN
PSStuff:
RETURN
DoPostScript:
PSInit
EachPS
SeqLabC PostScript EOL
PSStuff
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL
PSStuff
NextPS
RETURN
EntryMove:
IF AbsValue?
LoadFeat Num#('0') Num#('0') FIRST SPZ#
IF FeedEntry?
SeqLabC ' Line ABS' MoveSX MoveSY MoveZ FeedEnt EOL
ELSE
SeqLabC ' Rapid ABS' MoveSX MoveSY MoveZ EOL
END
ELSE
IF FeedEntry?
SeqLabC ' Line INC X0. Y0.' ZIn FeedEnt EOL
ELSE
SeqLabC ' Rapid INC X0. Y0.' ZIn EOL
END
END
RETURN
StartSub:
OpenSub
FORMAT(Program#,7)
'0000 EZTRAK| ' Program# ' MODE|INCH' EOL
FORMAT(Program#,5)
DoSubComment
RETURN
SubWarning:
IF NOT FeedConnect?
IF AnyZshift?
' ' EOL
'( WARNING Z CLEARANCE WILL CHANGE WITH EACH CYCLE OF SUB REPEAT )' EOL
' ' EOL
END
END
RETURN
StdSub:
SeqLabC ' REPEAT ' RepsLess1
IF NotEqual? RepeatX# Num#('0')
' X' RepeatX#
END
IF NotEqual? RepeatY# Num#('0')
' Y' RepeatY#
END
IF NotEqual? RepeatZ# Num#('0')
' Z' RepeatZ#
END
EOL
SeqLabC ' DO|SUBPRGM[PGM] ' Program# EOL
StartSub
RETURN
ckAbsOrInc:
IF AbsValue?
' ABS'
ELSE
' INC'
END
RETURN
FinishSub1: {part 1}
IF NOT FeedConnect?
LoadFeat Recall# Num#('1') Recall# Num#('2') ClearancePlane3#
IF ZMove?
IF AutoCycle?
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ EOL
ELSE
IF FIFO?
SeqLabC ' Line' ckAbsOrInc MoveXYZ FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveXY EOL
END
END
END
END
RETURN
FinishSubG92: {part 2}
CloseSub
SeqLabC ' END|REPEAT' EOL
IF NotEqual? RepeatX# Num#('0')
Save# Num#('1') OriginUSRXCTP#('1')
END
IF NotEqual? RepeatY# Num#('0')
Save# Num#('2') OriginUSRYCTP#('1')
END
RETURN
OpenMP:
IF EquallySpacedOffsets?
NewProg
SeqLabC ' REPEAT ' PartsLess1
IF NotEqual? PartShiftX# Num#('0')
' X' PartShiftX#
END
IF NotEqual? PartShiftY# Num#('0')
' Y' PartShiftY#
END
IF NotEqual? PartShiftZ# Num#('0')
' Z' PartShiftZ#
END
EOL
SeqLabC ' DO|SUBPRGM[PGM] ' Program# EOL
StartSub
END
RETURN
CloseMP:
IF EquallySpacedOffsets?
CloseSub
SeqLabC ' END|REPEAT' EOL
IF NotEqual? RepeatX# Num#('0')
Save# Num#('1') OriginUSPXCTP#('1')
END
IF NotEqual? RepeatY# Num#('0')
Save# Num#('2') OriginUSPYCTP#('1')
END
END
RETURN
DoAbsOrInc:
IF Flag?('1') AND AbsoluteMoves?
IF ZMove? AND AbsValue?
' INC'
SetInc
ELSE
IF NOT ZMove? AND NOT AbsValue?
' ABS'
SetAbs
ELSE
ckAbsOrInc
END
END
ELSE
ckAbsOrInc
END
RETURN
DoDrillAbsOrInc:
IF Flag?('1') AND AbsoluteMoves?
IF SPZMove? AND AbsValue?
' INC'
SetInc
ELSE
IF NOT SPZMove? AND NOT AbsValue?
' ABS'
SetAbs
ELSE
ckAbsOrInc
END
END
ELSE
ckAbsOrInc
END
RETURN
RestoreAbsOrInc:
IF Flag?('1') AND AbsoluteMoves? AND NOT AbsValue?
SetAbs
END
RETURN
FormatArc:
' ARC|CNTRPT'
DoAbsOrInc
IF ArcCW?
' CW'
ELSE
' CCW'
END
MoveXYZ ' XC' ArcI# ' YC' ArcJ#
RETURN
ckCRCOff:
IF LastFeat? AND CutterRadiusCompensation? AND Flag?('5')
SetFlagF('5')
IF NOT LineFeat?
SeqLabC ' Line' DoAbsOrInc MoveXYZ FeedRate EOL
END
SeqLabC ' COMP|OFF' MoveZ EOL
END
RETURN
ckCRCOn:
IF CutterRadiusCompensation? AND NOT LastFeat? AND NOT ZMove? AND NOT Flag?('5')
SetFlag('5')
SeqLabC
' COMP|ON'
IF CRCLeft?
' LFT'
ELSE
' RGT'
END
' D0' MoveSX MoveSY ' Z' ClearancePlane2# ' ' MoveSZ ' P' LineLength# ' F' MUL# NUM#('10') FeedContour# EOL
END
RETURN
GetACPos:
IF LastFeat?
IF AbsValue?
Save# Num#('3') SPX#
Save# Num#('4') SPY#
ELSE
SetAbs
Save# Num#('3') SPX#
Save# Num#('4') SPY#
SetInc
END
END
RETURN
GetDrillPos:
IF LastFeat?
IF AbsValue?
Save# Num#('1') SPX#
Save# Num#('2') SPY#
ELSE
SetAbs
Save# Num#('1') SPX#
Save# Num#('2') SPY#
SetInc
END
END
RETURN
GetMillPos:
IF LastFeat?
ckCRCOff
IF AbsValue?
Save# Num#('1') EPX#
Save# Num#('2') EPY#
ELSE
SetAbs
Save# Num#('1') EPX#
Save# Num#('2') EPY#
SetInc
END
END
RETURN
ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
IF NOT FirstFeat?
IF Repeats? AND FeedConnect? AND NOT ZshiftOnly?
SeqLabC ' Line' ckAbsOrInc MoveSX MoveSY ZCP2 FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY ZCP2 EOL
END
END
GetACPos
SeqLabC ' DO|SUBPRGM[PGM] ' Program# EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
ELSE
IF RetractToCP1?
IF NOT FirstFeat?
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY ZCP1 EOL
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY ZCP2 EOL
END
SeqLabC ' DR|PT' ckAbsOrInc MoveSX MoveSY MoveSZ EOL
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY ZCP1 EOL
ELSE
SeqLabC ' DR|PT' DoDrillAbsOrInc MoveSX MoveSY MoveSZ EOL
END
GetDrillPos
END
ELSE
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
SeqLabC ' Rapid' DoAbsOrInc MoveXYZ EOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
ckCRCOn
SeqLabC ' Line' DoAbsOrInc MoveXYZ FeedRate EOL
END
ELSE
IF ArcFeat?
SeqLabC FormatArc ArcFeed EOL
END
END
END
GetMillPos
END
NEXTFeat
RestoreAbsOrInc
RETURN
AutoCycCutSub1: {part 1}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
StartSub
SetSRXYtoSP
SetInc
RETURN
AutoCycCutSub2: {part 2}
ToolPath
IF Repeats? AND FeedConnect? AND ZshiftOnly?
ELSE
IF FIFO?
SeqLabC ' Line INC X0. Y0.' ZCP2 FeedEnt EOL
ELSE
SeqLabC ' Rapid INC X0. Y0.' ZCP2 EOL
END
END
CloseSub
SetAbsOrInc
SetSRSubXY {restore SR to 1st position value}
SetSRSubMove
RETURN
AutoCycPat:
SetPass2 {position pattern}
ToolPath {call after NewProg for correct sub calls}
SetPass1 {reset}
RETURN
Milling:
IF AutoCycle?
NewProg
AutoCycCutSub1
EntryMove
AutoCycCutSub2
AutoCycPat
Save# Num#('1') ADD# Recall# Num#('1') Recall# Num#('3')
Save# Num#('2') ADD# Recall# Num#('2') Recall# Num#('4')
ELSE
EntryMove
ToolPath
END
RETURN
G92Sub:
SubWarning
StdSub
IF FeedConnect?
SeqLabC ' Line' ckAbsOrInc StrtPos ZCP2 FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
END
Milling
FinishSub1
FinishSubG92
RETURN
ZonlyRepAutoCycle:
AutoCycPat {write pattern moves and main calls}
StartSub
NewProg
EachCycle
SetSRXYtoEP
IF FeedConnect?
IF FirstCycle?
SeqLabC ' Line INC X0. Y0.' ' Z' SUB# ZInPlusInc# ClearancePlane2# FeedEnt EOL
EachFeat
IF LastFeat?
Save# Num#('6') SUB# ZInPlusInc# EPZ#
END
NextFeat
ELSE
IF SPXMove? OR SPYMove?
SetInc
SeqLabC ' Line INC' StrtPos ' Z0.' FeedEnt EOL
SetAbs
END
SeqLabC ' Line INC X0. Y0.' ' Z' SUB# ZInPlusInc# Recall# Num#('5') FeedEnt EOL
END
Save# Num#('5') SUB# ZInPlusInc# Recall# Num#('6')
ELSE
IF NOT FirstCycle?
IF NotEqual? ClearancePlane2# Recall# Num#('5')
SeqLabC ' Rapid INC X0. Y0.' ' Z' SUB# ClearancePlane2# Recall# Num#('5') EOL
END
IF SPXMove? OR SPYMove?
SetInc
SeqLabC ' Rapid INC' StrtPos ' Z0.' EOL
SetAbs
END
IF FeedEntry?
SeqLabC ' Rapid INC X0. Y0.' ' Z' SUB# ZCP2PlusInc# ClearancePlane2# EOL
END
END
IF FeedEntry?
SeqLabC ' Line INC X0. Y0.' ' Z' SUB# ZInPlusInc# ZCP2PlusInc# FeedEnt EOL
ELSE
SeqLabC ' Rapid INC X0. Y0.' ' Z' SUB# ZInPlusInc# ClearancePlane2# EOL
END
Save# Num#('5') ZCP2PlusInc#
END
IF FirstCycle?
TrackZNO# ZInPlusInc#
SetStatusOff {protect Z position for incremental sub}
END
SeqLabC ' DO|SUBPRGM[PGM] ' Program# EOL
NextCycle
SetStatusOn
AutoCycCutSub1 {build element sub}
AutoCycCutSub2
SetAbs
IF NotEqual? ClearancePlane2# Recall# Num#('5')
IF FIFO?
SeqLabC ' Line INC X0. Y0. Z' SUB# ClearancePlane2# Recall# Num#('5') FeedEnt EOL
ELSE
SeqLabC ' Rapid INC X0. Y0. Z' SUB# ClearancePlane2# Recall# Num#('5') EOL
END
END
TrackZNO# ClearancePlane2#
SetAbsOrInc
CloseSub
{Element shift, not pattern}
Save# Num#('1') ADD# Recall# Num#('1') Recall# Num#('3')
Save# Num#('2') ADD# Recall# Num#('2') Recall# Num#('4')
RETURN
ZonlyRep:
EachCycle
IF NOT FirstCycle?
IF FeedConnect?
SeqLabC ' Line' ckAbsOrInc StrtPos ' Z' Recall# Num#('5') FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
END
END
IF FeedConnect?
SeqLabC ' Line' ckAbsOrInc StrtPos ZInPlusInc FeedEnt EOL
Save# Num#('5') ZInPlusInc#
ELSE {Entry/Exit Connect}
IF FeedEntry?
IF NOT FirstCycle?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2PlusIncC EOL
END
SeqLabC ' Line' ckAbsOrInc StrtPos ZInPlusInc FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZInPlusInc EOL
END
END
SeqLabC ' DO|SUBPRGM[PGM] ' Program# EOL
NextCycle
StartSub
TrackZNO# FIRST SPZ#
ToolPath
FinishSub1
CloseSub
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
ProgStart:
InitProg
ReverseXZArcs
UseSeparateSubCalls
SetMaxSeparateSubCalls('50')
SetFlagF('1') { Milling ZShiftOnly SepSubs }
SetFlagF('5') {True = need CRCOffset }
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: may be capital and/or lower case letters. Separate commands with a space.' 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
RETURN
SkipToLastFeat:
EachFeat
IF LastFeat?
Save# Num#('1') TrackXNO# SPX#
Save# Num#('2') TrackYNO# SPY#
END
NextFeat
RETURN
SetDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN
OpGuts:
IF Milling?
LoadFeat Num#('0') Num#('0') ClearancePlane2#
IF ZMove?
{ SeqLabC ' Rapid' ckAbsOrInc StrtPos EOL}
END
IF Repeats?
NewProg
IF ZshiftOnly?
IF AutoCycle? {incremental Autocycle sub can have Z moves}
ZonlyRepAutoCycle
ELSE {Z shift only, NOT Auto Cycle}
IF UseSeparateSubCalls? AND CyclesLessThanMaxSubCalls?
SetFlag('1') { Milling ZShiftOnly SepSubs }
ZonlyRep
SetFlagF('1')
ELSE {no sep subs desired}
G92Sub
END
END {end Auto Cycle IF}
ELSE {not Z only}
G92Sub
END {end Z only IF}
ELSE {no repeat OPs}
Milling
END
LoadFeat Recall# Num#('1') Recall# Num#('2') ClearancePlane3#
IF ZMove?
IF AutoCycle?
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ EOL
ELSE
IF FIFO?
SeqLabC ' Line' ckAbsOrInc MoveXY FeedEnt EOL
ELSE
{ SeqLabC ' Rapid' ckAbsOrInc MoveXY EOL }
END
END
END
ELSE
IF Drilling?
IF Repeats?
NewProg
StdSub
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP1 EOL
END
IF RetractToCP1?
LoadFeat Num#('0') Num#('0') ClearancePlane1#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP1 EOL
END
END
LoadFeat Num#('0') Num#('0') ClearancePlane2#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
END
GetCycle
IF CallMasterOp?
SeqLabC ' DO|SUBPRGM[PGM] ' CallMasterNum# EOL
SkipToLastFeat
ELSE
TrackZNO# FIRST SPZ#
IF MasterOp?
SetFlag('1') {std sep sub Zreps in effect}
NewMasterProg
SeqLabC ' DO|SUBPRGM[PGM] ' Program# EOL
StartSub
ToolPath
CloseSub
SetFlagF('1') {not std sep sub Zreps in effect}
ELSE
ToolPath
END
END
SetDrillEndOpZ
LoadFeat Recall# Num#('1') Recall# Num#('2') ClearancePlane3#
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ EOL
IF Repeats?
FinishSubG92
END
END
END
RETURN
WFOStuff:
{ NOTE: This Post Processor does not support WorkFixtureOffsets. }
RETURN
InitOp:
FORMAT(Program#,7)
'0000 EZTRAK|SX1 MODE|INCH |' Date$ ' ' Time$ EOL
FORMAT(Program#,5)
IF ToolChangeAtHome?
SetHome
END
IF UseComments?
IF ProgramNameComment?
SeqLabC ' EZTRAK| ( PROGRAM: ' ProgramName$ ' )' EOL
END
IF ProgramComment?
SeqLabC ' EZTRAK| ( ' ProgramComment$ ' )' EOL
END
IF FormatNameComment?
SeqLabC ' EZTRAK| ( FORMAT: ' FormatName$ ' )' EOL
SeqLabC ' EZTRAK| ( )' EOL
END
IF TimeComment?
SeqLabC ' EZTRAK| ( ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
SeqLabC ' EZTRAK| ( OUTPUT IN ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
SeqLabC ' EZTRAK| ( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
SeqLabC ' EZTRAK| ( FIRST TOOL NOT IN SPINDLE )' EOL
END
END
OpenSub
RestoreScale
RETURN
FirstOp1:
Plane { No Output }
{ SeqLab ' || TOOLCHG' OpToolID EOL }
DoOpComments
DoPostScript
RETURN
FirstOp2:
RETURN
FirstOp3:
RETURN
FirstOp4:
CheckPass
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
RETURN
NewToolOp1:
LoadFeat Recall# Num#('1') Recall# Num#('2') LAST ClearancePlane1#
SeqLabC ' Rapid' ckAbsOrInc MoveXY EOL
RETURN
NewToolOp2:
DoEndOpPS
IF ToolChangeAtHome?
SeqLabC ' Rapid' ckAbsOrInc Home EOL
END
IF LAST ProgStop?
SeqLabC ' :: STOP' EOL
ELSE
IF OptionalStops?
SeqLabC ' :: STOP' EOL
END
END
RETURN
NewToolOp3: {Start new Operation}
Plane { No Output }
{ SeqLab ' || TOOLCHG' OpToolID EOL }
DoOpComments
DoPostScript
RETURN
NewToolOp4:
RETURN
NewToolOp5:
RETURN
NewToolOp6:
CheckPass
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
RETURN
SameToolOp1:
DoEndOpPS
IF LAST ProgStop?
LoadFeat Recall# Num#('1') Recall# Num#('2') LAST ClearancePlane1#
SeqLabC ' Rapid' ckAbsOrInc MoveXY EOL
SeqLabC ' :: STOP' EOL
END
RETURN
SameToolOp2: {Start new Operation}
DoOpComments
DoPostScript
CheckPass
RETURN
SameToolOp3: {Start new Operation}
IF LAST ProgStop?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
ELSE
LoadFeat Num#('0') Num#('0') Num#('0')
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
END
RETURN
End1:
LoadFeat Recall# Num#('1') Recall# Num#('2')
RETURN
End2:
DoEndOpPS
IF FIRST ToolChangeAtHome? {added FIRST modifier}
SeqLabC ' Rapid' ckAbsOrInc FirstHome EOL
END
IF ProgStop?
SeqLabC ' :: STOP' EOL
END
RETURN
End3:
CloseSub
Post2 {organize Subs into one program}
Close
ReTag
IF UseComments?
SetScale('1') {restore scale for comments}
Reopen
IF FileBytesComment?
' EZTRAK| ( FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL
END
IF FileFeetComment?
' EZTRAK| ( FILE LENGTH: ' FileFeet# ' FEET )' EOL
END
IF FileMetersComment?
' EZTRAK| ( FILE LENGTH: ' FileMeters# ' METERS )' EOL
END
Close
END
RETURN
MPallTools1P: {Multiple Parts, All Tools 1 Part}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
OpenMP
FirstOp1
WFOStuff
FirstOp2
FirstOp3
FirstOp4
ELSE
IF NewTool?
NewToolOp1
NewToolOp2 {to tool change, CS problem}
NewToolOp3
WFOStuff
NewToolOp4
NewToolOp5
NewToolOp6
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
End1 {End of program}
End2
CloseMP
End3
RETURN
MP1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
FirstOp1
WFOStuff
FirstOp2
OpenMP
FirstOp3
FirstOp4
ELSE
IF NewTool?
NewToolOp1
CloseMP
NewToolOp2 {to tool change, CS problem}
NewToolOp3
WFOStuff
NewToolOp4
OpenMP
NewToolOp5
NewToolOp6
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
End1 {End of program}
CloseMP
End2
End3
RETURN
MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
FirstOp1
WFOStuff
FirstOp2
FirstOp4
OpenMP
FirstOp3 {can't XY position before WFO}
ELSE
IF NewTool?
CloseMP
NewToolOp1
NewToolOp2 {to tool change, CS problem}
NewToolOp3
WFOStuff
NewToolOp4
NewToolOp6
OpenMP
NewToolOp5 {can't XY position before WFO}
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
CloseMP {End of program}
End1
End2
End3
RETURN
NoMPs: {no multiple parts}
EachOp {Start of post processing}
IF FirstOperation?
InitOp
FirstOp1
WFOStuff
FirstOp2
FirstOp3
FirstOp4
ELSE
IF NewTool?
NewToolOp1
NewToolOp2
NewToolOp3
WFOStuff
NewToolOp4
NewToolOp5
NewToolOp6
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
WFOStuff
SameToolOp3
END
END {common point for all operations}
OpGuts
NextOp {loops back to EachOP until last Operation}
End1 {End of program}
End2
End3
RETURN
{Start of executable Prog, Top Level ****}
ProgStart {setup and initializations}
IF MultipleParts?
IF AllToolsOnePart?
MPallTools1P
ELSE {implied OneToolAllParts?}
IF FullUp?
MP1ToollAllPfu
ELSE {implied ExitClearancePlane?}
MP1ToollAllPXcp
END
END
ELSE
NoMPs
END