Cin 10HC Acr 900 PMW DV69 15 1


{
MILL=T
LATHE=F
SIMPLE_ROT_POS=F
ROTARY_MILL=F
ADV_MILL=F
SUBS=F
MILLTURN_Y-AXIS=F
METRIC=F
}

{Change Comments ***********************************************************}

{6/1/89
Modified; Cincinnati 900V2 (1) M099.54, for C G Richter.
Change "RapidC" to "Rapid" after Drilling.
Add "NullFoot" twice to beginning and twice to end of prog.
Changed "'( MSG" to "'(MSG".
Checked "Use Absolute Drill Depths" in Booleans.
Jim Radcliffe}

{9/6/89
Copied & modified: Cincinnati 900V2 (1) M099.55
For: Hughes T&CSD
Machine: Cincinnati Cintimatic 5VC-750
Control: Acramatic 900 V2
New processer from Manual and Customer requests.
Jim Radcliffe}

{9/15/89, add PostScript, JR}

{9/21/89
Copied & modified: Cin 5VC Acr 900V2 M238.56
For: Hughes T&CSD
Machine: Cincinnati Cintimatic 10VC
Control: Acramatic 900 MC
Added Probing Operation utilizing PostScript commands SetZSurf & OptCyc1.
Probing and setting of Z axis should be OK.
Needs method for X and Y axis.
Jim Radcliffe}

{10/11/89, modified operation comments, JR}

{12/5/89
Modified: Cin 10VC Acr 900MC M245.62
For: Hughes T&CSD
Machine: Cincinnati Cintimatic 10VC
Control: Acramatic 900 MC
Added PostScript for Coolant, Program Stop & Index.
Jim Radcliffe}

{3/29/90, Updated: Cin 10VC Acr 900MC M245.63 to .70.3 format, JR}

{7/24/90, Added InitProg globally to posts with this remark, DWB}
{7/24/90, Replaced all occurances of SetSRXYZero with SetSRXYtoSP, DWB}
{7/24/90, Deleted SetZSurf command at start of prog, DWB}
{12/14/90, Updated: Cin 10VC Acr 900MC M245.71 to .76.1 format, JR}

{4/3/91
Modified: Cin 10VC Acr 900MC M245.76.1
For: Gibbs & Associates
Updated to Version 4.0 per Fanuc 6M M001.79 Format.
DWB}

{6/18/91, Changed ArcIJC & ArcRC to ArcIJ & ArcR. Added OptCyc1F to PSInit, JC}

{6/27/91
Modified: Cin 10VC Acr 900MC M245.79.1
For: Hughes T&CSD per Terry Lowe
Modified Subs;
changed Sub ID from "PGM" to "DFS",
changed to output subs in front of program,
deleted all EOR codes except for the 1st one.
Modified Cutter Radius Compensation, must be in Feed when CRCOn is called and cannot have 2 G codes on same line;
deleted boolean statement that ouputs Feed, after a rapid entry, from; EntryMove, ZonlyRepAutoCycle & ZonlyRep,
added sub CkCRC to put Feed on line by itself before CRCOn, using flag to check condition,
put CRCOff on line by itself following move line and reset flag.
Jim Radcliffe}

{7/29/91
Modified: Cin 10VC Acr 900MC M245.80
For: Hughes T&CSD per Terry Lowe
Added codes to allow Retract to 1st Clearance Plane for Drilling Cycles.
For proper drill cycle depths:
changed ZDepth to 'Z' ADD# ZDepth# NumSc#('.1'),
unchecked "Use Absolute Drill Depths" in the MachSpec.
Jim Radcliffe}

{2/19/92
Modified: Cin 10VC Acr 900MC M245.80.1
For: Hughes T&CSD per Terry Lowe
Changed to no sub output, all long hand output.
Jim Radcliffe}

{5/10/94
Copied & modified: Cin 10VC Acr 900MC M245.80.2
For: Rexroth
Control: Cincinnati Acramatic 900
Machine: Cincinnati Milacron T-10
Cleaned up formatting, scaling and inch/metric conversion corrections.
Jim Radcliffe}

{4/13/95
Copied: Cin T10 900MC [RR] M656.81.5
Created: Cin T10 900MC [LA] D718.10
For: Gibbs & Associates/Lincoln Automotive
Versions: ncCad 4.33.01/ncCAM 4.33.01/ncPost 4.33.05/Catalyst v2.14.35/Compost 4.21.28
Changes made per Bill White of Lincoln Automotive.
Updated and Converted to Fanuc 6M [NW] D001.10
Deleted support of OptCyc1 and SetZSurf PostScript Commands.
Changed original Flag(1) to Flag(5) to keep track of CRCOn/CRCOff of processor and DrillStuff.
Deleted support of MistCoolant and SetMistCoolant PostScript commands and corresponding
PostScript Comments.
Added support for FloodCoolant, ThruSpindleCoolant and SetThruSpindle PostScript commands and
corresponding PostScript Comments.
Processor originally supported SetFlood PostScript command so no change was made.
DWB}

{
Format: Cin T10 900MC [LA] D718.10.01
8/23/95
Added FORMAT(CallMasterNum#,5)
TH}

{
Format: Cin T10 900MC [LA] D768.10.02
10/24/95
Added MSG, to DoCSWFOComment
TH}

{1/17/96, Updated .10 to .11 version, MPK}

{3/25/96, Tested ZOnlyRepAutoCycle, Changed version # to .12, MPK}

{4/27/98
Initial: Cin T10 900MC [LA] D768.12
Created: Cin 10HC Acr 900 Dxxx.15
ForUser: Plainville Machine Works
Control: Acramatic 900
Machine: Cincinnat 10HC-2500
Develop: ComPost2 1.1b3, Virtual Gibbs 4.24
Comment: New processor per notes from Cory Stevens.
Changed to NoSubs per Fanuc 6M NoSubs D877.15.2
Changed to manual pecking per Fanuc 6M NoSubs NoDr M001.89.1
Changed CoolOn from M8 to M17 and added coolant commnds.
Changed SpinOn from coolant combined command to standard M3/M4
NOTES:
There is not full retract commands so I made OneToolAllParts
FullUp and ExitClearancePlane output the same.
One G code per line.
Jim Radcliffe}

{12Nov98
Original: Cin 10HC Acr 900 PMW DV69.15
Created: Cin 10HC Acr 900 PMW DV69.15.1
For:
Changes made per:
Added Post Header Comment at the top of Prog.
NOTE: This is a LONGHAND Post...however...
All Longhand Peck cycles are output into a seperate Subrouting
to accomodate the customers DNS system
Added Formatting for SUB# in Prog Numeric Format Definitions
Added Support in ToolPath to output Longhand Peck Drilling in a seperate sub.
NOTE: The default is:
[1] If more than one hole is pecked, Longhand Pecking is output in a seperate sub.
[2] Only one Hole pecked, Longhand Pecking is output in the main program. ( i.e. dont create a seperate sub )
Alternatively, with the OPTCYC1 Postcript Command, the options are reversed.
[1] If more than one hole is pecked, Longhand Pecking is output in the main program. ( i.e. dont create a seperate sub )
[2] Only one Hole pecked, Longhand Pecking is output in a seperate sub.
Adjusted the DrillDepth Sub to subtract 100 thousandths from the Clearance Plane.
Adjusted the RPlane Sub to subtract 100 thousandths from the RLevel.
Deleted special approach when drilling. Approach is now the same as Milling.
Moved OpenSub to the start of FirstOperation in Opguts.
Added SetProgNum('0') to FirstOperation. Drill Subs must start with Sub ID=1
Moved Drill Cycle call to IF Drilling at the Common Point.
Added NOT SameTool Boolean to DoOpComments Sub
Added Utility Data Instructions at InitProg.
Charles Winston}

{Prog Numeric Format Definitions ****}

#1 = '#.00'
#2 = '#####^##0'
#3 = '*#####^##0'
#4 = '####.####;0'
#5 = '#######0'
#6 = '##^#0'
#7 = '#;'
#8 = '00'
#9 = '###^###0'

FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
FORMAT(CSOffsetA#,3)
FORMAT(CSOffsetB#,3)
FORMAT(ToolDiameter#,4)
FORMAT(TrackZNO#,4)
FORMAT(ADD#,5)
FORMAT(CS#,5)
FORMAT(Tag#,5)
FORMAT(Program#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(Parts#,5)
FORMAT(Dwell#,6)
FORMAT(RapidF#,7)
FORMAT(NewWFO#,8)
FORMAT(MUL#,9)
FORMAT(ArcZRads#,9)
FORMAT(ClearancePlane2#,9)
FORMAT(SUB#,9)
FORMAT(TrackZ#,9)

{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

WFO:
'H' ADD# PartNum# Num#('-1')
RETURN

WFONum:
'H' NewWFO#
RETURN

WFOStuff:
IF MultipleParts? AND WorkFixtureOffsets?
WFO
ELSE
IF NewWFO?
WFONum
ELSE
IF NOT SameTool?
IF NeedWFO1?
WFONum
END
END
END
END
RETURN

DoSubComment:
IF UseComments? AND SubComment?
SeqC '(MSG, CYCLE START )' EOL
END
RETURN

DoCSComment:
IF AAxisAvail? OR BAxisAvail?
SeqC '(MSG, CS#' CS# ' - ' CSComment$ ' )' EOL
END
RETURN

CSComments:
IF FirstOperation? OR NewTool? OR ChangeCS?
DoCSComment
END
RETURN

DoOpComments:
IF UseComments?
SetScale('1')
IF MultipleParts? AND SubComment?
SeqC '(MSG, PART ' Tag# ' )' EOL
END
IF OperationIDComment?
SeqC '(MSG, OPERATION ' Operation# ': ' OperationType$ ' )' EOL
END
IF OperationComment?
SeqC '(MSG, ' OperationComment$ ' )' EOL
END
IF WorkGroupComment?
SeqC '(MSG, ' WorkGroupComment$ ' )' EOL
END
IF NOT SameTool?
IF ToolTypeComment?
SeqC '(MSG, TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL
END
IF ToolComment?
SeqC '(MSG, ' ToolComment$ ' )' EOL
END
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
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
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

DoPostScript:
PSInit
EachPS
SeqC PostScript EOL
PSStuff
NextPS
RETURN

DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL
PSStuff
NextPS
RETURN

ExitType:
IF FIFO?
FeedC
ELSE
RapidC
END
RETURN

ExitFeed:
IF FIFO?
FeedEntC
END
RETURN

FormatIJ:
IF AbsoluteMoves? AND NOT AutoCycle?
ArcIJC
ELSE
ArcIJ
END
RETURN

FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
IF XYPlane? AND ZMove?
MoveXYZC FormatIJ 'K' ArcZRads#
ELSE
IF XZPlane? AND YMove?
MoveXYZC FormatIJ 'J' ArcZRads#
ELSE
IF YZPlane? AND XMove?
MoveXYZC FormatIJ 'I' ArcZRads#
ELSE
MoveXYZC FormatIJ
END
END
END
RETURN

ckCRC:
IF CutterRadiusCompensation?
IF LastFeat?
IF Flag?('3')
EOL
SeqC CRCOffC SetFlagF('3')
END
ELSE
IF NOT ZMove?
IF NOT Flag?('3')
EOL
SeqC CRCOnC SetFlag('3')
END
END
END
END
RETURN

StdRapid:
IF XMove? OR YMove? OR ZMove?
SeqC RapidC ckCRC MoveXYZC EOL
END
RETURN

StdLine: {enables CRC on first call, .70}
IF XMove? OR YMove? OR ZMove?
IF Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FeedC ckCRC MoveXYZC FeedRateC EOL
DecelMove2
END
SeqC FeedC ckCRC MoveXYZC DecelFeed EOL
ELSE
SeqC FeedC ckCRC MoveXYZC FeedRateC EOL
END
END
RETURN

StdArc:
EACHQuadrant
IF LastQuadrant? AND Decelerate?
IF RoomToDecel?
DecelMove1
SeqC FormatArc ArcFeedC EOL
DecelMove2
END
SeqC FormatArc DecelFeed EOL
ELSE
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
RETURN

ToolPath2: {for AutoCycle element moves}
EACHFeat
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
NEXTFeat
RETURN

EntryMove:
IF FeedEntry?
SeqC FeedC ZInC FeedEntC EOL
ELSE
SeqC RapidC ZInC EOL
END
RETURN

CutAutoCycle:
SaveSubStatus {save tool position}
SetPass1 {element cut moves}
SetSRXYtoSP
SeqC IncValue EOL
IF Repeats? AND ZshiftOnly?
EachRep
IF NOT FirstCycle?
IF SPXMove? OR SPYMove?
IF FeedConnect?
SeqC FeedC StrtPosC EOL
ELSE
SeqC RapidC StrtPosC EOL
END
END
END
EntryMove
ToolPath2
IF NOT FeedConnect?
SeqC ExitType PRIME ZCP2 ExitFeed EOL
END
NextRep
ELSE
EntryMove
ToolPath2
END
SeqC AbsOrInc ExitType ZCP2 ExitFeed EOL
SetSRSubXY {restore tool position}
SetSRSubMove
ReSetPass2 {restore for positioning moves}
RETURN

DoPeck:
IF NOT Flag?('2')
SetScale('1')
IF GreaterThan? SUB# Recall# Num#('4') Peck# SPZ# {IF OldZ - Peck# > Depth}
Save# Num#('4') SUB# Recall# Num#('4') Peck# {Save#1 = OldZ - Peck# = NewZ}
RestoreScale
SeqC Feed 'Z' TrackZ# MUL# Recall# Num#('4') NumSc#('1') FeedEntC EOL {move to NewZ}
IF PeckFullRetract?
SeqC Rapid ZCP2 EOL {move to CP2}
END
SeqC RapidC 'Z' TrackZ# ADD# Recall# Num#('4') Retract# EOL {move to RetractZ}
ELSE
RestoreScale
SeqC Feed 'Z' TrackZ# SPZ# FeedEntC EOL {move to Depth}
IF RetractToCP1?
SeqC Rapid ZCP1 EOL {move to CP1}
ELSE
SeqC Rapid ZCP2 EOL {move to CP2}
END
SetFlag('2')
END
END
RETURN

PeckCycle:
SeqC ZCP2C EOL
SetFlagF('2') { done flag }
SetScale('1')
Save# Num#('4') ClearancePlane2#
RestoreScale
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck DoPeck
RETURN

DrillPos:
IF Flag?('3') { Approach }
StrtPos
ELSE { ToolPath }
MoveSXYC
END
RETURN

DrillDepth: { Output the CP2 Minus 100 thousandths }
IF Flag?('3') { Approach }
'Z' MUL# Num#('-1') SUB# SUB# ClearancePlane2# Num#('0.1') FIRST SPZ#
TrackZNO# FIRST SPZ# {.81.2}
ELSE { ToolPath }
IF SPZMove?
'Z' MUL# Num#('-1') SUB# SUB# ClearancePlane2# Num#('0.1') SPZ#
TrackZNO# SPZ# {.81.2}
END
END
RETURN

RPlane:
IF Flag?('3') { Approach }
'R' Sub# ClearancePlane2# Num#('0.1') { Output the RLevel Minus 100 thousandths }
TrackZNO# FIRST SPZ# {.81.2}
END
RETURN

DrillCycle:
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
DrillPos DrillDepth RPlane
RETURN

Approach:
Rapid StrtPos ZCP1 CSAngleA CSAngleB
RETURN

CreateDrillSub:
NewProg
OpenSub
SeqC EOR EOL
SeqC '(DFS, I' Program# ' )' EOL
PeckCycle
SeqC EndSub EOL
CloseSub
SeqC '(CLS, I' Program# ' )' EOL
RETURN

ToolPath:
EACHFeat
IF PointFeat?
IF AutoCycle?
SeqC
IF FIFO? AND NOT FirstFeat?
Rapid
END
MoveSXYC EOL
CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY}
CutAutoCycle
ELSE
IF Peck?
IF FirstFeat? AND LastFeat? { [A] There is only one Hole to Peck. }
IF Optcyc1?
CreateDrillSub { Create a Subroutine }
ELSE
PeckCycle { Put it in the main Program }
END
ELSE { [B] Multiple Holes to Peck }
IF Optcyc1?
PeckCycle { Put them in the main Program }
ELSE
IF FirstFeat? { First Hole. Create a Subroutine }
CreateDrillSub
ELSE { Not the First Hole to Peck. Call the Subroutine }
SeqC RapidC MoveSXYC EOL
SeqC '(CLS, I' Program# ' )' EOL
END
END
END
ELSE
IF RetractToCP1?
IF NOT FirstFeat?
SeqC DrillCycle EOL
END
IF NOT LastFeat?
SeqC Rapid ZCP1 EOL
END
ELSE
SeqC MoveSXYC DrillDepth EOL {.80.01}
END
END
END
ELSE
IF RapidFeat?
StdRapid
ELSE
IF LineFeat?
StdLine
ELSE
IF ArcFeat?
StdArc
END
END
END
END
NEXTFeat
RETURN

CheckPass:
IF AutoCycle? {use the correct StrtPos}
SetPass2
ELSE
SetPass1
END
RETURN

ProgStart:
InitProg
TagInit
ReverseXZArcs
InitWFONum
SetFlood
SetMaxRPM('4000')
IF Metric?
SetMaxFeed('3810')
ELSE
SetMaxFeed('150')
END
SetFlagF('1') {Multiple Parts done flag}
SetFlagF('2') {Peck Drilling done flag}
SetFlagF('3') {CRCOn & DrillCycle from Approach}
Save# Num#('1') Num#('0') {tools 1st op}
Save# Num#('2') Num#('0') {tools last op}
Save# Num#('3') Num#('0') {ncCAMs last op}
Save# Num#('4') Num#('0') {peck drill Z position}
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
' NewWFO(56), NWFO(56) -' EOL
' The Work Fixture Offset # you specify will be used for all following operations.' EOL
' Do not use with the multiple part work fixture offset 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
' ' EOL
' This Post processor has the following default settings for Peck Drilling:' EOL
' [1] With Only one Hole pecked, Pecking code is output in the main program.' EOL
' [2] If more than one hole is pecked, Pecking Code is output in a seperate subroutine.' EOL
' ' EOL
' The OPTCYC1 command' EOL
' Alternatively, with the OPTCYC1 Postcript Command, the options are reversed.' EOL
' [1] With Only one Hole pecked, Pecking Code is output in a seperate subroutine.' EOL
' [2] If more than one hole is pecked, Pecking Code is output in the main program.' EOL
' This command should be entered in the Utility Data At Op Start BOX.' EOL
END
EachOp
IF FirstOperation?
OpenSub
EOR EOL
SetProgNum('0')
IF ToolChangeAtHome?
SetHome
END
IF UseComments?
IF ProgramNameComment?
SeqC '(MSG, PROGRAM: ' ProgramName$ ' )' EOL
END
IF ProgramComment?
SeqC '(MSG, ' ProgramComment$ ' )' EOL
END
IF FormatNameComment?
SeqC '(MSG, FORMAT: ' FormatName$ ' )' EOL
END
IF TimeComment?
SeqC '(MSG, ' Date$ ' AT ' Time$ ' )' EOL
END
IF MovesComment?
SeqC '(MSG, OUTPUT IN ' MoveType$ ' INCHES )' EOL
END
IF PartsComment?
SeqC '(MSG, PARTS PROGRAMMED: ' Parts# ' )' EOL
END
IF StartToolComment?
SeqC '(MSG, FIRST TOOL NOT IN SPINDLE )' EOL
END
END
RestoreScale
END
NextOp
RETURN

DoOp:
IF FirstOperation?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
EOL
DoOpComments
CheckPass
SeqC Approach WFOStuff EOL
ELSE
Seq AbsOrInc EOL
SeqC Plane EOL
SeqC OpToolID ToolChng EOL
DoOpComments
DoPostScript
SeqC Speed SpinOn EOL
CheckPass
SeqC Approach WFOStuff
IF NOT LastTool?
PreTool
END
CoolOn EOL
RapidF# {forces the output of a conditional feedrate}
END
ELSE
IF NewTool?
IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
{only need to set up for tool change on 1st part}
ELSE
CoolOff EOL
DoEndOpPS
IF ToolChangeAtHome?
SeqC Rapid Home EOL
END
IF LAST ProgStop?
SeqC 'M0' EOL
ELSE
SeqC ProgStop EOL
END
END

{Start new Operation}

IF MultipleParts? AND OneToolAllParts? AND NOT FirstPart?
EOL
DoOpComments
CheckPass
SeqC Approach WFOStuff EOL
ELSE
Seq AbsOrInc EOL
SeqC Plane EOL
SeqC OpToolID ToolChng EOL
DoOpComments
DoPostScript
SeqC Speed SpinOn EOL
CheckPass
SeqC Approach WFOStuff PreTool CoolOn EOL
RapidF# {forces the output of a conditional feedrate}
END
ELSE
IF SameTool?

{Finish off last Operation}

IF LAST ProgStop?
CoolOff
ELSE
IF CoolOff? AND LAST NOT CoolOff?
CoolOff
END
END
EOL
DoEndOpPS
IF LAST ProgStop?
SeqC SpinOff EOL
SeqC 'M0' EOL
END

{Start new Operation}

DoOpComments
DoPostScript
CheckPass
SeqC PlaneC EOL
SeqC SpeedC
IF LAST ProgStop?
SpinOn
END
EOL
SeqC Approach WFOStuff
IF LAST ProgStop?
CoolOn
ELSE
IF NOT CoolOff? AND LAST CoolOff?
CoolOn
END
END
EOL
END
END
END

{ Common Point for All Operations }

IF Milling?
SeqC ZCP2C EOL
IF Repeats?
IF ZshiftOnly? AND AutoCycle?
{done in CutAutoCycle called from ToolPath}
ELSE
EACHRep
DoSubComment
IF NOT FirstCycle?
SeqC Connect StrtPos EOL
IF NOT FeedConnect?
SeqC ZCP2C EOL
END
END
END
END
IF NOT AutoCycle?
EntryMove
END
ToolPath
IF Repeats?
IF ZshiftOnly? AND AutoCycle?
{done in CutAutoCycle called from ToolPath}
ELSE
SeqC CRCOffC SetFlagF('3') EOL
IF NOT FeedConnect?
SeqC ExitType PRIME ZCP3C ExitFeed EOL
END
NEXTRep
END
END
IF AutoCycle?
SeqC ZCP3C
ELSE
SeqC CRCOffC SetFlagF('3') EOL
SeqC ExitType ZCP3C ExitFeed
END
ELSE
IF Drilling?
GetCycle
IF NOT Peck?
SetFlag('3')
IF FIFO? AND Dwell?
'G89'
ELSE
Cycle
END
DrillDepth RPlane SetFlagF('3') FeedEntC EOL
TrackZNO# FIRST SPZ#
END
IF Repeats?
EACHRep
DoSubComment
END
ToolPath
IF Peck?
SeqC RapidC ZCP3C
ELSE
SeqC Rapid ZCP3
END
IF Repeats?
EOL
NEXTRep
SeqC RapidC ZCP3C
END
END
END
RETURN

FinishLastOp:
CoolOff EOL
DoEndOpPS
IF FIRST ToolChangeAtHome?
SeqC Rapid FirstHome EOL
END
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart? {no tool change after doing last part}
IF ProgStop?
SeqC 'M0' EOL
ELSE
SeqC ProgStop EOL
END
ELSE
SeqC EOP EOL
END
RETURN

DoToolsOps:
EachOp
IF GTEqual? Operation# Recall# Num#('1') AND LTEqual? Operation# Recall# Num#('2')
{Tools1stOp ² op ² ToolsLastOp}
DoOp
END
NextOp
RETURN

NextTools1stOp:
SetNextToolOp Operation#
RETURN

GetToolsOps:
EachOp
IF Equal? Operation# Recall# Num#('1') {if op = Tools1stOp}
IF GreaterThan? NextTools1stOp Recall# Num#('1') {if NextTools1stOp is greater Tools1stOp}
Save# Num#('2') SUB# NextTools1stOp Num#('1') {ToolsLastOp becomes NextTools1stOp less 1}
ELSE {else}
Save# Num#('2') Recall# Num#('3') {ToolsLastOp becomes ncCAMsLastOp}
END
END
NextOp
RETURN

DoTool:
IF NOT Flag?('1')
GetToolsOps
IF WorkFixtureOffsets?
NewWFO
EachWFO
TagInc
DoToolsOps
IncWFO
NextWFO
ELSE
EachPart
TagInc
DoToolsOps
NextPart
END
IF LessThan? Recall# Num#('2') Recall# Num#('3') {if ToolsLastOp < ncCAMsLastOp}
Save# Num#('1') ADD# Recall# Num#('2') Num#('1') {Tools1stOp becomes NextTools1stOp}
ELSE {else}
SetFlag('1') {set DoneFlag}
END
TagInit
END
RETURN

{Start of executable Prog, Top Level ****}

ProgStart {setup and initializations}

IF MultipleParts?
IF AllToolsOnePart?
IF WorkFixtureOffsets?
NewWFO
EachWFO
TagInc
EachOp
DoOp
NextOp
FinishLastOp
IncWFO
NextWFO
ELSE
EachPart
TagInc
EachOp
DoOp
NextOp
FinishLastOp
NextPart
END
ELSE
IF OneToolAllParts?
EachOp
IF FirstOperation?
Save# Num#('1') Operation# {ncCAMs1stOp becomes Tools1stOp}
END
IF LastOp?
Save# Num#('3') Operation# {save ncCAMsLastOp}
END
NextOp
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool DoTool
FinishLastOp
END
END
ELSE
EachOp
DoOp
NextOp
FinishLastOp
END
EOR EOL
CloseSub
Post2
IF UseComments?
SetScale('1')
IF FileBytesComment?
SeqC '(MSG, FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL
END
IF FileFeetComment?
SeqC '(MSG, FILE LENGTH: ' FileFeet# ' FEET )' EOL
END
IF FileMetersComment?
SeqC '(MSG, FILE LENGTH: ' FileMeters# ' METERS )' EOL
END
END
Close


Wyszukiwarka

Podobne podstrony:
Cin Acr 950HMC [T40] CW32 15
Cin 5H 2500 Acr 8D PMW MV67 89
Cin Acr 850MC [VTF] M328 15 1
GE Fanuc 15M 10HC PMW CV68 15
Cin Acr 900 [CKC] M818 89
Cin Acr A2100 [REN] CY33 15 5m
Cin Acr 950HMC [T40] DW32 15 6
Cin Acr 850MC [RI] C664 15
Cin Acr 900 [MS] MZ14 89
Cin Acr 850MC [RI] D664 15
Cin Acr 850MC [AG] MY94 15 4
Cin Acr 900 HMC [TC] MU35 89
Cin Acr 850MC [VTF] B328 15
Cin 10HC [ST&D] PM931 17 3
Acr A2100 [ALA] CX48 15 1
Cin 720 Acr 5 [PAMA] M492 87
Cin 10VC Acr 900MC M245 80 2m
Acr A2100 [AB] CU30 15

więcej podobnych podstron