Dynapath 20M LH [SDT] CV52 15


{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 89
Dynapath 20M LH MW73 89
Dynapath 20M M074 80 1
Centurion V LH [CT] MW13 15 2m
Dynapath 20M C074 12
Dynapath 20M [PC] MW17 89
Dynapath 20M Con CMS M764 85
Yasnac MX3 HS LH [NO] MV65 15
Dynapath 20M Con [NT] MZ63 85 2
Dynapath 20M Conv[RB] M617 85 1
Fanuc 15M Mat LH [KP] CV71 15
BP EZ Trak LH [WD] MV22 15
Dynapath 20M Tree [PN] M851 89
Dynapath 20M (ATD) M304 80 1
Fanuc Pro3 Mak LH [AE] CV70 15
Dynapath 20M Cnv JBC MQ26 85 1

więcej podobnych podstron