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