BP EZ Trak [WD] MX65 13


{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}

{7/31/97
Initial: BP EZ-Trak [I] MZ59.13.1.txt
Created: BP EZ-Trak [WD] Mxxx.13.txt
changed all occurrances of literal '::' to '||',
MPK
}

{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(RepeatX#,4)
FORMAT(RepeatY#,4)
FORMAT(RepeatZ#,4)
FORMAT(OriginUSRXCTP#,4)
FORMAT(OriginUSRYCTP#,4)
FORMAT(PartShiftX#,4)
FORMAT(PartShiftY#,4)
FORMAT(PartShiftZ#,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?
'( OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
'( ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
'( ' WorkGroupComment$ ' )' EOL
END
IF ToolTypeComment?
'( TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
'( ' 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 MoveXYZ 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
' D' ToolDiameter# MoveSX MoveSY MoveSZ ' P' LineLength# FeedRate 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 ZCP2 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 MoveXYZ FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ 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 ' Program# ' MODE|INCH |' Date$ ' ' Time$ EOL
FORMAT(Program#,5)
IF ToolChangeAtHome?
SetHome
END
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$ ' INCHES )' EOL
END
IF PartsComment?
'( PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
'( 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 ZCP1 EOL
RETURN

NewToolOp1:
LoadFeat Recall# Num#('1') Recall# Num#('2') LAST ClearancePlane1#
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ EOL
RETURN

NewToolOp2:
DoEndOpPS
IF ToolChangeAtHome?
SeqLabC ' Rapid' ckAbsOrInc Home ZCP1 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 ZCP1 EOL
RETURN

SameToolOp1:
DoEndOpPS
IF LAST ProgStop?
LoadFeat Recall# Num#('1') Recall# Num#('2') LAST ClearancePlane1#
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ 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 ZCP1 EOL
ELSE
LoadFeat Num#('0') Num#('0') Num#('0')
SeqLabC ' Rapid' ckAbsOrInc StrtPos MoveSZ EOL
END
RETURN

End1:
LoadFeat Recall# Num#('1') Recall# Num#('2') ClearancePlane1#
SeqLabC ' Rapid' ckAbsOrInc MoveXYZ EOL
RETURN

End2:
DoEndOpPS
IF FIRST ToolChangeAtHome? {added FIRST modifier}
SeqLabC ' Rapid' ckAbsOrInc FirstHome ZCP1 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?
'( FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL
END
IF FileFeetComment?
'( FILE LENGTH: ' FileFeet# ' FEET )' EOL
END
IF FileMetersComment?
'( 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


Wyszukiwarka

Podobne podstrony:
BP EZ Trak SX [RPM] MW85 13 4
BP EZ Trak LH [WD] MV22 15
BP EZ Trak Plus [RPM] MW86 15
BP EZ Trak M025 15 2
BP EZ Trak DX 3A MX93 89 3m
BP EZ Trak [DM] NMQ67 15
BP EZ Trak DX MY78 89 1
Trak AGE 3 [RC] NMQ58 13 1
BP Boss 8 [SP] DY74 13
BP Boss 8 D233 13
UAS 13 zao
er4p2 5 13

więcej podobnych podstron