{10/2/96, updated to .14 format per Fanuc 6M (FW) B001.14, MPK}
{11/22/96 Versions: Catalyst v3.23C/Compost 4.21.37/v1.0b1 .14 Additions: Deleted Flag(2) for CRCOffsetC at ckCRC and ckCRCNum subs and at setup and initializations. Added NOT LastFeat? AND Equal? SPZ# EPZ# condition at ckCRCNum sub. Moved contents of FormatLine back to ToolPath LineFeat. Modified WorkFixtureOffset logic. Added Flag(2) for WFOStuff at setup and initializations. Added SetFlag(2) for EquallySpacedOffsets at OpenMP sub. Added WFONum sub. Rewrote logic at WFOStuff sub. Added EOL to NewWFO MP WFOStuff sub Warning. Deleted SeqC and EOL at WFOStuff sub. Added Flag(2) logic at start of EachOp/NextOp Loop. Moved WFOStuff after MP-OTAP-FU condition at FirstOperation and NewTool. Added WFOStuff for MP-OTAP-ECP condition at FirstOperation and NewTool. Added AbsOrInc Rapid to StrtPos block for MP-OTAP-ECP condition at FirstOperation and NewTool. Added SeqC and EOL at WFOStuff calls at GetStartOfSameTool, FirstOperation and NewTool. Added SetMaxFeed(12700) for Metric VNC files. Moved Speed SpinOn after MP-OTAP-FU condition at FirstOperation and NewTool. Added Speed SpinOn for MP-OTAP-ECP condition at FirstOperation and NewTool. DWB}
{2/25/97 Modified: Fanuc 6M M001.14 Created: Fanuc 6M M001.15 For: Gibbs & Associates Versions: Catalyst v3.30C/ComPost2 MSL 68K Added Flag(5) to Suppress Redundant WFO for MultipleParts WorkFixtureOffsets programs. Only concerns OneToolAllParts ExitClearancePlane situations. DWB}
{5/15/98, Updated: Fanuc 6M M001.15 Created: Fanuc 6M M001.16 For: Gibbs & Associates Versions: Catalyst v4.23.13(mac)/ComPost2 1.1b3 Update necessary to stay consistant with AdvancedMill Update. Added AbsValueC, IncValueC and AbsOrIncC Procedures. Simplifies readability of Prog. Reduces redundancy of output. Allows us to return to earlier versions Improves upon earlier problem with incremental output of ShiftPC command at CloseMP while allowing us to return to .85 OfstOff blocks. AbsValueC called from AbsOrIncC. IncValueC called from AbsOrIncC, DoAbsOrInc and DoDrillAbsOrInc. IncValueC called for OfstOff Blocks at NewToolOp1, two places at SameToolOp1 and DoAbsOrInc. AbsOrIncC called for ShiftPC Block at CloseMP. AbsOrIncC called from DoAbsOrInc, DoDrillAbsOrInc and RestoreAbsOrInc. AbsOrIncC called for Home Block at NewToolOp2. AbsOrIncC called for FirstHome Block at End2. Added DoWFOOps Procedure. Identicle to DoCSG52Ops sub in Fanuc 6M (PW) C001.16. Added CRCOffC at AutoCycCutSub2. Corrects unique situation in ZonlyRepAutoCycle where one Operation is CRCLeft and LastFeat is an ArcFeat followed by another Operation that is CRCRight. CRCOffC did not get output at end of CRCLeft Operation and CRCOnC did not get output at start of CRCRight Operation. Oddly, CRCOnC only outputs if CRCOffC has been output, not if CRCSide changes. Moved call to InitOp Procedure to top level at end of Prog. Personal Preference. 6/18/98 Changed to Lowercase Procedure Names. Added comments to all SetFlag, SetFlagF and IF Flag statements. Changed Seq to SeqC at autoCycCutSub1. Added CRCOffC to AutoCycle ZCP3C at end of IF Milling? Moved CRCOffC to before FeedC and RapidC for ZCP3C at end of IF Milling? To stay consistant with CRCOnC/CRCOffC Rapid/Feed/CWArc/CCWArc throughout Prog. Changed literal 'G80' to DrillOff at end of IF Drilling. Changed literal 'G80' to DrillOff at firstOp1 and newToolOp3. To allow for change in FORM without having to recompile. Changed SpeedC to Speed at for LAST ProgStop condition at sameToolOp3. 6/30/98 Deleted Gibbs System XYRepeat support. Virtual only supports ZShiftOnly Repeats. Rewrote OpGuts Procedure. Limited Milling Repeats to ZShiftOnly at IF Milling. Deleted Drilling Repeats at IF Drilling. Deleted UseSeparateSubCalls at ProgStart Procedure. Deleted SetMaxSeparateSubCalls('50') at ProgStart Procedure. Rewrote PostScript instructions at progStart. 7/22/98 Reverted back to Gibbs System XYRepeat support. IF setup correctly, Virtual will support XShift and/or YShift Repeats for both Contour and Patterns. Rules for correct setup (as best as I understand at the moment). Geometry CSGroup must be oriented to a plane that intersects CS#1 in a perpendicular direction. Example, XZPlane and YZPlane, and any oriented rotation of either Plane around the XYPlane. Any change in the ZPitch of the Origin will cause ZShiftOnly Repeat Operation. Set Desired ZStep so that Operation will result in multiple passes. NOTE: If correctly setup, ZStep would be misleading. Step will be in line with depth axis of CSGroup. Restored related code to OpGuts Procedure. ZShiftOnly Contour Operations remain Full SepSub. Any customer requesting G92 Style will require copying code from archives. Deleted Deceleration from ToolPath LineFeat and ArcFeat. There are plans to support this in the future through the use of Construction Tools in the Virtual Process. 7/30/98 Added forced FeedRate for RI-RO Milling Operations. When a RI-RO Operation follows either a FI-RO or RI-RO Operation, and both contain the same FeedRate values, the second Operation does not get a FeedRate output due to the conditional FeedRateC command. A problem arises for MultipleParts - OneToolAllParts - ExitClearancePlane Programs when both Operations use different Tools, and a third Operation uses the SameTool as the second Operation, but has a different FeedRate value. The result is that when the Program moves to machine the additional parts with the second Operation at the FeedRate value of the third Operation. It is safer to just force the FeedRate in the second Operation. Added FORMAT#7, '#' at Prog Numeric Format Definitions. Added RapidF# to Format#7 at Prog Numeric Format Definitions. RapidF# equals zero and this FORMAT allows for nothing to be output. Added RapidF# at EntryMove Procedure. Added FIRST modifier to ToolChangeAtHome Boolean at initOp Procedure. Reported bug caused PC to crash without this. 8/7/98 Moved IF ToolChangeAtHome? Boolean and SetHome command from InitOp to FirstOp1. Personal preference for moving Procedure call to top level at end of Prog on 5/15/98 was to reduce it to one occurance, consistant with LongHand version where it works. However, it was reported that the IF ToolChangeAtHome? Boolean and SetHome command occuring outside of EachOp/NextOp loop was causing Windows version to crash. Duplicating problem required having a part file open and a post processor loaded, and then opening a new part with one of the beta masters. I was not able to duplicate this on the Macintosh. Deleted FIRST modifier as this did not solve the problem. Added IF NOT AbsoluteMoves? Boolean and SetSRXYtoEP command to zonlyRep. This fixes problem with Incremental output of move back to StrtPos for additional passes. Added IF FirstOperation? OR NewTool? condition two places at entryMove Procedure. To force FeedEnt and RapidF#. SameTool condition outputs conditional FeedEntC. 9/24/98 Added Post Header Comment at top. Added missing END command at entryMove. Changed IncValue to incValueC at autoCycCutSub1. Changed AbsOrInc to absOrIncC at autoCycCutSub2. Changed AbsOrInc to absOrIncC at g92Sub. Added support of Incremental Output for SepSubs. When user selects Incremental Output, SepSubZMoves are incorrect. Added doSepSubZMoves Procedure. Contains code for ZPosMoves from zonlyRepAutoCycle and zonlyRep Procedures. Outputs Incremental ZExitMove for Exit/Entry. AutoCycles Retract to ZCP2. Non-AutoCycles Retract to ZCP3. Added setSepSubZ Procedure. Updates Status Register to final ZInPos for FeedEntry. Modified zonlyRepAutoCycle Procedure. Modified zonlyRep Procedure. 10/1/98 Versions: Virtual 4.29.75(Mac)/ComPost2 1.7b10 (Mac) Versions: Virtual 4.29.75(Win)/ComPost2 1.7b10 (Win) Corrected old problem with Incorrect Status Register XYPos at end of Pattern AutoCycle Operation. Problem is caused because Status Register is left in SetPass1 [ Contouring ] Mode and does not compensate for SetPass2 [ PointFeat Position ] Mode Coordinates Correction fixes known problems with Full Incremental Output. Correction also fixes known problems with MultipleParts EquallySpacedOffsets ShiftPC and UnshftPC commands. Added TrackXNO# to FORMAT#4 at Prog Numeric Format Definitions. Added TrackYNO# to FORMAT#4 at Prog Numeric Format Definitions. Added getACEPXY Procedure. Called from ToolPath PointFeat. Stores uncompensated LastFeat SPX# to Var(1). Stores uncompensated LastFeat SPY# to Var(2). Added setSRXYtoACEP Procedure. Called at end of OpGuts IF Milling. Adds SetPass1 LastFeat SPXY# to uncompensated SetPass2 LastFeat SPXY#. Added Var(1) for storage of XPosition at progStart Procedure. Added Var(2) for storage of YPosition at progStart Procedure. DWB}
{11/24/98 Updated: Fanuc 6M M001.16 Created: Fanuc 6M M001.16.1 For: Gibbs & Associates Versions: Virtual 5.03/ComPost2 1.7b11 Added Recall# to FORMAT#4 at Prog Numeric Format Definitions. Added ADD# to FORMAT#4 at Prog Numeric Format Definitions. Changed name of wFO procedure and all calls to wfo. Changed name of wFOStuff procedure and all calls to wfoStuff. Changed name of pSStuff procedure and all calls to psStuff. Moved absValueC, incValueC and absOrIncC procedures to before entryMove. Modified entryMove procedure regarding RapidF#. RapidF# works for FeedEntC. Deleted FIFO Boolean condition at finishSub1, autoCycCutSub2, zonlyRepAutoCycle and opGuts. Moved contents of formatArc to ToolPath. Added SetAbs and SetInc at setSepSubZ. Moved Connect command at zonlyRepAutoCycle. Deleted Variable(3) at progStart. Changed name of mPallTools1P procedure and all calls to mpAllTools1P. Changed name of mP1ToollAllPfu procedure and all calls to mp1ToollAllPfu. Changed name of mP1ToollAllPXcp procedure and all calls to mp1ToollAllPXcp. DWB}
{12/23/98 Updated: Fanuc 6M M001.16.1 Created: Fanuc 6M M001.16.2 For: Gibbs & Associates Versions: Virtual 5.03/ComPost2 1.7b11 Added IF NOT FirstFeat at toolPath PointFeat. Deleted FIRST modifier at setSepSubZ. Deleted FIRST modifier at zonlyRepAutoCycle. Deleted FIRST modifier at zonlyRep. Moved checkPass to before opGuts. Deleted FIRST modifier at opGuts Drilling. Deleted FIRST modifier at end2. DWB}
{2/15/99 Initial: Fanuc 6M M001.16.2 Created: Fanuc 6M [Pete] M001.16.2 ForUser: Pete Jackson Develop: Compost2 PPC 1.7b15, Virtual Gibbs 5.05 Comment: Arcs output as linear moves with .001 accuracy. Jim Radcliffe}
{02/15/99, Changed output to 6 digit accuracy. CDH}
restoreScale: IF Metric? {CAM file is in Metric, tools and tool path} SetScale('.03937007874') { change to English, this is an English post} END RETURN
wfo: 'G' NewWFO# RETURN
wfoStuff: IF NewWFO? IF MultipleParts? AND WorkFixtureOffsets? EOL '*** WARNING *** DO NOT USE NEWWFO() WITH MULTIPLE PARTS AND WORK FIXTURE OFFSETS' EOL ELSE wfo END ELSE IF Flag?('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } IF NOT SameTool? IF MultipleParts? IF WorkFixtureOffsets? WFO1 ELSE wfo END ELSE wfo END END END END SetFlagF('2') { Do not output WFO second time wfoStuff is called for MP-WFO-OTAP-ECP } 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
psStuff: IF FourthCW? FORMAT(FourthDegree#,2) SeqC 'A' FourthDegree# EOL FourthCWF END IF FourthCCW? FORMAT(FourthDegree#,3) SeqC 'A' FourthDegree# EOL FourthCCWF END IF FifthCW? FORMAT(FifthDegree#,2) SeqC 'B' FifthDegree# EOL FifthCWF END IF FifthCCW? FORMAT(FifthDegree#,3) SeqC 'B' FifthDegree# EOL FifthCCWF END RETURN
absOrIncC: IF AbsoluteMoves? absValueC ELSE incValueC END RETURN
entryMove: IF FirstOperation? OR NewTool? RapidF# { Forces FeedEnt/FeedRate } END IF FeedEntry? SeqC Feed ZIn FeedEntC EOL ELSE SeqC RapidC ZIn EOL END RETURN
startSub: OpenSub SubID EOL 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
doWFOOps: IF Flag?('5') SetFlagF('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP } ELSE SeqC SetWFO EOL END SeqC SubCall CallLab RepLab OnePart EOL RETURN
openMP: NewProg IF WorkFixtureOffsets? IF OneToolAllParts? AND ExitClearancePlane? SetFlag('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP } END NewWFO EachWFO {simple eachPart} doWFOOps IncWFO NextWFO {simple NextPart} startSub ELSE SeqC SubCall CallLab RepLab Parts EOL IF OneToolAllParts? AND ExitClearancePlane? SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } END startSub END RETURN
doAbsOrInc: IF Flag?('1') { Milling ZShiftOnly SepSubs/DrillSubs activated } IF ZMove? incValueC ELSE absOrIncC END END RETURN
doDrillAbsOrInc: IF Flag?('1') { DrillSubs activated } IF SPZMove? incValueC ELSE absOrIncC END END RETURN
restoreAbsOrInc: IF Flag?('1') { Milling ZShiftOnly SepSubs/DrillSubs activated } SeqC absOrIncC EOL END RETURN
ckCRC: IF LastFeat? CRCOffC ELSE IF NOT ZMove? CRCOnC END END RETURN
ckCRCNum: IF NOT LastFeat? AND Equal? SPZ# EPZ# CRCOffsetC END RETURN
getACEPXY: SetACSPCompF Save# Num#('1') SPX# { Status Register Variable for X Axis } Save# Num#('2') SPY# { Status Register Variable for Y Axis } SetACSPComp RETURN
setSRXYtoACEP: SetPass1 SetSRXYtoEP LoadFeat Num#('0') Num#('0') Num#('0') TrackXNO# ADD# Recall# Num#('1') SPX# { Status Register Variable for X Axis } TrackYNO# ADD# Recall# Num#('2') SPY# { Status Register Variable for Y Axis } RETURN
toolPath: ResetCRCNum EACHFeat IF PointFeat? IF AutoCycle? IF LastFeat? getACEPXY END SeqC MoveSXYC EOL SeqC SubCall CallLab EOL CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} ELSE IF NOT FirstFeat? SeqC doDrillAbsOrInc MoveSXYZC EOL END END ELSE IF RapidFeat? IF XMove? OR YMove? OR ZMove? SeqC doAbsOrInc ckCRC RapidC MoveXYZC ckCRCNum EOL END ELSE IF LineFeat? IF XMove? OR YMove? OR ZMove? SeqC doAbsOrInc ckCRC FeedC MoveXYZC FeedRateC ckCRCNum EOL END ELSE IF ArcFeat? EACHArcSegment SeqC doAbsOrInc ckCRC FeedC MoveXYZC ArcFeedC ckCRCNum EOL NEXTArcSegment END END END END NEXTFeat restoreAbsOrInc RETURN
autoCycCutSub2: {part 2} toolPath SeqC absOrIncC CRCOffC IF Repeats? AND FeedConnect? AND ZshiftOnly? ELSE RapidC ZCP2 END EOL SeqC EndSub EOL CloseSub 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 ELSE entryMove toolPath END RETURN
doSepSubZMoves: IF FeedConnect? SeqC FeedC ZInPlusInc FeedEnt EOL ELSE IF FeedEntry? IF NOT FirstCycle? SeqC RapidC ZCP2PlusInc EOL END SeqC Feed ZInPlusInc FeedEnt EOL ELSE IF FirstCycle? AND AutoCycle? Rapid END SeqC RapidC ZInPlusInc EOL END END SeqC SubCall CallLab EOL IF NOT FeedConnect? AND NOT AbsValue? TrackZNO# ZCP2PlusInc# SeqC ZCP2C EOL IF NOT AutoCycle? TrackZNO# ClearancePlane3# END END RETURN
zonlyRepAutoCycle: autoCycPat {write pattern moves and main calls} startSub NewProg EachCycle SetSRXYtoEP IF NOT FirstCycle? IF SPXMove? OR SPYMove? SeqC incValueC Connect StrtPosC EOL absOrIncC ELSE Connect END END SetStatusOn doSepSubZMoves SetStatusOff NextCycle SetStatusOn autoCycCutSub1 {build element sub} TrackZNO# SPZ# autoCycCutSub2 IF FeedConnect? IF NOT AbsValue? setSepSubZ END SeqC Rapid ZCP2 EOL END SeqC EndSub EOL CloseSub {Element shift, not pattern} RETURN
zonlyRep: EachCycle SetSRXYtoEP IF NOT FirstCycle? Connect IF SPXMove? OR SPYMove? SeqC StrtPosC EOL END END doSepSubZMoves NextCycle startSub TrackZNO# SPZ# toolPath finishSub1 SeqC EndSub EOL CloseSub IF FeedConnect? AND NOT AbsValue? setSepSubZ END RETURN
skipToLastFeat: EachFeat IF LastFeat? TrackXNO# SPX# TrackYNO# SPY# END NextFeat RETURN
setDrillEndOpZ: IF RetractToCP1? TrackZNO# ClearancePlane1# ELSE TrackZNO# ClearancePlane2# END RETURN
checkPass: {use the correct StrtPos} IF AutoCycle? SetPass2 ELSE SetPass1 END RETURN
opGuts: IF Milling? SeqC ZCP2C EOL IF Repeats? NewProg IF ZshiftOnly? IF AutoCycle? {incremental Autocycle sub can have Z moves} zonlyRepAutoCycle ELSE {Z shift only, NOT Auto Cycle} SetFlag('1') { Milling ZShiftOnly SepSubs activated } zonlyRep SetFlagF('1') { Milling ZShiftOnly SepSubs deactivated } END {end Auto Cycle IF} ELSE {not Z only} g92Sub END {end Z only IF} ELSE {no repeat OPs} milling END IF AutoCycle? SeqC CRCOffC ZCP3C EOL setSRXYtoACEP ELSE SeqC CRCOffC RapidC ZCP3C EOL END ELSE IF Drilling? SeqC DrillCP EOL GetCycle SeqC Cycle FromCP StrtPos ZDepth RLevel Dwell Peck Retract FeedEnt EOL IF CallMasterOp? SeqC SubCall CallLabB CallMasterNum# EOL skipToLastFeat ELSE TrackZNO# SPZ# IF MasterOp? SetFlag('1') { DrillSubs activated } NewMasterProg SeqC SubCall CallLab EOL startSub toolPath SeqC EndSub EOL CloseSub SetFlagF('1') { DrillSubs deactivated } ELSE toolPath END END setDrillEndOpZ SeqC DrillOff Rapid ZCP3 EOL END END RETURN
progStart: InitProg ReverseXZArcs InitWFONum SetArcSegmentAccuracy('.001') SetFlood SetMaxRPM('10000') IF Metric? SetMaxFeed('12700') ELSE SetMaxFeed('500') END Save# Num#('1') Num#('0') { Status Register Variable for X Axis } Save# Num#('2') Num#('0') { Status Register Variable for Y Axis } SetFlagF('1') { Milling ZShiftOnly SepSubs/DrillSubs deactivated } SetFlagF('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } SetFlagF('5') { Suppress Redundant WFO for MP-WFO-OTAP-ECP } IF PSComment? AND UseComments? 'Utility Data:' EOL ' At Op Start: All literals and commands will appear at the beginning of the operation.' EOL ' At Op End: All literals and commands will appear at the end of the operation.' 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 ' NewWFO(56), NWFO(56) -' EOL ' The Work Fixture Offset # you specify will be used for all following operations.' EOL ' Do not use with the ncPost multiple part option.' 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 RETURN
initOp: EOR EOL ProgID1 IF UseComments? AND ProgramNameComment? '( PROGRAM: ' 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 RETURN
firstOp1: IF ToolChangeAtHome? SetHome END Seq Plane CRCOff DrillOff EOL SeqC OpToolID EOL SeqC ToolChng EOL doOpComments doPostScript RETURN
newToolOp2: doEndOpPS IF ToolChangeAtHome? SeqC absOrIncC Rapid Home SpinOff EOL ELSE SeqC SpinOff EOL END IF LAST ProgStop? SeqC 'M0' EOL ELSE SeqC ProgStop EOL END RETURN
sameToolOp1: doEndOpPS IF LAST ProgStop? SeqC CoolOff EOL SeqC incValueC OfstOff EOL SeqC SpinOff EOL SeqC 'M0' EOL ELSE IF CoolOff? AND LAST NOT CoolOff? SeqC CoolOff EOL END IF NewToolOffset? SeqC incValueC OfstOff EOL END END RETURN
sameToolOp2: {Start new Operation} doOpComments doPostScript checkPass RETURN
sameToolOp3: {Start new Operation} SeqC wfoStuff EOL IF LAST ProgStop? SeqC PlaneC AbsOrInc Rapid StrtPos Speed SpinOn EOL SeqC OfstOn EOL SeqC CoolOn EOL ELSE SeqC PlaneC AbsOrInc Rapid StrtPos SpeedC EOL IF NewToolOffset? SeqC OfstOn EOL END IF NOT CoolOff? AND LAST CoolOff? SeqC CoolOn EOL END END RETURN
end2: doEndOpPS IF ToolChangeAtHome? SeqC absOrIncC Rapid FirstHome SpinOff EOL ELSE SeqC SpinOff EOL END IF ProgStop? SeqC 'M0' EOL END RETURN
end3: SeqC EOP EOL CloseSub Post2 {organize Subs into one program} EOR EOL 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 RETURN
mpAllTools1P: {Multiple Parts, All Tools 1 Part} EachOp {Start of post processing} IF EquallySpacedOffsets? SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } END IF FirstOperation? openMP firstOp1 firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 newToolOp2 {to tool change, CS problem} newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} end1 end2 closeMP end3 RETURN
mp1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up} EachOp {Start of post processing} IF EquallySpacedOffsets? SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } END IF FirstOperation? firstOp1 openMP firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 closeMP newToolOp2 {to tool change, CS problem} newToolOp3 openMP newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} end1 closeMP end2 end3 RETURN
mp1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane} EachOp {Start of post processing} SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } IF FirstOperation? firstOp1 firstOp2 firstOp3 openMP firstOp2 {need StrtPos in Sub} ELSE IF NewTool? closeMP newToolOp1 newToolOp2 {to tool change, CS problem} newToolOp3 newToolOp4 newToolOp5 openMP newToolOp4 {need StrtPos in Sub} ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} closeMP end1 end2 end3 RETURN
noMPs: {no multiple parts} EachOp {Start of post processing} SetFlag('2') { Need to output wfoStuff twice for MP-ESO-OTAP-ECP, once for all others } IF FirstOperation? firstOp1 firstOp2 firstOp3 ELSE IF NewTool? newToolOp1 newToolOp2 newToolOp3 newToolOp4 newToolOp5 ELSE {implied SameTool?} sameToolOp1 sameToolOp2 sameToolOp3 END END {common point for all operations} opGuts NextOp {loops back to EachOP until last Operation} end1 end2 end3 RETURN
{Start of executable Prog, Top Level ****}
progStart {setup and initializations} initOp
IF MultipleParts? IF AllToolsOnePart? mpAllTools1P ELSE {implied OneToolAllParts?} IF FullUp? mp1ToollAllPfu ELSE {implied ExitClearancePlane?} mp1ToollAllPXcp END END ELSE noMPs END