plik


{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

Wyszukiwarka