BP I ProtoTRAK M493 87


{Change Comments ***********************************************************}

{4/15/92
Copied & modified: LongHand2 M001.81.
For: Hi-Stat.
Machine: BridgePort Series I
Control: ProtoTRAK Plus
This Post Processor supports both Absolute and Incremental output.
This Post Processor does not support Sub-Programs.
Though this is a 2-Axis Mill, the control will accept ZMoves.
It will stop whenever a ZMove is encountered so Operator can manually raise the Spindle.
3 Rules to follow:
G Codes must be on every line.
G codes must have spaces between them.
End of block character must be semicolon.
Var(1) stores the current ZPos.
Var(2) stores the next ZPos.
These two are compared for the purposes of suppressing any lines containing only Rapid or Feed.
DWB}

{9/1/92
Modified: BP I ProtoTRAK M493.81.
For: Hi-Stat.
Converted per LongHand [AbsOrInc] M001.81.1
This Post Processor supports MultipleParts.
Changed usage of Var(1) and Var(2) to LoadFeat routines.
DWB}

{10/12/92
Modified: BP I ProtoTRAK M493.81.1
For: Hi-Stat.
Changes made per conversation with Doug Wiltanger at Hi-Stat.
Changed Arcs Stop On Quadrants to TRUE in Mach Spec.
Changed CRCOffsetC to call to CheckCRCOffsetC sub at StdLine.
CheckCRCOffsetC sub that outputs ' D' ToolDiameter# based on status of Flag(1).
DWB}

{11/12/92
Modified: BP I ProtoTRAK M493.81.2
For: Hi-Stat.
Changes made per conversation with Dan Williams at Hi-Stat.
Deleted G17, G18 and G19 in Mach Spec.
Changed Format#2 from ###.###;0. to ##0.0##;0 in Prog and Mach Spec.
Changed Format#3 from *###.###;0. to *##0.0##;0 in Prog.
Changed Format#4 from ####.####;0. to ###0.0###;0 in Prog and Mach Spec.
Changed Formats for G and M-codes from #0 to 00 in Mach Spec.
Deleted all WorkFixtureOffset Commands and routines.
Deleted EntryMove sub and all calls to same.
Deleted LoadFeat and IF ZMove at ExitMove sub.
Changed ZCP2C to ZCP2 at ExitMove sub.
Deleted ExitMove2 sub and call to same.
Changed MoveXYZC to MoveXY at FormatArc sub.
Changed ArcIJC to ArcIJ at FormatArc sub.
Changed all occurances of MoveXYZC to MoveXYC.
Deleted OR ZMove? at StdLine sub.
Deleted OR SPZMove? at ToolPath PointFeat.
Deleted IF ZMove? at ToolPath AutoCycle LineFeat.
Added CRCOnC and CheckCRCOffset at ToolPath ArcFeat.
Deleted Milling sub.
Changed all calls to Milling sub to ToolPath.
Deleted ZCP2 at XYZRep sub.
Deleted all Z related Commands and routines for Drilling Operations.
Deleted FromCP and StrtPos from Drill Cycle Block.
Changed ' G80' CRCOffC to Rapid AbsOrInc Preset ' X0 Y0 Z0' at safe start at FirstOperation.
Changed OpToolID ToolChng to ' T1 M16' at FirstOperation.
Moved Speed SpinOn to StrtPos block at FirstOperation and NewTool.
Deleted AbsOrInc from StrtPos block at FirstOperation, NewTool and SameTool.
Changed OfstOn to ' G45' ToolOfst ZCP1 OpToolID at FirstOperation, NewTool and SameTool.
Moved ' G45' block to before StrtPos block.
Changed IncValue OfstOff to ' G28 Z15.0' at NewTool, SameTool and end of Prog.
Deleted ToolChangeAtHome at NewTool.
Deleted SpinOff at NewTool and SameTool.
Changed ' M0' to ' M00' at NewTool, SameTool and end of Prog.
Deleted ZCP2 at IF Milling.
Outputting ZCP3 for standard Milling with no Repeats, not outputting for AutoCycles at IF Milling.
Deleted ZCP3 at IF Drilling.
Changed FIRST ToolChangeAtHome to ' G28 X0 Y0' at end of Prog.
Added ToolChng to block prior to EOP at end of Prog.
DWB}

{11/6/94
Updated: BP I ProtoTRAK M493.81.3
For: Gibbs & Associates
Versions: ncCad 4.33/ncCAM 4.33/ncPost 4.33.03/Compost 4.21.23
Changes made per Pete Jackson
Updated to Version 4.2 per LongHand M001.81.3a Format.
This supports MultipleParts.
Using Var(1), Var(2) and Var(3) for logical control of MultiplePart Operations.
Using Var(4), Var(5), Var(6) and Var(7) for correct Positioning of AutoCycles that Repeat in
X and/or Y, and when AbsoluteMoves = FALSE.
Added Tag# to FORMAT5.
Added Recall# to FORMAT5.
Changed logic of MPLoop sub to handle IF NewTool? and LastOp? situations.
Commented out DoEndOpPS at MPLoop for OneToolAllParts, it does not work correctly.
Added CRCOffC per version 4.2.
CutterRadiusCompensation ExitLength will output G40 on LastFeat AND LineFeat at StdLine sub.
Added Move to ZInC for Non-AutoCycle FeedConnect Repeats with ZMoves at ExitMove sub.
Moved DoCycleComment call to before StrtPos move in related subs.
Added BadMPWFOReport sub.
Reports when MultipleParts AND WorkFixtureOffsets = TRUE AND EquallySpacedOffset values exist.
Added FORMAT8, 'Ä…#bbbb.bbbb#', for PartShiftX#, PartShiftY# and PartShiftZ# commands.
Moved SeqC and EOL outside of IF ELSE condition at ExitMove sub.
Moved SeqC AbsOrInc and EOL outside of IF ELSE condition at AutoCycCutSub2 sub.
Deleted ReSetPass2 at end of ZonlyRepAutoCycle sub.
Already executed at end of call to AutoCycCutSub2 sub.
Added support of CRC during multiple pocket dog-bone operation.
Added condition to output CRCOnC for XMove OR YMove only at CkCRC sub.
Outputs G41/G42 on First LineFeat after Z Plunge.
Modified condition to output CRCOffC for ZMoveOnly Feature at ToolPath RapidFeat.
Assures that G40 is not output prior to LastFeat.
Added CRCOffC to RapidFeat at ToolPath.
Outputs G40 at all Z Retract blocks.
DWB}

{2/9/96, Updated .81 number to .84, no changes necessary, MPK}

{3/22/96, Tested ZOnlyRepAutCycle, Incremented number to .87, MPK}

{Prog Numeric Format Definitions *******************************************}

#1 = '#.00'
#2 = '##0.0##;0'
#3 = '*##0.0##;0'
#4 = '###0.0###;0'
#5 = '#######0'
#6 = '####^###0'
#7 = '#'
#8 = 'Ä…#bbbb.bbbb#'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(ToolDiameter#,4) {.72}
FORMAT(Tag#,5)
FORMAT(Recall#,5)
FORMAT(Program#,5) {.72}
FORMAT(Operation#,5) {.72}
FORMAT(Tool#,5) {.72}
FORMAT(Parts#,5) {.72}
FORMAT(Dwell#,6) {.72}
FORMAT(RapidF#,7)
FORMAT(PartShiftX#,8)
FORMAT(PartShiftY#,8)
FORMAT(PartShiftZ#,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

DoPartCycleComment:
IF MultipleParts? AND UseComments? AND SubComment?
'( PART NO. ' Tag# ' )' 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

BadMPWFOReport:
SetStatusOff
' ' EOL
'Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„' EOL
'Ä„ NOTE: Even though you have elected to Ä„' EOL
'Ä„ process this file using Multiple Ä„' EOL
'Ä„ Parts with Work Fixtures, there exist Ä„' EOL
'Ä„ non-zero values in the invisible, Ä„' EOL
'Ä„ Equally SpacedÉ fields, as follows: Ä„' EOL
'Ä„ Ä„' EOL
'*****************************************' EOL
IF NotEqual? PartShiftX# Num#('0')
' X axis shift = ' PartShiftX# EOL
END
IF NotEqual? PartShiftY# Num#('0')
' Y axis shift = ' PartShiftY# EOL
END
IF NotEqual? PartShiftZ# Num#('0')
' Z axis shift = ' PartShiftZ# EOL
END
'*****************************************' EOL
'Ä„ Ä„' EOL
'Ä„ Please reset these values to zero as Ä„' EOL
'Ä„ they affect the coordinate values Ä„' EOL
'Ä„ output, starting with Part# 2. Ä„' EOL
'Ä„ Thank You. Ä„' EOL
'Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„Ä„' EOL
' ' EOL
SetStatusOn
RETURN

PSInit: {reset flags}
RotateF
RETURN

PSStuff: {revised.72}
IF FourthCW?
FORMAT(FourthDegree#,2)
SeqC Rapid ' A' FourthDegree# EOL
FourthCWF {reset flag}
END
IF FourthCCW?
FORMAT(FourthDegree#,3)
SeqC Rapid ' A' FourthDegree# EOL
FourthCCWF {reset flag}
END
IF FifthCW?
FORMAT(FifthDegree#,2)
SeqC Rapid ' B' FifthDegree# EOL
FifthCWF {reset flag}
END
IF FifthCCW?
FORMAT(FifthDegree#,3)
SeqC Rapid ' B' FifthDegree# EOL
FifthCCWF {reset flag}
END
RETURN

DoPostScript:
PSInit
EachPS
SeqC PostScript EOL {literals}
PSStuff {commands}
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL {literals}
PSStuff {commands}
NextPS
RETURN

EntryMove:
{ Deleted 11/12/92 }
RETURN

GetConnect:
IF FeedConnect?
Feed
ELSE
Rapid
END
RETURN

ExitMove:
SeqC
IF FeedConnect?
IF NOT AutoCycle?
IF NOT NoZMoves?
Feed ZIn FeedEntC
END
END
ELSE
CRCOffC
IF FIFO? { .81 }
Feed
ELSE
Rapid
END
PRIME ZCP2
IF FIFO? { .81 }
FeedEntC
END
END
EOL
RETURN

ExitMove2:
{ Deleted 11/12/92 }
RETURN

CycleWarning:
{ NOTE: This Post Processor takes care of Z Clearance. }
RETURN

FormatArc:
IF ArcCW?
CWArc
ELSE
CCWArc
END
MoveXY ArcIJ
RETURN

CkCRC: { 4.2 }
IF LastFeat? { Exit Length Feature }
CRCOffC
ELSE
IF XMove? OR YMove? { Approach Length Feature and Multiple Pockets }
CRCOnC
END
END
RETURN

CheckCRCOffsetC:
IF Flag?('1')
ELSE
SetFlag('1')
IF CutterRadiusCompensation?
' D' ToolDiameter#
END
END
RETURN

StdLine: {enables CRC on first call, .70}
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC CkCRC Feed MoveXYC FeedRateC CheckCRCOffsetC EOL
DecelMove2
END
SeqC CkCRC Feed MoveXYC DecelFeed CheckCRCOffsetC EOL
ELSE
IF XMove? OR YMove?
SeqC CkCRC Feed MoveXYC FeedRateC CheckCRCOffsetC EOL
END
END
RETURN

ToolPath:
SetFlagF('1') { ResetCRCNum }
EACHFeat
IF PointFeat? { Drilling Only }
IF SPXMove? OR SPYMove?
SeqC Rapid MoveSXYC EOL
END
ELSE
IF RapidFeat?
IF AutoCycle?
IF LastFeat?
CRCOffC {.70}
END
SeqC Rapid MoveXYC EOL
ELSE
IF NOT XMove? AND NOT YMove?
SeqC CRCOffC EOL {.82}
END
IF XMove? OR YMove?
SeqC Rapid MoveXYC EOL {.82}
END
END
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop }
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
END
IF AutoCycle?
SetAbs
Save# Num#('6') SUB# EPX# CurOriginPosX#
Save# Num#('7') SUB# EPY# CurOriginPosY#
SetInc
END
END
NEXTFeat
RETURN

WFOStuff:
{ NOTE: This Post Processor does not support WorkFixtureOffsets. }
RETURN

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

AutoCycCutSub2: {part 2}
SeqC AbsOrInc
IF FIFO? {.81}
Feed ZCP2 FeedEntC {.71.2 removed CRCOffC, gets turned off in ToolPath}
ELSE
Rapid ZCP2
END
EOL
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN

Milling:
ToolPath
RETURN

XYZRep:
CycleWarning
FindAnyZMoves
EachRep
DoCycleComment
IF NOT FirstCycle?
SeqC CRCOffC GetConnect StrtPosC EOL
END
ToolPath
ExitMove
NextRep
RETURN

NoRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
SeqC Rapid MoveSXYC EOL
END
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
RETURN

XYZRepAutoCycle:
CycleWarning
EachRep
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
SeqC GetConnect MoveSX MoveSY EOL
END
SetAbs
Save# Num#('4') SPX#
Save# Num#('5') SPY#
SetInc
AutoCycCutSub1
Milling
AutoCycCutSub2
SetAbs
TrackXNO# ADD# Recall# Num#('4') Recall# Num#('6')
TrackYNO# ADD# Recall# Num#('5') Recall# Num#('7')
SetAbsOrInc
NEXTFeat
NextRep
RETURN

ZonlyRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
SeqC GetConnect MoveSXYC EOL
END
AutoCycCutSub1
EachRep
IF NOT FirstCycle?
IF NOT FeedConnect?
ExitMove
END
DoCycleComment
IF SPXMove? OR SPYMove?
SeqC GetConnect MoveSXYC EOL
END
END
ToolPath
NextRep
AutoCycCutSub2
NEXTFeat
RETURN

DrillStuff:
GetCycle
SeqC Cycle RLevel ZDepth Dwell Peck Retract FeedEnt EOL
RETURN

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

GetStartOfSameTool:
Plane
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
RETURN

MasterSub:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE
IF ToolChangeAtHome?
SetHome
END
Seq Plane Rapid AbsOrInc Preset ' X0 Y0 Z0' EOL
SeqC ' T1 M16' EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC Rapid StrtPos Speed SpinOn EOL
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC CoolOn EOL
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
ELSE

{Finish off last Operation}

SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
DoEndOpPS
IF LAST ProgStop?
SeqC ' M00' EOL
ELSE
SeqC ProgStop EOL
END

{Start new Operation}

PlaneC
Seq ToolChng EOL
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos Speed SpinOn EOL
SeqC CoolOn EOL
END
ELSE
IF SameTool?
DoEndOpPS
IF LAST ProgStop?
SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
SeqC ' M00' EOL

{Start new Operation}

GetStartOfSameTool
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos SpeedC SpinOn EOL
SeqC CoolOn EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
IF NewToolOffset?
SeqC ' G28 Z15.0' EOL

{Start new Operation}

GetStartOfSameTool
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos SpeedC EOL
ELSE

{Start new Operation}

GetStartOfSameTool
SeqC Rapid StrtPos SpeedC EOL
END
IF NOT CoolOff? AND LAST CoolOff?
SeqC CoolOn EOL
END
END
END
END
END {common point for all operations}
RapidF# { No Output }
IF Milling?
IF AutoCycle?
IF Repeats?
IF ZshiftOnly?
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
ELSE
NoRepAutoCycle
END
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
Milling
END
END
SeqC CRCOffC EOL
ELSE
IF Drilling?
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStuff
END
ToolPath
NextRep
ELSE
DrillStuff
ToolPath
END
SeqC ' G80' EOL
END
END
RETURN

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

{finish last operation}
SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
DoEndOpPS
SeqC ' G28 X0 Y0' SpinOff EOL
IF ProgStop?
SeqC ' M00' EOL
ELSE
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart?
SeqC ProgStop EOL
END
END
RETURN

MPLoop:
TagInit
IF AllToolsOnePart?
EachPart
TagInc
EachOp
MasterSub
NextOp
EndPartSub
NextPart
ELSE { OneToolAllParts }
Save# Num#('2') Recall# Num#('1')
IF LTEqual? Recall# Num#('1') Recall# Num#('3')
EachOp
IF Equal? Operation# Recall# Num#('2')
Save# Num#('2') ADD# Operation# Num#('1')
IF NewTool?
IF Equal? Recall# Num#('1') Recall# Num#('3')
Save# Num#('2') Operation#
ELSE
IF NotEqual? Recall# Num#('1') SUB# Recall# Num#('2') Num#('1')
Save# Num#('2') SUB# Operation# Num#('1')
END
END
END
END
NextOp
EachPart
TagInc
EachOp
IF GTEqual? Operation# Recall# Num#('1')
IF LTEqual? Operation# Recall# Num#('2')
IF Equal? Operation# Recall# Num#('1')
IF NOT FirstPart?

{Finish off last Operation}

IF FullUp?
SeqC CoolOff EOL
SeqC ' G28 Z15.0' EOL
END
{DoEndOpPS}

{Start new Operation}

PlaneC
GetStartOfSameTool
SeqC ' G45' ToolOfst ZCP1 OpToolID EOL
SeqC Rapid StrtPos SpeedC EOL
IF FullUp?
SeqC CoolOn EOL
END
END
END
MasterSub
END
END
NextOp
NextPart
Save# Num#('1') ADD# Recall# Num#('2') Num#('1')
END
END
RETURN

{Start of executable Prog **************************************************}

{setup and initializations}
InitProg
ReverseXZArcs
SetFlood
SetMaxRPM('10000')
SetMaxFeed('500')
Save# Num#('1') Num#('0') { This Tool FirstOp# }
Save# Num#('2') Num#('0') { This Tool LastOp# }
Save# Num#('3') Num#('0') { LastOp# }
Save# Num#('4') Num#('0') { XPos Status Register Updated Position for Repeated AutoCycles }
Save# Num#('5') Num#('0') { YPos Status Register Updated Position for Repeated AutoCycles }
Save# Num#('6') Num#('0') { LastFeat EPX# AbsPosValue for Repeated AutoCycles }
Save# Num#('7') Num#('0') { LastFeat EPY# AbsPosValue for Repeated AutoCycles }
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
' 4thAxisCW(12.5), 4ACW(12.5) -' EOL
' generates a + A move of the value you specify' EOL
' 4thAxisCCW(22.5), 4ACCW(22.5) -' EOL
' generates a - A move of the value you specify' EOL
' 5thAxisCW(30), 5ACW(30) -' EOL
' generates a + B move of the value you specify' EOL
' 5thAxisCCW(22.5), 5ACCW(22.5) -' EOL
' generates a - B move of the value you specify' EOL
END
EOR EOL
ProgID1
IF UseComments? AND ProgramNameComment?
'( ' ProgramName$ ' )'
END
EOL
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
OpenSub
RestoreScale
IF MultipleParts?
Save# Num#('1') Num#('1')
IF WorkFixtureOffsets?
IF NotEqual? PartShiftX# Num#('0')
BadMPWFOReport
ELSE
IF NotEqual? PartShiftY# Num#('0')
BadMPWFOReport
ELSE
IF NotEqual? PartShiftZ# Num#('0')
BadMPWFOReport
END
END
END
END
EachOp
IF LastOp?
Save# Num#('3') Operation#
END
NextOp
MPLoop
IF OneToolAllParts?
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
SeqC ToolChng EOL
SeqC EOP EOL
EOR 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


Wyszukiwarka