{
MILL=T
LATHE=F
SIMPLE_ROT_POS=F
ROTARY_MILL=F
ADV_MILL=T
SUBS=F
MILLTURN_Y-AXIS=F
METRIC=F
}
{Change Comments ***********************************************************}
{9/6/87
Created: Hurco M069.40
For: Ivac
For Hurco that has special executive with conventional NC}
{7/26/89
Copied & Modified: Hurco M069.53
For: Bio-Rad
Delete CRCOffsetC from ToolPath.
Added Sequence Numbers to all Comments.
New format for XYZ output in FormatArc sub.
JR}
{8/4/89
Modified: Hurco M069.54
For: Bio-Rad
Added code for Drilling and RetractToCP1.
Added StrtPos to Milling with Repeats.
JR}
{8/28/89
Modified: Hurco M069.55
For: Bio-Rad
Added Plane at FormatArc sub.
Deleted ReverseXZArcs command at setup and initializations.
JR}
{11/17/89
Modified: Hurco M069.56
For: Bio-Rad
Deleted Sequence Numbers from all Comments.
JR}
{3/30/90, Updated: Hurco M069.57 to .70.3 foramt, JR}
{5/29/90
Modified: Hurco M069.57
For: Bio-Rad
Set Arcs Stop on Quadrants to TRUE in Mach Spec.
Hurco CRC rules require this.
DWB}
{7/24/90, Added InitProg globally to posts with this remark, DWB}
{7/24/90, Replaced all occurances of SetSRXYZero with SetSRXYtoSP, DWB}
{8/7/90
Copied & Modified: Hurco M069.71
For: Pyramid Precision
Machine: Hurco KMB 40
Control: Hurco Ultimax
Changed to use incremental unsigned drill depths.
Updated to .74 format.
JR}
{6/20/91
Modified: Hurco Ultimax BMC40 M330.73
For: Pyramid Precision Machine
Changed from conditional IJ & R arcs to forced
Updated to 4.0 per Fanuc M001
KLM}
{
Format: Hurco Ultimax BMC M330.80.1
5/12/95
Checked for move in ArcFeat? to prevent extra arcs from being output
TH}
{5/23/95
Updated: Hurco Ultimax BMC M330.80.1
For: Gibbs & Associates
Versions: ncCad 4.33.01/ncCAM 4.33.01/ncPost 4.33.05/Catalyst v2.14.40/Compost 4.21.28
Changes made per Tom Hubina/Pete Jackson
Added changes from Hurco MO69.81.8
6/6/91 Fixed 'cancel drill cycle' problem and forced I and J arcs.
6/5/92 Added the CRCOnC line to the ToolPath for Autocycles.
The Hurco rules state that the control must be set in G41/G42 prior to G91 for CRC to work
correctly.
Updated to Version 4.2 per LongHand M001.81.3h Format.
This Post Processor does not support subprograms.
Currently supports all combinations of MultipleParts, AutoCycles and Repeats.
Using Var(1), Var(2) and Var(3) for logical control of MultiplePart Operations.
Using Var(4), Var(5), Var(6) and Var(7) for correct Positioning of AutoCycles that Repeat in
X and/or Y, and when AbsoluteMoves = FALSE.
Corrected FORMAT #5 from '########;0' to '#######0'.
Corrected FORMAT #6 for Dwell# from '####^###;' to '####^##0'.
Added FORMAT #7, '#', for RapidF#.
Added Tag# to FORMAT #5.
Added Recall# to FORMAT #5.
Added RestoreScale Sub per 4-Axis Post Processor.
Added support of FIFO? Milling Operations.
Added TrackZNO# FIRST SPZ# at IF Drilling? section to allow for conditionality of MoveSXYZC command.
Added logic of MPLoop sub to handle IF NewTool? and LastOp? situations.
Commented out DoEndOpPS at MPLoop for OneToolAllParts, it does not work correctly.
Added CRCOffC per version 4.2.
CutterRadiusCompensation ExitLength will output G40 on LastFeat AND LineFeat at StdLine sub.
Added Move to ZInC for Non-AutoCycle FeedConnect Repeats with ZMoves at ExitMove sub.
Moved DoCycleComment call to before StrtPos move in related subs.
Added BadMPWFOReport sub.
Reports when MultipleParts AND WorkFixtureOffsets = TRUE AND EquallySpacedOffset values exist.
Added FORMAT #8, 'ą#bbbb.bbbb#', for PartShiftX#, PartShiftY# and PartShiftZ# commands.
Moved SeqC and EOL outside of IF ELSE condition at ExitMove sub.
Moved SeqC AbsOrInc and EOL outside of IF ELSE condition at AutoCycCutSub2 sub.
Deleted ReSetPass2 at end of ZonlyRepAutoCycle sub.
Already executed at end of call to AutoCycCutSub2 sub.
Added support of CRC during multiple pocket dog-bone operation.
Added condition to output CRCOnC for XMove OR YMove only at CkCRC sub.
Outputs G41/G42 on First LineFeat after Z Plunge.
Modified condition to output CRCOffC for LastFeat AND AutoCycle at ToolPath RapidFeat.
Assures that G40 is not output prior to LastFeat.
Added CRCOffC to RapidFeat at ToolPath.
Outputs G40 at all Z Retract blocks.
Modified support of CRC during multiple pocket dog-bone operation.
Modified condition to output CRCOffC for ZMoveOnly Feature at ToolPath RapidFeat.
Changed First occurance of GetConnect to RapidC at ZonlyRepAutoCycle sub.
FeedConnect only applies to Each Repeat, not Each Feature.
Modified CkCRC sub.
Changed logic to output CRCOnC in OneFeat, Non-ZMove ToolPath.
Added logic to suppress output of CRCOnC on ZMove Feature.
Deleted GetConnect sub, modified XYZRep, XYZRepAutoCycle and ZonlyRepAutoCycle subs, see 11/16/94.
DWB}
{2/9/96, Updated .81 number to .84, no changes necessary, MPK}
{3/22/96, Tested ZOnlyRepAutCycle, Incremented number to .87, MPK}
{7 Oct 98
Original: Hurco Ultimax BMC40 M330.87
Created: Hurco Ultimax BMC40 NC330.16
Changes made per: Gibbs and Associates
Added Post Header Comment at the top of Prog.
Deleted old version numbers and comments e.g. {.62}, {commands}, {literals}, etc
Updated to Longhand Advanced Mill C-Style Post per Fanuc 6M [PW] NCU99.16
Charles Winston}
{7 Oct 98, Created D_Style Advanced Mill Longhand Post, Charles Winston }
{11-4-98
Original: Hurco Ultimax BMC40 ND330.16
Created: Hurco Ultimax BMC40 ND330.17
added clamp & unclap for 4th axis, replaced '(' with '/' for all comments,
Texas Offline}
{3/3/99,
Initial : Hurco Ultimax BMC40 ND330.18.2
Created: Hurco Ultimax BMC40 ND330.16.3
Customer: Raytheon (Texas Off Line)
ComPost2: Compiled with v1.7b15
Changes to "Prog":
1. Added IF XMove? OR YMove? OR ZMove? inside EACH/NEXTQuadrant loop.
JHE}
{Prog Numeric Format Definitions **************************}
#1 = '#.00'
#2 = '#####.###;0.'
#3 = '*#####.###;0.'
#4 = '####.####;0.'
#5 = '#######0'
#6 = '####^##0'
#7 = '#'
#8 = 'ą#bbbb.bbbb#'
#9 = '+####.####;0.'
FORMAT(FileFeet#,1)
FORMAT(FileMeters#,1)
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(TrackZ#,4)
FORMAT(Recall#,5)
FORMAT(ADD#,5)
FORMAT(CS#,5)
FORMAT(PartNum#,5)
FORMAT(Program#,5)
FORMAT(Operation#,5)
FORMAT(Tool#,5)
FORMAT(NewWFO#,5)
FORMAT(Parts#,5)
FORMAT(Dwell#,6)
FORMAT(RapidF#,7)
FORMAT(SPZ#,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
CSPartNum#:
ADD# CS# MUL# NumOfCS# SUB# PartNum# Num#('1')
RETURN
CSWFO:
'G' ADD# CSPartNum# Num#('53')
RETURN
WFO:
'G' ADD# PartNum# Num#('53')
RETURN
WFOStuff:
{ Note: This Post Processor does not support WorkFixtureOffsets. }
RETURN
CSG52:
SeqC 'G52X' CSOffsetX# 'Y' CSOffsetY# 'Z' CSOffsetZ# EOL
RETURN
G52Stuff:
IF NOT Flag?('7') AND NOT WFOCS?
IF FirstOperation? OR NewTool? OR ChangeCS?
IF MultipleParts?
IF WorkFixtureOffsets?
CSG52
END
ELSE
CSG52
END
END
END
RETURN
DoCSComment:
'/ CS#' CS# ' - ' CSComment$ EOL
RETURN
DoCSWFOComment:
IF FirstOperation? OR NewTool? OR ChangeCS?
'/ ' CSWFO ' = X' CSOffsetX# ' Y' CSOffsetY# ' Z' CSOffsetZ#
IF Flag?('6') { TRUE = B-Style Output, FALSE = C-Style Output }
IF AAxisAvail?
' A' CSOffsetA#
END
IF BAxisAvail?
' B' CSOffsetB#
END
END
EOL
IF NOT Flag?('7') { TRUE = Local WFO Coordinates, FALSE = D-Style Output }
SetFlag('2') { Need to output WFOStuff }
END
END
RETURN
CSComments:
DoCSComment
IF WFOCS?
DoCSWFOComment
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
CSComments
END
RETURN
CSAngleA:
IF AAxisAvail?
IF Flag?('6') AND WFOCS? { TRUE = B-Style Output, FALSE = C-Style Output }
'A0.'
ELSE
'A' CSOffsetA#
END
END
RETURN
CSAngleAC:
IF AChange?
CSAngleA
END
RETURN
CSAngleB:
IF BAxisAvail?
IF Flag?('6') AND WFOCS? { TRUE = B-Style Output, FALSE = C-Style Output }
'B0.'
ELSE
'B' CSOffsetB#
END
END
RETURN
CSAngleBC:
IF BChange?
CSAngleB
END
RETURN
PSInit:
NewWFOF
FourthCWF
FourthCCWF
FifthCWF
FifthCCWF
RotateF
OptCyc1F
MasterOpF
CallMasterOpF
RETURN
PSStuff:
RETURN
DoPostScript:
PSInit
EachPS
SeqC PostScript EOL
PSStuff
NextPS
RETURN
DoEndOpPS:
PSInit
EachEOPS
SeqC EndOpPS EOL
PSStuff
NextPS
RETURN
loadPRIMEZCP2:
IF NOT Flag?('7')
LoadFeat Num#('0') Num#('0') PRIME ClearancePlane2#
ELSE
LoadFeat Num#('0') Num#('0') ADD# CSOffsetZ# PRIME ClearancePlane2#
END
RETURN
pRIMEZCP2:
IF NOT Flag?('7')
PRIME ZCP2
ELSE
'Z' TrackZ# ADD# CSOffsetZ# PRIME ClearancePlane2#
END
RETURN
loadPRIMEZCP3:
IF NOT Flag?('7')
LoadFeat Num#('0') Num#('0') PRIME ClearancePlane3#
ELSE
LoadFeat Num#('0') Num#('0') ADD# CSOffsetZ# PRIME ClearancePlane3#
END
RETURN
pRIMEZCP3:
IF NOT Flag?('7')
PRIME ZCP3
ELSE
'Z' TrackZ# ADD# CSOffsetZ# PRIME ClearancePlane3#
END
RETURN
connectC:
IF FeedConnect?
FeedC
ELSE
RapidC
END
RETURN
AbsValueC:
IF NOT AbsValue?
AbsValue
END
RETURN
IncValueC:
IF AbsValue?
IncValue
END
RETURN
AbsOrIncC:
IF AbsoluteMoves?
AbsValueC
ELSE
IncValueC
END
RETURN
EntryMove:
IF Repeats? AND ZShiftOnly? AND FeedConnect?
SeqC FeedC ZInC
IF NOT EmptyLine?
FeedEntC
END
EOL
ELSE
IF FeedEntry?
SeqC FeedC ZInC
IF NOT EmptyLine?
FeedEntC
END
EOL
ELSE
SeqC RapidC ZInC EOL
END
END
RETURN
autoCycExitMove:
SeqC AbsOrIncC CRCOffC
IF FIFO?
FeedC pRIMEZCP2 FeedEntC
ELSE
RapidC pRIMEZCP2
END
EOL
RETURN
ExitMove:
IF AutoCycle?
SeqC CRCOffC ZCP3C EOL
ELSE
IF FIFO?
SeqC CRCOffC FeedC ZCP3C FeedEntC EOL
ELSE
SeqC CRCOffC RapidC ZCP3C EOL
END
END
RETURN
FinishSub1:
SeqC CRCOffC
IF NOT FeedConnect?
loadPRIMEZCP3
IF ZMove?
IF AutoCycle?
pRIMEZCP3
ELSE
IF FIFO?
FeedC pRIMEZCP3 FeedEntC
ELSE
RapidC pRIMEZCP3
END
END
END
END
EOL
RETURN
FormatArc:
IF ArcCW?
CWArcC
ELSE
CCWArcC
END
Plane
IF XYPlane?
MoveX MoveY MoveZC
ELSE
IF XZPlane?
MoveX MoveYC MoveZ
ELSE {YZPlane}
MoveXC MoveY MoveZ
END
END
IF ArcIJFormat?
ArcIJ
ELSE
ArcR
END
RETURN
ckCRC:
IF LastFeat?
CRCOffC
ELSE
IF NOT ZMove?
CRCOnC
END
END
RETURN
ckCRCNum:
{ not supported }
RETURN
DoPeck: { LongDrillStuff }
{ not supported }
RETURN
DrillFeature: { LongDrillStuff }
{ not supported }
RETURN
DoMoveSZ:
IF SPZMove?
SetAbs
TrackZNO# ClearancePlane2#
SetInc
'Z' SPZ#
SetAbsOrInc
END
RETURN
ToolPath:
EACHFeat
IF PointFeat? { Drilling Only }
IF RetractToCP1?
IF NOT FirstFeat?
SeqC DrillOff EOL
SeqC Rapid ZCP1 EOL
SeqC MoveSX MoveSY EOL
SeqC ZCP2 EOL
SeqC Cycle MoveSX MoveSY DoMoveSZ Peck FeedEnt EOL
END
ELSE { NOT RetractToCP1 }
SeqC MoveSXYC DoMoveSZ EOL
END
ELSE
IF RapidFeat?
IF XMove? OR YMove? OR ZMove?
SeqC ckCRC RapidC MoveXYZC ckCRCNum EOL
END
ELSE
IF LineFeat?
IF XMove? OR YMove? OR ZMove?
SeqC ckCRC FeedC MoveXYZC FeedRateC ckCRCNum EOL
END
ELSE
IF ArcFeat?
EACHQuadrant
{Do not use NOT, FIRST, LAST or NEXT modifiers in this loop}
IF XMove? OR YMove? OR ZMove?
SeqC FormatArc ArcFeedC EOL
END
NEXTQuadrant
END
END
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
SeqC IncValueC EOL
RETURN
AutoCycCutSub2: {part 2}
SeqC AbsOrIncC CRCOffC
IF FIFO?
FeedC ZCP2C FeedEntC
ELSE
RapidC ZCP2C
END
EOL
SetSRSubXY {restore SR to 1st position value}
ReSetPass2 {restore for positioning moves}
RETURN
CutAutoCycle:
IF Repeats? AND NOT ZShiftOnly?
EachRep
IF NOT FirstCycle?
IF FIFO?
Rapid
END
SeqC RapidC StrtPos EOL
IF NOT FeedConnect?
SeqC ZCP2C EOL
END
END
END
EACHFeat
DoCycleComment
IF SPXMove? OR SPYMove?
IF FIFO?
Rapid
END
SeqC RapidC MoveSXYC EOL
END
AutoCycCutSub1
IF Repeats? AND ZShiftOnly?
EachRep
IF NOT FirstCycle?
DoCycleComment
IF SPXMove? OR SPYMove?
SeqC connectC IncValueC MoveSXYC EOL
END
AbsOrIncC
IF FeedConnect?
EntryMove
ELSE
IF FeedEntry?
SeqC RapidC ZCP2C EOL
END
EntryMove
END
SeqC IncValueC EOL
END
ToolPath
IF NOT FeedConnect?
autoCycExitMove
END
NextRep
ELSE
EntryMove
ToolPath
END
AutoCycCutSub2
NEXTFeat
IF Repeats? AND NOT ZShiftOnly?
FinishSub1
NextRep
END
SetPass1
RETURN
Milling:
IF Repeats?
EachRep
DoCycleComment
IF SPXMove? OR SPYMove?
SeqC connectC MoveSXYC EOL
END
IF FeedConnect?
EntryMove
ELSE
IF FeedEntry?
SeqC RapidC ZCP2C EOL
END
EntryMove
END
ToolPath
FinishSub1
NextRep
ELSE
EntryMove
ToolPath
END
RETURN
SetDrillEndOpZ:
IF RetractToCP1?
TrackZNO# ClearancePlane1#
ELSE
TrackZNO# ClearancePlane2#
END
RETURN
drilling:
SeqC ZCP2 EOL
GetCycle
SeqC Cycle StrtPos
SetAbs
TrackZNO# ClearancePlane2#
SetInc
'Z' FIRST SPZ#
SetAbsOrInc
Peck FeedEnt EOL
TrackZNO# FIRST SPZ# {.81.2}
ToolPath
SetDrillEndOpZ
SeqC DrillOff EOL
SeqC Rapid ZCP3 EOL
RETURN
CheckPass: {use the correct StrtPos}
IF AutoCycle?
SetPass2
ELSE
SetPass1
END
IF NOT Flag?('7') { TRUE = Local WFO Coordinates, FALSE = D-Style Output }
ClearCSOffset
END
RETURN
OpGuts:
ResetCRCNum
IF FirstOperation? OR NewTool?
RapidF# { Forces FeedEntC/FeedRateC }
END
IF Milling?
SeqC ZCP2C EOL
IF AutoCycle?
CutAutoCycle
ELSE
Milling
END
ExitMove
ELSE
IF Drilling?
drilling
END
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 }
SetFlagF('2') { Need to output WFOStuff twice for MP-ESO-OTAP-ECP, once for all others }
SetFlag('3') { Incrementing WFOs in effect }
SetFlag('4') { This post supports IncWFO/DecWFO }
SetFlagF('6') { TRUE = B-Style Output, FALSE = C-Style Output }
SetFlag('7') { TRUE = D-Style Output }
SetFlag('8') { TRUE = D-Style Output, FALSE = Local G52-WFO Coordinates }
IF PSComment? AND UseComments?
'Utility Data:' EOL
' At Op Start: All literals and commands will appear at the beginning of the operation.' EOL
' At Op End: All literals and commands will appear at the end of the operation.' 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
END
IF NOT Flag?('7')
IF Equal? NumOfCS# Num#('1') { 3 Axis Part - Output M-Style }
SetFlag('7')
ELSE
IF MultipleParts?
IF WorkFixtureOffsets?
IF LTEqual? MUL# Parts# NumOfCS# Num#('0')
SetWFOCS { use WFO for CS changes }
ELSE
IF Flag?('8')
SetFlag('7')
END
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 '
IF Flag?('7')
'non'
ELSE
'G52'
END
'-WFO style output. )' EOL
END
END
ELSE
SetFlag('7')
END
ELSE
IF LTEqual? NumOfCS# Num#('0') {****}
SetWFOCS { use WFO for CS changes }
ELSE
IF Flag?('8')
SetFlag('7')
END
IF UseComments?
'/ Not enough Work Fixture Offsets to handle this part. ' EOL
'/ Number of CSs [ ' NumOfCS# ' ] exceeds the machine limit. ' EOL
'/ Switching to '
IF Flag?('7')
'non'
ELSE
'G52'
END
'-WFO style output. )' EOL
END
END
END
END
END
RETURN
InitOp:
EOR EOL
IF UseComments? AND ProgramNameComment?
'/ PROGRAM: ' ProgramName$ EOL
END
EachOp
IF FirstOperation?
IF ToolChangeAtHome?
SetHome
END
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:
DoPartCycleComment
DoOpComments
DoPostScript
Seq Rapid Plane 'G70G90' Speed OpToolID ToolChng EOL
RETURN
FirstOp2:
SeqC WFOStuff EOL
G52Stuff
SeqC 'G75' SpinOn EOL
CheckPass
IF AAxisAvail? or BaxisAvail?
SeqC 'M33 ' EOL
END
SeqC StrtPos ZCP1 CSAngleA CSAngleB CoolOn EOL
IF AAxisAvail? or BaxisAvail?
SeqC 'M32 ' EOL
END
RETURN
FirstOp3:
RETURN
NewToolOp1:
SeqC CoolOff EOL
SeqC 'M25' EOL
RETURN
NewToolOp2:
DoEndOpPS
SeqC AbsOrIncC Rapid PRIME Home EOL
IF LAST ProgStop?
SeqC 'M0' EOL
ELSE
SeqC ProgStop EOL
END
RETURN
NewToolOp3: {Start new Operation}
Seq OpToolID ToolChng EOL
DoPartCycleComment
DoOpComments
DoPostScript
RETURN
NewToolOp4:
SeqC WFOStuff EOL
G52Stuff
SeqC PlaneC Speed SpinOn EOL
CheckPass
IF AAxisAvail? or BaxisAvail?
SeqC 'M33 ' EOL
END
SeqC AbsOrInc Rapid StrtPos CSAngleA CSAngleB EOL
IF AAxisAvail? or BaxisAvail?
SeqC 'M32 ' EOL
END
RETURN
NewToolOp5:
SeqC ZCP1 CoolOn EOL
RETURN
SameToolOp1:
DoEndOpPS
IF LAST ProgStop?
SeqC CoolOff EOL
SeqC 'M25' EOL
SeqC 'M0' EOL
ELSE
IF CoolOff? AND LAST NOT CoolOff?
SeqC CoolOff EOL
END
IF NewToolOffset? OR AChange? OR BChange?
SeqC 'M25' EOL
END
END
RETURN
SameToolOp2: {Start new Operation}
DoPartCycleComment
DoOpComments
DoPostScript
CheckPass
RETURN
SameToolOp3: {Start new Operation}
SeqC WFOStuff EOL
G52Stuff
IF LAST ProgStop?
IF AAxisAvail? or BaxisAvail?
SeqC 'M33 ' EOL
END
SeqC PlaneC AbsOrInc Rapid StrtPos CSAngleA CSAngleB Speed SpinOn EOL
IF AAxisAvail? or BaxisAvail?
SeqC 'M32 ' EOL
END
SeqC ZCP1 CoolOn EOL
ELSE
IF AAxisAvail? or BaxisAvail?
SeqC 'M33 ' EOL
END
SeqC PlaneC AbsOrInc Rapid StrtPos CSAngleA CSAngleB SpeedC EOL
IF AAxisAvail? or BaxisAvail?
SeqC 'M32 ' EOL
END
IF NewToolOffset? OR AChange? OR BChange?
SeqC ZCP1 EOL
END
IF NOT CoolOff? AND LAST CoolOff?
SeqC CoolOn EOL
END
END
RETURN
End1:
SeqC CoolOff EOL
SeqC 'M25' EOL
RETURN
End2:
DoEndOpPS
SeqC AbsOrInc Rapid PRIME {FirstHome} SpinOff EOL
IF Equal? CSOffsetA# Num#('0') AND Equal? CSOffsetB# Num#('0')
ELSE
SeqC AbsOrIncC
IF AAxisAvail?
CSAngleA
END
IF BAxisAvail?
CSAngleB
END
EOL
SeqC
IF AAxisAvail?
'A0'
END
IF BAxisAvail?
'B0'
END
EOL
END
IF ProgStop?
SeqC 'M0' EOL
ELSE
IF MultipleParts? AND AllToolsOnePart? AND NOT LastPart?
SeqC ProgStop EOL
END
END
RETURN
End3:
SeqC EOP EOL
'E' EOL
Close
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? OR EquallySpacedOffsets?
SetFlag('2') { Need to output WFOStuff twice for MP-ESO-OTAP-ECP, once for all others }
END
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') { Need to output WFOStuff twice for MP-ESO-OTAP-ECP, once for all others }
IF FirstOperation?
FirstOp1
FirstOp2
FirstOp3
ELSE
IF NewTool?
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN
MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane}
SetFlag('2') { Need to output WFOStuff twice for MP-ESO-OTAP-ECP, once for all others }
IF FirstOperation?
FirstOp1
FirstOp2
FirstOp3
ELSE
IF NewTool?
NewToolOp1
NewToolOp2
NewToolOp3
NewToolOp4
NewToolOp5
ELSE {implied SameTool?}
SameToolOp1
SameToolOp2
SameToolOp3
END
END
OpGuts
RETURN
NoMPs: {no multiple parts}
SetFlag('2') { Need to output WFOStuff twice for MP-ESO-OTAP-ECP, once for all others }
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
NewPart1: {Finish off last Part}
IF FullUp?
SeqC CoolOff EOL
SeqC 'M25' EOL
END
{DoEndOpPS}
RETURN
NewPart2: {Start new Part}
SameToolOp2
RETURN
NewPart3: {Start new Part}
SetFlag('2') { Need to output WFOStuff twice for MP-ESO-OTAP-ECP, once for all others }
SeqC WFOStuff EOL
G52Stuff
IF AAxisAvail? or BaxisAvail?
SeqC 'M33 ' EOL
END
SeqC PlaneC AbsOrInc Rapid StrtPos CSAngleA CSAngleB Speed EOL
IF AAxisAvail? or BaxisAvail?
SeqC 'M32 ' EOL
END
IF FullUp?
SeqC CoolOn EOL
END
RETURN
ToggleIncDecWFO:
IF Flag?('3') { Incrementing WFOs in effect }
SetFlagF('3')
ELSE { Decrementing WFOs in effect }
SetFlag('3')
END
RETURN
MPLoop:
Save# Num#('2') Recall# Num#('1')
IF WorkFixtureOffsets?
IF Flag?('3') { Incrementing WFOs in effect }
NewWFO
ELSE
LastWFO
END
EachWFO
ELSE
EachPart
END
IF AllToolsOnePart?
EachOp
MasterSub
NextOp
EndPartSub
ELSE { OneToolAllParts }
EachOp
IF Equal? Operation# Recall# Num#('2') { Valid Tool Op }
IF FirstOperation? OR NewTool?
IF FirstPart? AND Flag?('3') { Incrementing WFOs in effect }
MasterSub
ELSE
IF LastPart? AND NOT Flag?('3') { Decrementing WFOs in effect }
MasterSub
ELSE
NewPart1
NewPart2
NewPart3
OpGuts
END
END
ELSE
MasterSub
END
IF LastOp?
IF LastPart? AND Flag?('3') { Incrementing WFOs in effect }
Save# Num#('1') Num#('0')
ELSE
IF FirstPart? AND NOT Flag?('3') { Decrementing WFOs in effect }
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') { Incrementing WFOs in effect }
Save# Num#('1') NEXT Operation#
Save# Num#('2') Num#('0')
ELSE
IF FirstPart? AND NOT Flag?('3') { Decrementing WFOs in effect }
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') { Incrementing WFOs in effect }
IncWFO
NextWFO
DecWFO
ELSE { Decrementing WFOs in effect }
DecWFO
NextPrevWFO
IncWFO
END
IF Flag?('4') { This post supports IncWFO/DecWFO }
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:
Hurco Ultimax [AB] M594 87Hurco Ultimax [RTI] RMQ62 17 5Hurco Ultimax 3 [ID] MZ75 89Hurco Ultimax [AB] M594 87mHurco Ultimax [EM] MZ36 8716 30 Listopad 1994 Ultimatum JelcynaScenariusz 16 Rowerem do szkołyr 1 nr 16 138669446416 narrator16 MISJAwięcej podobnych podstron