{Change Comments ***********************************************************}
{9/19/89
Copied and Modified: Dynapath Sys 20M M074.54
For: Augustine Tool
Made modifications per Gary Augustine and phone conversation.
Moved CoolOn to block containing ZCP2.
Moved CRCOffC to block following ZCP3.
Deleted all occurances of CRCOffsetC.
TF}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{4/16/91
Copied & modified: Dynapath Sys 20M M074.55
For: Gibbs & Associates
Machine:
Control: Dynapath 10M
Updated to Version 4.0 per Fanuc 6M M001.80 Format.
Made major modifications per conversation with Dale Bachman at Dynapath Systems, Inc.
This processor is conversational for Text and Sub Calls only.
Added Flag('1') to check if CRCOn (G41/G42) has been output.
CutterRadiusCompensation rules:
CRCOn (G41/G42) must only be activated when Feed (G1), CWArc (G2) or CCWArc (G3) are active.
Added logic to output FeedC (G1) when it's time to output CRCOn (G41/G42) in StdLine Sub.
Control requires CRCOff (G40) DummyMove on line preceeding CRCOn (G41/G42).
Added logic to output CRCOff (G40) SPX# SPY# in TurnOnCRC Sub.
Rapid (G0) must NOT be output while CRCOn (G41/G42) is active.
When RapidFeat, CutterRadiusCompensation and Flag('1') are TRUE:
Added logic to output FeedC (G1) MoveXYZC RapidFC (F199.1) where needed in Prog.
RapidFC set to output F199.1 in Mach Spec.
Control requires CRCOff (G40) DummyMove when cancelling CRCOn (G41/G42).
Customer requested that CRCOff (G40) be output after move to clearance plane
Added logic to output following code in TurnOffCRC Sub, per Dynapath Rules.
SeqLab Incvalue EOL
SeqLab CRCOff MoveXY EOL
SeqLab AbsValue EOL
DWB}
{* 12/15/93, [cwh]
Modified : Dynapath 20M M074.80
To : Dynapath 20M M074.80.1
For :
Changes :
Added the format line for 'RapidF#' to properly format the 'RapidFC' command.
*}
{
Format: Dynapath 20M M074.80
1/19/95
Updated to C Style post per C001.05
Changed use of Flag('1') for CRC detection (above) to Flag('9')
TH}
{ Added ClearCSOffset to SubCSMP TH}
{8/23/95 - Updated to .10 format TH}
{1/17/96, Updated .10 to .11 version, MPK}
{3/25/96, Tested ZOnlyRepAutoCycle, Changed version # to .12, MPK}
{4/7/98
Copied: Dynapath 20M C074.12
Created: Dynapath 20M [SDT] CV52.15
For: Serv-All Die and Tool Co.
Machine:
Control:
Versions: Catalyst v4.23.13(mac)/ComPost2 1.1b3
Changes made per Larry Martin of Serv-All Die and Tool Co.
Updated for Catalyst v3.35C per LongHand (FW) C001.15 Format.
Customer requested that Line Numbers be reset to 1 when N9999 Limit is reached.
Added Var(4).
Counter Increments by 1 for every block output.
Added ctBlk sub.
Called prior to every EOL.
Increments Var(4) when IF NOT EmptyLine? = TRUE.
Added GetSeqLab sub.
Called at start of every block.
Tests Var(4).
If Var(4) is Equal to 9999, post outputs ASCII(166) Line Reseting character 'Ś' plus Number '1'.
This causes Retag to reset SeqLab to N1.
DWB}
{Prog Numeric Format Definitions ****}
#1 = '#.00'
#2 = '#####.##;0.'
#3 = '*#####.##;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '###.#;0'
#7 = '00'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(Retract#,4)
FORMAT(CSOffsetA#,3)
FORMAT(CSOffsetB#,3)
FORMAT(ToolDiameter#,4)
FORMAT(CSOffsetX#,4)
FORMAT(CSOffsetY#,4)
FORMAT(CSOffsetZ#,4)
FORMAT(TrackXNO#,4)
FORMAT(TrackYNO#,4)
FORMAT(TrackZNO#,4)
FORMAT(Recall#,5)
FORMAT(PartNum#,5)
FORMAT(Program#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(Parts#,5)
FORMAT(Dwell#,6)
FORMAT(RapidF#,6)
FORMAT(ADD#,7)
FORMAT(CS#,7)
FORMAT(NewWFO#,7)
{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
ctBlk: { For Resetting Line Numbers at N9999 }
IF NOT EmptyLine?
Save# Num#('4') ADD# Recall# Num#('4') Num#('1')
END
RETURN
GetSeqLab: { For Resetting Line Numbers at N9999 }
IF Equal? Recall# Num#('4') Num#('9999')
ASCII('166') '1' EOL { ASCII 166 = Ś }
Save# Num#('4') Num#('0')
END
SeqLab
RETURN
Get$: { For conversational output }
IF NOT EmptyLine?
'$'
END
RETURN
TurnOnCRC:
IF CutterRadiusCompensation? AND NOT Flag?('5')
SetFlag('5')
GetSeqLab FeedC ctBlk EOL
GetSeqLab CRCOff MoveSX MoveSY ctBlk EOL
END
RETURN
TurnOffCRC: { Customer requested this to occur after move to ClearancePlane }
IF CutterRadiusCompensation? AND Flag?('5')
SetFlagF('5')
IF AbsValue?
GetSeqLab IncValue ctBlk EOL
GetSeqLab CRCOff 'X0.Y0.' ctBlk EOL
GetSeqLab AbsValue ctBlk EOL
ELSE
GetSeqLab CRCOff 'X0.Y0.' ctBlk EOL
END
END
RETURN
CSPartNum#:
ADD# CS# MUL# NumOfCS# SUB# PartNum# Num#('1')
RETURN
CSWFO:
'E' ADD# CSPartNum# Num#('0')
RETURN
WFO:
'E' ADD# PartNum# Num#('0')
RETURN
WFOStuff:
IF Flag?('2')
IF NOT SameTool?
IF WFOCS?
CSWFO
ELSE
IF MultipleParts? AND WorkFixtureOffsets?
WFO
ELSE
WFO1
END
END
ELSE
IF WFOCS?
IF ChangeCS?
CSWFO
END
END
END
END
SetFlagF('2')
RETURN
DoCSComment:
IF AAxisAvail? OR BAxisAvail?
GetSeqLab '(T) CS#' CS# ' - ' CSComment$ '$' ctBlk EOL
END
RETURN
DoCSWFOComment:
IF AAxisAvail? OR BAxisAvail?
IF FirstOperation? OR NewTool? OR ChangeCS?
GetSeqLab '(T) ' CSWFO ' = X' CSOffsetX# ' Y' CSOffsetY# ' Z' CSOffsetZ# '$' ctBlk EOL
SetFlag('2') { WFOStuff }
END
ClearCSOffset
END
RETURN
CSComments:
IF WFOCS?
IF MultipleParts?
IF OneToolAllParts? AND ExitClearancePlane?
ClearCSOffset { Necessary for correct StrtPos in Main }
END
END
DoCSComment
DoCSWFOComment
ELSE
DoCSComment
END
RETURN
DoPartCycleComment:
IF MultipleParts? AND UseComments? AND SubComment?
GetSeqLab '(T) PART NUMBER ' PartNum# Get$ ctBlk EOL
END
RETURN
DoCycleComment:
IF UseComments? AND SubComment?
GetSeqLab '(T) CYCLE START' Get$ ctBlk EOL
END
RETURN
DoOpComments:
IF UseComments?
SetScale('1')
IF OperationIDComment?
GetSeqLab '(T) OPERATION ' Operation# ' ' OperationType$ Get$ ctBlk EOL
END
IF OperationComment?
GetSeqLab '(T) ' OperationComment$ Get$ ctBlk EOL
END
IF WorkGroupComment?
GetSeqLab '(T) ' WorkGroupComment$ Get$ ctBlk EOL
END
IF ToolTypeComment?
GetSeqLab '(T) TOOL# ' Tool# ' ' ToolDiameter# ' ' ToolType$ Get$ ctBlk EOL
END
IF ToolComment?
GetSeqLab '(T) ' ToolComment$ Get$ ctBlk EOL
END
RestoreScale
END
CSComments
RETURN
CSAngleA:
IF AAxisAvail?
'A' CSOffsetA#
END
RETURN
CSAngleAC:
IF AChange?
CSAngleA
END
RETURN
CSAngleB:
IF BAxisAvail?
'B' CSOffsetB#
END
RETURN
CSAngleBC:
IF BChange?
CSAngleB
END
RETURN
PSInit:
NewWFOF
FourthCWF
FourthCCWF
FifthCWF
FifthCCWF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN
PSStuff:
RETURN
DoPostScript:
PSInit
EachPS
GetSeqLab PostScript Get$ ctBlk EOL
PSStuff
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
GetSeqLab EndOpPS Get$ ctBlk EOL
PSStuff
NextPS
RETURN
EntryMove:
IF FeedEntry?
GetSeqLab FeedC ZInC
IF NOT EmptyLine? { Mostly for FeedConnect ZShiftOnly with ZMove }
FeedEntC
END
ctBlk EOL
ELSE
GetSeqLab RapidC ZInC ctBlk EOL
END
RETURN
ExitMove:
IF NOT FeedConnect?
IF FIFO?
FeedC PRIME ZCP2C FeedEntC
ELSE
RapidC PRIME ZCP2C
END
END
RETURN
ExitMove2:
LoadFeat Num#('0') Num#('0') ClearancePlane3#
IF ZMove?
IF FIFO?
FeedC ZCP3C FeedEntC
ELSE
RapidC ZCP3C
END
END
RETURN
CycleWarning:
{ NOTE: This Post Processor takes care of Z Clearance. }
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
MoveXYZC ArcIJ
RETURN
ckCRC:
{ Contents were split up and moved to StdLine sub below. }
IF CutterRadiusCompensation? AND Flag?('5')
CRCOnC
END
RETURN
ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
GetSeqLab MoveSXYZC ctBlk EOL
ELSE
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
IF CutterRadiusCompensation? AND Flag?('5')
GetSeqLab FeedC MoveXYZC RapidFC ctBlk EOL
ELSE
GetSeqLab RapidC MoveXYZC ctBlk EOL
END
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
IF NOT ZMove?
TurnOnCRC
END
IF Decelerate?
IF RoomToDecel?
DecelMove1
GetSeqLab ckCRC FeedC MoveXYZC FeedRateC ctBlk EOL
DecelMove2
END
GetSeqLab ckCRC FeedC MoveXYZC DecelFeed ctBlk EOL
ELSE
GetSeqLab ckCRC FeedC MoveXYZC FeedRateC ctBlk 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
GetSeqLab FormatArc ArcFeedC ctBlk EOL
DecelMove2
END
GetSeqLab FormatArc DecelFeed ctBlk EOL
ELSE
GetSeqLab FormatArc ArcFeedC ctBlk EOL
END
NEXTQuadrant
END
END
END
IF LastFeat?
TurnOffCRC
END
END
NEXTFeat
RETURN
AutoCycCutSub1: {part 1}
CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY}
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
IF Repeats? AND ZShiftOnly?
EntryMove
END
GetSeqLab IncValue ctBlk EOL
RETURN
AutoCycCutSub2: {part 2}
GetSeqLab AbsValue ctBlk EOL
GetSeqLab
IF FIFO?
FeedC ZCP2 FeedEntC
ELSE
RapidC ZCP2
END
ctBlk EOL
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN
Milling:
EntryMove
ToolPath
RETURN
XYZRep:
CycleWarning
FindAnyZMoves
EachRep
DoCycleComment
IF FirstCycle?
EntryMove
ELSE
CRCOffC
IF FeedConnect?
IF SPXMove? OR SPYMove?
GetSeqLab FeedC MoveSXYC ctBlk EOL
END
IF ZShiftOnly?
EntryMove
ELSE
IF NOT NoZMoves?
EntryMove
END
END
ELSE
IF SPXMove? OR SPYMove?
GetSeqLab RapidC MoveSXYC ctBlk EOL
END
IF FeedEntry?
GetSeqLab ZCP2C ctBlk EOL
END
EntryMove
END
END
ToolPath
IF NOT FeedConnect?
GetSeqLab CRCOffC ctBlk EOL
END
GetSeqLab ExitMove ctBlk EOL
NextRep
RETURN
NoRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
IF FIFO?
Rapid
END
GetSeqLab RapidC MoveSXYC ctBlk EOL
END
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
RETURN
XYZRepAutoCycle:
CycleWarning
EachRep
DoCycleComment
IF NOT FirstCycle?
IF FIFO?
Rapid
END
GetSeqLab RapidC StrtPos ctBlk EOL
IF NOT FeedConnect?
GetSeqLab ZCP2C ctBlk EOL
END
END
EACHFeat
IF NOT FirstFeat?
DoCycleComment
END
IF SPXMove? OR SPYMove?
IF FIFO?
Rapid
END
GetSeqLab RapidC MoveSXYC ctBlk EOL
END
AutoCycCutSub1
Milling
AutoCycCutSub2
NEXTFeat
GetSeqLab CRCOffC ctBlk EOL
LoadFeat Num#('0') Num#('0') PRIME ClearancePlane2#
IF ZMove?
GetSeqLab ExitMove ctBlk EOL
END
NextRep
RETURN
ZonlyRepAutoCycle:
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
IF FIFO?
Rapid
END
GetSeqLab RapidC MoveSXYC ctBlk EOL
END
AutoCycCutSub1
EachRep
IF NOT FirstCycle?
IF FeedConnect?
DoCycleComment
IF SPXMove? OR SPYMove?
GetSeqLab FeedC MoveSXYC FeedEntC ctBlk EOL
END
GetSeqLab AbsOrInc ctBlk EOL
ELSE
GetSeqLab AbsOrInc ctBlk EOL
GetSeqLab CRCOffC ctBlk EOL
GetSeqLab ExitMove ctBlk EOL
DoCycleComment
IF SPXMove? OR SPYMove?
GetSeqLab IncValue ctBlk EOL
GetSeqLab RapidC MoveSXYC ctBlk EOL
GetSeqLab AbsOrInc ctBlk EOL
END
IF FeedEntry? AND NOT FIFO?
GetSeqLab RapidC ZCP2 ctBlk EOL
END
END
EntryMove
GetSeqLab IncValue ctBlk EOL
END
ToolPath
NextRep
AutoCycCutSub2
NEXTFeat
RETURN
DrillStuff:
GetSeqLab DrillCP ctBlk EOL
GetCycle
GetSeqLab Cycle StrtPos ZDepth RLevel Dwell Peck
IF PeckChipBreaker?
'Q' Retract#
END
FeedEnt ctBlk EOL
TrackZNO# FIRST SPZ# {.81.2}
RETURN
CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN
ProgStart:
InitProg
ReverseXZArcs
InitWFONum
SetFlood
SetMaxRPM('10000')
IF Metric?
SetMaxFeed('12700')
ELSE
SetMaxFeed('500')
END
Save# Num#('1') Num#('0') { MultipleParts Current Tool FirstOp# }
Save# Num#('2') Num#('0') { MultipleParts ToolOp# Counter }
Save# Num#('3') Num#('0') { LongHand PeckCycle }
Save# Num#('4') Num#('0') { For Resetting Line Numbers at N9999 }
SetFlagF('2') { WFOStuff }
SetFlag('3') { True = incrementing WFO numbers for MP. False = decrementing WFO numebrs for MP }
SetFlag('4') { True = toggle between incrementing/decrementing WFO's }
SetFlagF('5') { CutterRadiusCompensation }
IF PSComment? AND UseComments?
GetSeqLab '(T) PostScript:' Get$ ctBlk EOL
GetSeqLab '(T) Literals: put between single or double quotes.' Get$ ctBlk EOL
GetSeqLab '(T) Separate commands and literals with at least one space.' Get$ ctBlk EOL
GetSeqLab '(T) A CR ( RETURN key ) will start a new line.' Get$ ctBlk EOL
GetSeqLab '(T) Commands: may be capital and/or lower case letters. Separate commands with a space.' Get$ ctBlk EOL
GetSeqLab '(T) EndOP -' Get$ ctBlk EOL
GetSeqLab '(T) all literals and commands before an ENDOP command' Get$ ctBlk EOL
GetSeqLab '(T) will appear at the beginning of the operation. All' Get$ ctBlk EOL
GetSeqLab '(T) literals and commands after an ENDOP command will appear' Get$ ctBlk EOL
GetSeqLab '(T) at the end of the operation.' Get$ ctBlk EOL
END
IF MultipleParts?
IF WorkFixtureOffsets?
IF LTEqual? MUL# Parts# NumOfCS# Num#('14')
SetWFOCS { use WFO for CS changes }
ELSE
IF UseComments?
'( Not enough Work Fixture Offsets to handle this part. )' EOL
'( Number of parts [ ' Parts# ' ] times CSs [ ' NumOfCS# ' ] )' EOL
'( exceeds the machine limit. Switching to non-WFO output. )' EOL
END
END
END
ELSE
IF LTEqual? NumOfCS# Num#('14') {****}
SetWFOCS { use WFO for CS changes }
ELSE
IF UseComments?
'( Not enough Work Fixture Offsets to handle this part. )' EOL
'( Number of CSs [ ' NumOfCS# ' ] exceeds the machine limit. )' EOL
'( Switching to non-WFO output. )' EOL
END
END
END
RETURN
SetDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN
OpGuts:
IF Milling?
GetSeqLab ZCP2C ctBlk EOL
IF AutoCycle?
IF Repeats?
IF ZShiftOnly?
ZonlyRepAutoCycle
ELSE
XYZRepAutoCycle
END
IF NOT FeedConnect?
GetSeqLab ExitMove2 ctBlk EOL
END
ELSE
NoRepAutoCycle
GetSeqLab ExitMove2 ctBlk EOL
END
SetPass1
ELSE { NOT AutoCycle }
IF Repeats?
XYZRep
ELSE
Milling
END
IF FIFO?
GetSeqLab CRCOffC ctBlk EOL
END
GetSeqLab ExitMove2 ctBlk EOL
TurnOffCRC
END
ELSE
IF Drilling?
IF Repeats?
EachRep
DoCycleComment
IF FirstCycle?
DrillStuff
END
ToolPath
NextRep
ELSE
DrillStuff
ToolPath
END
SetDrillEndOpZ
GetSeqLab 'G80' ctBlk EOL
GetSeqLab Rapid ZCP3 ctBlk EOL
END
END
RETURN
InitOp:
'(' Program# ')' EOL
EachOp
IF FirstOperation?
IF ToolChangeAtHome?
SetHome
END
END
NextOp
IF UseComments?
IF ProgramNameComment?
GetSeqLab '(T) PROGRAM ' ProgramName$ Get$ ctBlk EOL
END
IF ProgramComment?
GetSeqLab '(T) ' ProgramComment$ Get$ ctBlk EOL
END
IF FormatNameComment?
GetSeqLab '(T) FORMAT ' FormatName$ Get$ ctBlk EOL
END
IF TimeComment?
GetSeqLab '(T) ' Date$ ' AT ' Time$ Get$ ctBlk EOL
END
IF MovesComment?
GetSeqLab '(T) OUTPUT IN ABSOLUTE INCHES' Get$ ctBlk EOL
END
IF PartsComment?
GetSeqLab '(T) PARTS PROGRAMMED ' Parts# Get$ ctBlk EOL
END
IF StartToolComment?
GetSeqLab '(T) FIRST TOOL NOT IN SPINDLE' Get$ ctBlk EOL
END
END
RestoreScale
RETURN
FirstOp1:
DoPartCycleComment
DoOpComments
DoPostScript
GetSeqLab Rapid Speed ctBlk EOL
GetSeqLab Plane ctBlk EOL
GetSeqLab 'G70' ctBlk EOL
GetSeqLab AbsValue ctBlk EOL
GetSeqLab ToolOfst ToolChng ctBlk EOL
RETURN
FirstOp2:
GetSeqLab WFOStuff ctBlk EOL
GetSeqLab SpinOn ctBlk EOL
CheckPass
GetSeqLab StrtPos CSAngleA CSAngleB ctBlk EOL
RETURN
FirstOp3:
GetSeqLab ZCP1 ctBlk EOL
GetSeqLab CoolOn ctBlk EOL
RETURN
NewToolOp1:
GetSeqLab CoolOff ctBlk EOL
RETURN
NewToolOp2:
DoEndOpPS
IF LAST ProgStop?
GetSeqLab 'M0' ctBlk EOL
ELSE
IF OptionalStops?
GetSeqLab ProgStop ctBlk EOL
END
END
RETURN
NewToolOp3:
DoPartCycleComment
DoOpComments
DoPostScript
GetSeqLab Rapid Speed ctBlk EOL
GetSeqLab PlaneC ctBlk EOL
GetSeqLab AbsValue ctBlk EOL
GetSeqLab ToolOfst ToolChng ctBlk EOL
RETURN
NewToolOp4:
GetSeqLab WFOStuff ctBlk EOL
GetSeqLab SpinOn ctBlk EOL
CheckPass
GetSeqLab StrtPos CSAngleA CSAngleB ctBlk EOL
RETURN
NewToolOp5:
GetSeqLab ZCP1 ctBlk EOL
GetSeqLab CoolOn ctBlk EOL
RETURN
SameToolOp1:
DoEndOpPS
IF LAST ProgStop?
GetSeqLab CoolOff ctBlk EOL
GetSeqLab 'M0' ctBlk EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
GetSeqLab CoolOff ctBlk EOL
END
END
RETURN
SameToolOp2: {Start new Operation}
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
GetSeqLab WFOStuff ctBlk EOL
RETURN
SameToolOp3: {Start new Operation}
GetSeqLab SpeedC ctBlk EOL
GetSeqLab PlaneC ctBlk EOL
GetSeqLab AbsValue ctBlk EOL
IF LAST ProgStop?
GetSeqLab ToolOfst ctBlk EOL
GetSeqLab SpinOn ctBlk EOL
GetSeqLab Rapid StrtPos CSAngleA CSAngleB ctBlk EOL
GetSeqLab ZCP1 ctBlk EOL
GetSeqLab CoolOn ctBlk EOL
ELSE
IF NewToolOffset? OR ChangeCS?
GetSeqLab ToolOfst ctBlk EOL
GetSeqLab Rapid StrtPos CSAngleA CSAngleB ctBlk EOL
GetSeqLab ZCP1 ctBlk EOL
ELSE
GetSeqLab Rapid StrtPos ctBlk EOL
END
IF NOT CoolOff? AND LAST CoolOff?
GetSeqLab CoolOn ctBlk EOL
END
END
RETURN
End1:
GetSeqLab CoolOff ctBlk EOL
RETURN
End2:
DoEndOpPS
IF FIRST ToolChangeAtHome? {.71.2 added FIRST modifier}
GetSeqLab AbsValue ctBlk EOL
GetSeqLab Rapid PRIME FirstHome SpinOff ctBlk EOL
ELSE
GetSeqLab SpinOff ctBlk EOL
END
IF Equal? CSOffsetA# Num#('0') AND Equal? CSOffsetB# Num#('0')
ELSE
GetSeqLab
IF AAxisAvail?
CSAngleA
END
IF BAxisAvail?
CSAngleB
END
ctBlk EOL
GetSeqLab Preset
IF AAxisAvail?
'A0'
END
IF BAxisAvail?
'B0'
END
ctBlk EOL
END
IF ProgStop?
GetSeqLab 'M0' ctBlk EOL
ELSE
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart?
GetSeqLab ProgStop ctBlk EOL
END
END
RETURN
End3:
GetSeqLab EOP ctBlk EOL
'END' EOL
Close
ReTag
IF UseComments?
SetScale('1') {restore scale for comments}
Reopen
IF FileBytesComment?
'N9997(T) FILE LENGTH: ' FileBytes# ' CHARACTERS' Get$ EOL
END
IF FileFeetComment?
'N9998(T) FILE LENGTH: ' FileFeet# ' FEET' Get$ EOL
END
IF FileMetersComment?
'N9999(T) FILE LENGTH: ' FileMeters# ' METERS' Get$ EOL
END
Close
END
RETURN
MPallTools1P: {Multiple Parts, All Tools 1 Part}
IF FirstOperation? OR EquallySpacedOffsets?
SetFlag('2') { WFOStuff }
END
SetFlagF('5') { Flag to set-up CutterRadiusCompensation }
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}
SetFlag('2') { WFOStuff }
SetFlagF('5') { Flag to set-up CutterRadiusCompensation }
IF FirstOperation?
IF FirstPart? AND Flag?('3')
FirstOp1
FirstOp2
FirstOp3
ELSE
IF LastPart? AND NOT Flag?('3')
FirstOp1
FirstOp2
FirstOp3
END
END
ELSE
IF NewTool?
IF FirstPart? AND Flag?('3')
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
ELSE
IF LastPart? AND NOT Flag?('3')
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
END
END
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN
MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane}
SetFlag('2') { WFOStuff }
SetFlagF('5') { Flag to set-up CutterRadiusCompensation }
IF FirstOperation?
IF FirstPart? AND Flag?('3')
FirstOp1
FirstOp2
FirstOp3
ELSE
IF LastPart? AND NOT Flag?('3')
FirstOp1
FirstOp2
FirstOp3
END
END
ELSE
IF NewTool?
IF FirstPart? AND Flag?('3')
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
ELSE
IF LastPart? AND NOT Flag?('3')
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
END
END
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN
NoMPs: {no multiple parts}
SetFlag('2') { WFOStuff }
SetFlagF('5') { Flag to set-up CutterRadiusCompensation }
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?
GetSeqLab CoolOff ctBlk EOL
END
{DoEndOpPS}
{Start new Part}
SetFlag('2') { WFOStuff }
SameToolOp2
GetSeqLab SpeedC ctBlk EOL
GetSeqLab PlaneC ctBlk EOL
GetSeqLab AbsValue ctBlk EOL
GetSeqLab Rapid StrtPos CSAngleA CSAngleB ctBlk EOL
IF FullUp?
GetSeqLab ZCP1 ctBlk EOL
GetSeqLab CoolOn ctBlk EOL
END
RETURN
ToggleIncDecWFO:
IF Flag?('3')
SetFlagF('3')
ELSE
SetFlag('3')
END
RETURN
MPLoop:
Save# Num#('2') Recall# Num#('1')
IF WorkFixtureOffsets?
IF Flag?('3')
NewWFO
ELSE
LastWFO
END
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? AND Flag?('3')
DoNewPart
ELSE
IF NOT LastPart? AND NOT Flag?('3')
DoNewPart
END
END
END
MasterSub
IF LastOp?
IF LastPart? AND Flag?('3')
Save# Num#('1') Num#('0')
ELSE
IF FirstPart? AND NOT Flag?('3')
Save# Num#('1') Num#('0')
END
END
Save# Num#('2') Recall# Num#('1')
ELSE
IF NEXT SameTool?
Save# Num#('2') NEXT Operation#
ELSE
IF LastPart? AND Flag?('3')
Save# Num#('1') NEXT Operation#
Save# Num#('2') Num#('0')
ELSE
IF FirstPart? AND NOT Flag?('3')
Save# Num#('1') NEXT Operation#
Save# Num#('2') Num#('0')
ELSE
Save# Num#('2') Recall# Num#('1')
END
END
END
END
END
NextOp
END
IF WorkFixtureOffsets?
IF Flag?('3')
IncWFO
NextWFO
DecWFO
ELSE
DecWFO
NextPrevWFO
IncWFO
END
IF Flag?('4')
ToggleIncDecWFO
END
ELSE
NextPart
END
RETURN
{Start of executable Prog, Top Level ****}
ProgStart {setup and initializations}
InitOp
IF MultipleParts?
IF WorkFixtureOffsets?
{'NOTE: This Post Processor does not support Work Fixture Offsets for Multiple Parts.' EOL
'It is recommended that you change your selection to Equally Spaced Offsets.' EOL}
END
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
Podobne podstrony:
Dynapath 20M LH [PC] MV20 89Dynapath 20M LH MW73 89Dynapath 20M M074 80 1Centurion V LH [CT] MW13 15 2mDynapath 20M C074 12Dynapath 20M [PC] MW17 89Dynapath 20M Con CMS M764 85Yasnac MX3 HS LH [NO] MV65 15Dynapath 20M Con [NT] MZ63 85 2Dynapath 20M Conv[RB] M617 85 1Fanuc 15M Mat LH [KP] CV71 15BP EZ Trak LH [WD] MV22 15Dynapath 20M Tree [PN] M851 89Dynapath 20M (ATD) M304 80 1Fanuc Pro3 Mak LH [AE] CV70 15Dynapath 20M Cnv JBC MQ26 85 1więcej podobnych podstron