BP EZ Trak [DM] NMQ67 15


{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] MX65.13.txt
changed all occurrances of literal '::' to '||',
MPK
}

{2/24/98
Updated & Modified: BP EZ-Trak [WD] MX65.13
Created: BP EZ-Trak [WD] MX65.15
For: Walt Disney
Versions: Catalyst v4.21.30(mac)/ComPost2 1.1b3
Changes made per
Updated for Catalyst v3.35C per Points List [V] M001.15a Format.
Customer requested no subs.
DWB}

{03/31/99,
Initial: BP EZ-Trak LH [WD] MV22.15.txt
Created: BP EZ-Trak [DM] NMxxx.15
For: Davalar Mold

Changes to Prog:
1) Deleted all Tool changes.
2) ckCRCOn - Changed literal D to D0. Changed literal P to P0.
Added extra MoveSZ per customer request.
CDH}

{Prog Numeric Format Definitions ****}

#1 = '#.00'
#2 = '#####.###;0.'
#3 = '*#####.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '0000'
#7 = '#bbb0' { For Alternate Program# }

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Recall#,4)
FORMAT(ADD#,4)
FORMAT(SUB#,4)
FORMAT(MUL#,4)
FORMAT(TrackZ#,4)
FORMAT(TrackXNO#,4)
FORMAT(TrackYNO#,4)
FORMAT(TrackZNO#,4)
FORMAT(CurOriginPosX#,4)
FORMAT(CurOriginPosY#,4)
FORMAT(HomeX#,4)
FORMAT(HomeY#,4)
FORMAT(StartPosX#,4)
FORMAT(StartPosY#,4)
FORMAT(ClearancePlane1#,4)
FORMAT(ClearancePlane2#,4)
FORMAT(ClearancePlane3#,4)
FORMAT(SPX#,4)
FORMAT(SPY#,4)
FORMAT(EPX#,4)
FORMAT(EPY#,4)
FORMAT(EPZ#,4)
FORMAT(ArcI#,4)
FORMAT(ArcJ#,4)
FORMAT(LineLength#,4)
FORMAT(ToolDiameter#,4)
FORMAT(FeedContour#,4)
FORMAT(Program#,5)
FORMAT(PartNum#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(Parts#,5)
FORMAT(Sequence#,6) { Necessary for correct output of Sequence Number value }

{Added Subroutines ***}

SetScale1:
IF Flag?('1') {CAM file is in Metric, tools and tool path}
SetScale('1') { change to English, this is a English post}
END
RETURN

RestoreScale1:
IF Flag?('1') {CAM file is in Metric, tools and tool path}
SetScale('.03937007874') { change to English, this is an English post}
END
RETURN

ckAbsOrInc:
IF AbsValue?
' ABS'
ELSE
' INC'
END
RETURN

DoSetHome:
RestoreScale1
IF ToolChangeAtHome?
TrackXNO# HomeX#
TrackYNO# HomeY#
ELSE
TrackXNO# Num#('0')
TrackYNO# Num#('0')
END
TrackZNO# ClearancePlane1#
SetScale1
RETURN

GetHome:
LoadFeat PRIME HomeX# PRIME HomeY# LAST ClearancePlane1#
IF XMove? OR YMove?
SeqLabC ' Rapid' ckAbsOrInc PRIME Home LAST ZCP1 EOL
END
RETURN

GetFirstHome:
LoadFeat FIRST PRIME HomeX# FIRST PRIME HomeY# ClearancePlane1#
IF XMove? OR YMove?
SeqLabC ' Rapid' ckAbsOrInc FIRST PRIME Home LAST ZCP1 EOL
END
RETURN

GetStartPos:
LoadFeat StartPosX# StartPosY# Num#('0')
IF XMove? OR YMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos MoveSZ EOL
END
RETURN

GetStartPosC:
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
RETURN

GetOfstOn:
LoadFeat StartPosX# StartPosY# ClearancePlane1#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP1 EOL
END
RETURN

GetLASTOfstOff:
LoadFeat Num#('0') Num#('0') LAST ClearancePlane1#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') LAST ZCP1 EOL
END
RETURN

GetOfstOff:
LoadFeat Num#('0') Num#('0') ClearancePlane1#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') ZCP1 EOL
END
RETURN

GetZCP2C:
LoadFeat StartPosX# StartPosY# ClearancePlane2#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
END
RETURN

GetZCP3C:
LoadFeat Num#('0') Num#('0') ClearancePlane3#
IF ZMove?
IF Milling? AND FIFO?
SeqLabC ' Line' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') ZCP3 FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') ZCP3 EOL
END
END
RETURN

GetMoveSXYZ:
IF PointFeat?
SeqLabC ' DR|PT' ckAbsOrInc MoveSX MoveSY MoveSZ EOL
ELSE
IF SPXMove? OR SPYMove? OR SPZMove?
IF AutoCycle?
IF Repeats? AND ZShiftOnly?
IF FeedEntry?
SeqLabC ' Line' ckAbsOrInc ' X' ADD# Recall# Num#('4') SPX# ' Y' ADD# Recall# Num#('5') SPY# MoveSZ FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc ' X' ADD# Recall# Num#('4') SPX# ' Y' ADD# Recall# Num#('5') SPY# MoveSZ EOL
END
TrackXNO# SPX#
TrackYNO# SPY#
SetInc
ELSE
SetInc
IF FeedEntry?
SeqLabC ' Line' ckAbsOrInc MoveSX MoveSY MoveSZ FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY MoveSZ EOL
END
END
ELSE
IF FeedEntry?
SeqLabC ' Line' ckAbsOrInc MoveSX MoveSY MoveSZ FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY MoveSZ EOL
END
END
END
END
RETURN

GetMoveXYZ:
IF RapidFeat?
' Rapid' ckAbsOrInc MoveXYZ
ELSE
' Line' ckAbsOrInc MoveXYZ
END
RETURN

FormatArc:
' ARC|CNTRPT' ckAbsOrInc
IF ArcCW?
' CW'
ELSE
' CCW'
END
MoveXYZ ' XC' ArcI# ' YC' ArcJ#
RETURN

GetExit:
IF Drilling?
Save# Num#('6') SPX#
Save# Num#('7') SPY#
ELSE
IF AutoCycle?
SetAbs
Save# Num#('6') ADD# Recall# Num#('4') EPX#
Save# Num#('7') ADD# Recall# Num#('5') EPY#
IF Repeats? AND ZShiftOnly? AND FeedConnect?
Save# Num#('8') EPZ#
ELSE
IF FIFO?
SeqLabC ' Line' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') PRIME ZCP2 FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') PRIME ZCP2 EOL
END
END
ELSE
Save# Num#('6') EPX#
Save# Num#('7') EPY#
IF Repeats? AND NOT FeedConnect?
IF FIFO?
SeqLabC ' Line' ckAbsOrInc MoveXY PRIME ZCP2 FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveXY PRIME ZCP2 EOL
END
ELSE
Save# Num#('8') EPZ#
END
END
END
RETURN

GetDrillCP:
IF RetractToCP1?
LoadFeat StartPosX# StartPosY# ClearancePlane1#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP1 EOL
END
ELSE
LoadFeat StartPosX# StartPosY# ClearancePlane2#
IF ZMove?
SeqLabC ' Rapid' ckAbsOrInc StrtPos ZCP2 EOL
END
END
RETURN

GetMoveSXY:
IF AutoCycle?
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY PRIME ZCP2 EOL
ELSE
IF FeedConnect?
SeqLabC ' Line' ckAbsOrInc MoveSX MoveSY ' Z' TrackZ# Recall# Num#('8') ' F' FeedContour# EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY PRIME ZCP2 EOL
END
END
RETURN

GetMoveSXYC:
IF SPXMove? OR SPYMove?
GetMoveSXY
END
RETURN

GetRepZCP2:
IF AutoCycle?
ResetPass2
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY ZCP2 EOL
ResetPass1
ELSE
IF NotEqual? PRIME ClearancePlane2# ClearancePlane2#
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY ZCP2 EOL
END
END
RETURN

GetACOffset:
SetScale1
SetACSPCompF
Save# Num#('4') MUL# SUB# SPX# CurOriginPosX# Recall# Num#('9')
Save# Num#('5') MUL# SUB# SPY# CurOriginPosY# Recall# Num#('9')
SetACSPComp
RestoreScale1
RETURN

GetSXYMove: { ZonlyRepAutoCycle }
IF FeedConnect?
GetACOffset
SeqLabC ' Line' ckAbsOrInc MoveSX MoveSY ' Z' Recall# Num#('8') FeedEnt EOL
ELSE
SeqLabC ' Rapid' ckAbsOrInc MoveSX MoveSY PRIME ZCP2 EOL
END
RETURN

GetSXYMoveC: { ZonlyRepAutoCycle }
ResetPass2
IF NotEqual? Recall# Num#('6') SPX# { SPXMove }
GetSXYMove
ELSE
IF NotEqual? Recall# Num#('7') SPY# { SPYMove }
GetSXYMove
END
END
ResetPass1
RETURN

GetACZShiftExit: { ZonlyRepAutoCycle }
SeqLabC ' Rapid' ckAbsOrInc ' X' Recall# Num#('6') ' Y' Recall# Num#('7') ZCP2 EOL
RETURN

ckCRCOn:
IF CutterRadiusCompensation? AND NOT ZMove? AND NOT Flag?('2')
SetFlag('2')
SeqLabC
' COMP|ON'
IF CRCLeft?
' LFT'
ELSE
' RGT'
END
' D0.' MoveSX MoveSY MoveSZ MoveSZ ' P0.' FeedRate EOL
END
RETURN

ckCRCOff:
IF Flag?('2')
SetFlagF('2')
SeqLabC ' COMP|OFF' MoveZ EOL
END
RETURN

{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

DoPartCycleComment:
IF MultipleParts? AND UseComments? AND SubComment?
'( PART NO. ' PartNum# ' )' EOL
END
RETURN

DoCycleComment:
IF UseComments? AND SubComment?
'( CYCLE START )' 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
FourthCWF
FourthCCWF
FifthCWF
FifthCCWF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN

PSStuff:
RETURN

DoPostScript:
PSInit
EachPS
SeqLabC PostScript EOL
PSStuff
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqLabC EndOpPS EOL
PSStuff
NextPS
RETURN

ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
GetMoveSXYZ
ELSE
IF FirstFeat?
GetMoveSXYZ
END
IF XMove? OR YMove?
ckCRCOn
END
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
SeqLabC GetMoveXYZ EOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC GetMoveXYZ FeedRate EOL
DecelMove2
END
SeqLabC GetMoveXYZ DecelFeed EOL
ELSE
SeqLabC GetMoveXYZ FeedRate EOL
END
END
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqLabC FormatArc ArcFeed EOL
DecelMove2
END
SeqLabC FormatArc DecelFeed EOL
ELSE
SeqLabC FormatArc ArcFeed EOL
END
NEXTQuadrant
END
END
END
END
IF LastFeat?
ckCRCOff
GetExit
END
NEXTFeat
RETURN

AutoCycCutSub1: {part 1}
CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY}
GetACOffset
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
RETURN

AutoCycCutSub2: {part 2}
IF Repeats? AND ZShiftOnly? AND FeedConnect?
GetACZShiftExit
END
SetSRSubXY {restore SR to 1st position value}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN

Milling:
ToolPath
RETURN

XYZRep:
FindAnyZMoves
EachRep
DoCycleComment
IF NOT FirstCycle?
IF FeedConnect?
GetMoveSXYC
ELSE
GetMoveSXYC
IF FeedEntry?
GetRepZCP2
END
END
END
ToolPath
NextRep
RETURN

NoRepAutoCycle:
EACHFeat
DoCycleComment
GetMoveSXYC
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
RETURN

XYZRepAutoCycle:
EachRep
DoCycleComment
IF NOT FirstCycle?
GetStartPosC
END
EACHFeat
IF NOT FirstFeat?
DoCycleComment
GetMoveSXYC
END
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
NextRep
RETURN

ZonlyRepAutoCycle:
EACHFeat
DoCycleComment
GetMoveSXYC
AutoCycCutSub1
EachRep
IF NOT FirstCycle?
IF FeedConnect?
DoCycleComment
GetSXYMoveC
ELSE
DoCycleComment
GetSXYMoveC
IF FeedEntry? AND NOT FIFO?
GetRepZCP2
END
END
END
ToolPath
NextRep
AutoCycCutSub2
NEXTFeat
RETURN

DrillStuff:
GetDrillCP
RETURN

CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN

ProgStart:
InitProg
SetAbs
ReverseXZArcs
InitWFONum
Save# Num#('1') Num#('0') { MultipleParts Current Tool FirstOp# }
Save# Num#('2') Num#('0') { MultipleParts ToolOp# Counter }
Save# Num#('4') Num#('0') { SetACSPCompF SPX# }
Save# Num#('5') Num#('0') { SetACSPCompF SPY# }
Save# Num#('6') Num#('0') { ToolPath LastFeat EPX# }
Save# Num#('7') Num#('0') { ToolPath LastFeat EPY# }
Save# Num#('8') Num#('0') { ToolPath LastFeat EPZ#/Repeat FeedConnect FIRST SPZ# }
IF Metric?
Save# Num#('9') Num#('.03937007874') { SetScale1/RestoreScale1 }
SetFlag('1') { SetScale1/RestoreScale1 }
ELSE
Save# Num#('9') Num#('1') { SetScale1/RestoreScale1 }
SetFlagF('1') { SetScale1/RestoreScale1 }
END
SetFlagF('2') { TRUE = CRCOnC }
RETURN

SetDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN

OpGuts:
IF Milling?
GetZCP2C
IF AutoCycle?
IF Repeats?
IF ZShiftOnly?
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
ELSE
NoRepAutoCycle
END
SetPass1
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
Milling
END
END
GetZCP3C
ELSE
IF Drilling?
GetCycle
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStuff
END
ToolPath
NextRep
ELSE
DrillStuff
ToolPath
END
SetDrillEndOpZ
GetZCP3C
END
END
RETURN

InitOp:
FORMAT(Program#,7)
'0000 EZTRAK ' Program# ' MODE|INCH |' Date$ ' ' Time$ EOL
FORMAT(Program#,5)
IF UseComments? AND ProgramNameComment?
'( ' ProgramName$ ' )'
END
EOL
EachOp
IF FirstOperation?
IF ToolChangeAtHome?
SetHome
END
DoSetHome
END
NextOp
IF UseComments?
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
RestoreScale
RETURN

FirstOp1:
Plane { No output }
DoPartCycleComment
DoOpComments
DoPostScript
RETURN

FirstOp2:
CheckPass
GetStartPos
RETURN

FirstOp3:
GetOfstOn
RETURN

NewToolOp1:
GetLASTOfstOff
RETURN

NewToolOp2:
DoEndOpPS
IF ToolChangeAtHome?
GetHome
END
IF LAST ProgStop?
SeqLabC ' || STOP' EOL
ELSE
IF OptionalStops?
SeqLabC ' || STOP' EOL
END
END
RETURN

NewToolOp3: {Start new Operation}
Plane { No output }
DoPartCycleComment
DoOpComments
DoPostScript
RETURN

NewToolOp4:
CheckPass
GetStartPos
RETURN

NewToolOp5:
GetOfstOn
RETURN

SameToolOp1:
DoEndOpPS
IF LAST ProgStop?
GetLASTOfstOff
SeqLabC ' || STOP' EOL
END
RETURN

SameToolOp2: {Start new Operation}
Plane { No output }
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
RETURN

SameToolOp3: {Start new Operation}
GetStartPos
IF LAST ProgStop?
GetOfstOn
END
RETURN

End1:
GetOfstOff
RETURN

End2:
DoEndOpPS
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
GetFirstHome
END
IF ProgStop?
SeqLabC ' || STOP' EOL
END
RETURN

End3:
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}
IF FirstOperation?
FirstOp1
FirstOp2
FirstOp3
ELSE
IF NewTool?
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN

MP1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up}
IF FirstOperation?
IF FirstPart?
FirstOp1
FirstOp2
FirstOp3
END
ELSE
IF NewTool?
IF FirstPart?
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
END
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN

MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane}
IF FirstOperation?
IF FirstPart?
FirstOp1
FirstOp2
FirstOp3
END
ELSE
IF NewTool?
IF FirstPart?
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
END
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN

NoMPs: {no multiple parts}
IF FirstOperation?
FirstOp1
FirstOp2
FirstOp3
ELSE
IF NewTool?
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN

MasterSub:
IF MultipleParts?
IF AllToolsOnePart?
MPallTools1P
ELSE {implied OneToolAllParts?}
IF FullUp?
MP1ToollAllPfu
ELSE {implied ExitClearancePlane?}
MP1ToollAllPXcp
END
END
ELSE
NoMPs
END
RETURN

EndPartSub:
{End of program ************************************************************}

{finish last operation}
End1
End2
RETURN

DoNewPart:

{Finish off last Part}

IF FullUp?
GetOfstOff
END
{DoEndOpPS}

{Start new Part}

SameToolOp2
GetStartPos
IF FullUp?
GetOfstOn
END
RETURN

MPLoop:
Save# Num#('2') Recall# Num#('1')
IF WorkFixtureOffsets?
NewWFO
EachWFO
ELSE
EachPart
END
IF AllToolsOnePart?
EachOp
MasterSub
NextOp
EndPartSub
ELSE { OneToolAllParts }
EachOp
IF Equal? Operation# Recall# Num#('2') { Tool First Op }
IF FirstOperation? OR NewTool?
IF NOT FirstPart?
DoNewPart
END
END
MasterSub
IF LastOp?
IF LastPart?
Save# Num#('1') Num#('0')
END
Save# Num#('2') Recall# Num#('1')
ELSE
IF NEXT SameTool?
Save# Num#('2') NEXT Operation#
ELSE
IF LastPart?
Save# Num#('1') NEXT Operation#
Save# Num#('2') Num#('0')
ELSE
Save# Num#('2') Recall# Num#('1')
END
END
END
END
NextOp
END
IF WorkFixtureOffsets?
IncWFO
NextWFO
ELSE
NextPart
END
RETURN

{Start of executable Prog, Top Level ****}

ProgStart {setup and initializations}
InitOp

IF MultipleParts?
IF AllToolsOnePart?
MPLoop
ELSE
EachOp
IF FirstOperation?
Save# Num#('1') Operation#
END
NextOp
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
MPLoop MPLoop MPLoop MPLoop MPLoop
EndPartSub
END
ELSE
EachOp
MasterSub
NextOp
EndPartSub
END
End3


Wyszukiwarka