plik


{Prog Comments ****} { 02/20/95 [ws] M750.00.00 Initial creation from M703.82.16 removed all settting of Cycle Parameter Values changed final M30 to M26M02 added tool prep of the first tool used in the last tool change. } { NOTE: Will Not Support Auto Drill Subs since this is a Long Hand Post } { 3/8/95 [ws] Cin Acr A2100-Lancer M750.00.01 (from M750.00.00) modified the colon block for same tool tool change to include a Z move to CP1. 4/4/95 [ws] Cin Acr A2100-Lancer M750.00.02 (from M750.00.01) eliminated the quotes (") from the MSG blocks (comments) modified to support A2100 loop structures for Multiple Parts Programming modified so no conversion made for English only post - will now be an English/Metric Post (G70/G71) modified to support Absolute positions after tool change when "Incremental" is selected. modified so message comment will recognize English/Metric programming modified so PostScript commands work correctly for Coolant added format command for TrackZNo to fix output of unwanted lines added TrackZNo in ZOnlyRep to fix incremental full up move for one case only (Plunge). 4/19/95 [ws] Cin Acr A2100-Lancer M750.00.03 (from M750.00.02) modified Multiple Parts Programming so M26 output on last operation. modified to Fix PostScript problem with First Operation. modified so PostScript done beforer the coolant code output. 5/10/95 [ws] Cin Acr A2100-Lancer M750.00.04 (from M750.00.03) modified ZOnlyRep sub to fix incorrect Ramp Moves. 8/1/95 [ws] Acr A2100-Generic M750.00.06 (from - Acr A2100-Generic M750.00.05) renamed SeqC to SeqLabC for two cases which caused negative number problems. forces a feedrate to be output for Thread Milling 2/14/96 [ws] Acr 2100-Generic M930.00 To be used with Windows Versions 2.28.09 and higher (MTest1) - 2/13/96 [ws] Form Change to support spaces before word letters modifed constant words to include spaces. (MTest2) - 2/14/96 [ws] added o-word w/ zero when no CRC. fixed no space w/ z-word for ZOnlyRep no feed connects. 7/25/96 [ws] Acr 2100-Generic M930.12.01 (Acr 2100-Generic M930.12 ) To be used with Windows Versions 2.28.09 and higher (MTest1) - 7/25/96 [ws] changed StdLine so entry moves would be at an entry feedrate. 8/6/96 [ws] Acr 2100-Generic M930.12.02 (Acr 2100-Generic M930.12.01 ) To be used with Windows Versions 2.28.09 and higher same as M930.12.01, but given new name since customer given a bad copy. 2/7/97 [ws] Acr 2100-Generic M930.12.03 (Acr 2100-Generic M930.12.02 ) (Testa) - 2/2/97 [ws] changed the SetMaxFeed('500') to SetMaxFeed('50000') (Testb) - 2/10/97 [ws] removed subs ckMove, ckHMove, ckVMove and calls to it which provided arc to line special code (see DB). In Toolpath, removed call to ckMove and related lines. commented out calls for creating subroutines since this is a no sub post. 3/13/97 [ws] Acr 2100-Generic M930.12.04 (Acr 2100-Generic M930.12.03 ) (Testa) - 3/13/97 [ws] removed the z-word following the colon block with the T-word. added block delete (//1) before the T-word when a same tool is used. changed so will retract to part clearance before a tool change. added 'M26' block before a move to tool change position if specified. added '//1 M26' and //1 X Y blocks for a same tool if tool change position specified. added space before lines with FIXTURE_NUM when multiple parts are specified. (Testb) - 3/14/97 [ws] removed ZCP1 on G0 line following the colon block with the T-word. added colon before 'M26' blocks so could be used as a start of a block. removed the extra 'M26' block on tool changes. (Testc) - 3/14/97 [ws] added logic in New Tool to suppress M26 when 1TAPfu added a space in front of MP comment providing the GOTO jump. (Testd) - 3/17/97 [ws] added move to tool change position for first operation removed logic in New Tool to suppress M26 when 1TAPfu and replaced it with M26 remove M26 being output after NewToolOp2 for 1TAPfu (Teste) - 3/17/97 [ws] added an M26 before tool change for a first tool operation. (Testf) - 3/18/97 [ws] moved ToolChangeAtHome? logic to after the operation label in First and NewTool Operations MP. expanded ToolChangeAtHome? logic to include No Tool Change case modifed END1_MP adding M26 for 1TAPfu case (Testg) - 3/18/97 [ws] changed END1_MP added M26 for 1PAT case. deleted ToolChangeAtHome? case in END code. 4/22/97 [ws] Acr 2100-Generic M930.12.05 (Acr 2100-Generic M930.12.04 ) moved D & O words to the colon block line to fix block delete problem. } {5/19/97, Initial: Acr A2100 Generic M930.12.5 Created: Acr A2100 [BM] Mxxx.12 For: Bonham Metal Modified NotSameToolWFO and SameToolWfo to only output if NewWFO? is true, Eliminated pretooling, Eliminated Max Feedrate and Spindle speed, Moved DoOpComments in NewToolOp3 to after colon block, Reformatted F in default formats to 5 decimal places, eliminated us of colon block in SameTool, MPK } {Prog Numeric Format Definitions ****} #1 = '#.00' #2 = '###.###;0' #3 = '*###.###;0' #4 = '####.####;0' #5 = '#######0' #6 = '##.##;0' #7 = '0000' #8 = '+####.####;0' #9 = '####0' FORMAT(FileFeet#,1) FORMAT(FileMeters#,1) FORMAT(CP1LessCP2#,4) FORMAT(ABS#,4) FORMAT(ADD#,4) FORMAT(SUB#,4) FORMAT(MUL#,4) FORMAT(DIV#,4) FORMAT(CalcZSurf#,4) FORMAT(FluteLen#,4) FORMAT(ClearancePlane1#,4) FORMAT(ClearancePlane2#,4) FORMAT(ClearancePlane3#,4) FORMAT(Retract#,4) FORMAT(Peck#,4) FORMAT(ToolDiameter#,4) FORMAT(TrackZNO#,4) FORMAT(Repeats#,5) FORMAT(Tag#,5) FORMAT(Operation#,5) FORMAT(Tool#,5) FORMAT(Recall#,5) FORMAT(NewWFO#,5) FORMAT(Parts#,5) FORMAT(Dwell#,6) FORMAT(Program#,7) FORMAT(HelixPitch#,8) FORMAT(Program#,9) {Prog Subroutines ****} {***** CMI specific Subroutines *****} ToolCRCOfst: IF CutterRadiusCompensation? ' D' ToolOffset# ' O' CRCOffset# ELSE ' D' ToolOffset# ' O0' END RETURN CMI_Wvalue: IF Backbore? ' W0' ELSE IF RetractToCP1? IF NotEqual? SUB# ClearancePlane1# CalcZSurf# Num#('0') IF GreaterThan? SUB# ClearancePlane1# CalcZSurf# Num#('0') ' W' SUB# ClearancePlane1# CalcZSurf# END END ELSE IF NotEqual? SUB# ClearancePlane2# CalcZSurf# Num#('0') IF GreaterThan? SUB# ClearancePlane2# CalcZSurf# Num#('0') ' W' SUB# ClearancePlane2# CalcZSurf# END END END END RETURN PitchOfHelix: SetStatusOff Save# Num#('7') ABS# SUB# EPZ# SPZ# { Delta Z } ' K' MUL# Recall# Num#('7') DIV# Num#('360.0') ArcAngle# { Delta Z * ( 360 / Arc Angle) } SetStatusOn RETURN CMIOpComments: IF FIFO? AND Dwell? 'Bore/Ream w/ Dwell' ELSE IF FIRIFIRO? 'Web Drill' ELSE IF BackBore? 'BackBore' ELSE IF FIStopOffWallRO? 'Dead Spindle Retract' ELSE IF RigidTap? 'Rigid Tap' ELSE IF Tap? 'Tap' ELSE IF FIRO? AND Dwell? 'Drill w/ Dwell' ELSE IF FIFO? 'Bore/Ream' ELSE IF Peck? IF PeckFullRetract? IF GreaterThan? Peck# Num#('0') 'FixPeck, FullOut' {J13} ELSE 'VarPeck, FullOut' {J3} END ELSE {Chip Break} IF GreaterThan? Peck# Num#('0') IF GTEqual? Retract# Num#('0') 'FixPeck, ChipBreak' {J11} ELSE 'FixPeck, ChipClear' {J12} END ELSE IF GTEqual? Retract# Num#('0') 'VarPeck, ChipBreak' {J1} ELSE 'VarPeck, ChipClear' {J2} END END END ELSE OperationType$ { Drill, Contour, Pocket, Thread Mill } END END END END END END END END END RETURN {***** End A2100 specific Subroutines *****} RestoreScale: {not used - references to this sub is commented out} IF Metric? {CAM file is in Metric, tools and tool path} SetScale('.03937007874') { change to English, this is an English post} END RETURN DoSubComment: IF UseComments? AND SubComment? '(MSG, "SUB NUMBER: ' Tag# '" )' EOL END RETURN DoOpComments: IF UseComments? SetScale('1') IF OperationIDComment? '(MSG, OPERATION ' Operation# ': ' CMIOpComments ' )' EOL END IF OperationComment? '(MSG, ' OperationComment$ ' )' EOL END IF WorkGroupComment? '(MSG, ' WorkGroupComment$ ' )' EOL END IF ToolTypeComment? '(MSG, TOOL ' Tool# ': ' ToolDiameter# ' ' ToolType$ ' )' EOL END IF ToolComment? '(MSG, ' ToolComment$ ' )' EOL END {RestoreScale} END RETURN DoCoolOn: IF ThruSpin? ' M27' ELSE IF Pulse? ' M28' ELSE IF Mist? ' M29' ELSE IF HiPressure? ' M07' ELSE IF FloodThruSpin? ' M8 M27' ELSE {Flood} CoolOn {M8} END END END END END RETURN PSInit: {reset flags} NewWFOF RotateF OptCyc1F { ??? } {ResetCool} RETURN GetIndex: IF FourthCW? FORMAT(FourthDegree#,2) ' A' FourthDegree# FourthCWF {reset flag} END IF FourthCCW? FORMAT(FourthDegree#,3) ' A' FourthDegree# FourthCCWF {reset flag} END IF FifthCW? FORMAT(FifthDegree#,2) ' B' FifthDegree# FifthCWF {reset flag} END IF FifthCCW? FORMAT(FifthDegree#,3) ' B' FifthDegree# FifthCCWF {reset flag} END RETURN PSStuff: RETURN DoPostScript: PSInit EachPS SeqLabC PostScript EOL {literals} PSStuff {commands} NextPS RETURN DoEndOpPS: PSInit EachEOPS SeqLabC EndOpPS EOL {literals} PSStuff {commands} SeqLabC GetIndex EOL NextPS RETURN DoLastEndOpPS: PSInit NEXT EachEOPS SeqLabC EndOpPS EOL {literals} PSStuff {commands} SeqLabC GetIndex EOL NextPS RETURN EntryMove: IF FeedEntry? SeqLabC Feed ZIn FeedEnt EOL ELSE SeqLabC RapidC ZIn EOL END RETURN StartSub: OpenSub '(DFS,L' Tag# ')' EOL {DoSubComment} RETURN SubWarning: IF NOT FeedConnect? IF AnyZshift? ' ' EOL '(MSG, "WARNING Z CLEARANCE WILL CHANGE WITH EACH CYCLE OF SUB REPEAT" )' EOL ' ' EOL END END RETURN StdSub: {not used in Virtual, only used in non SepSub Repeats} SeqLabC 'G10=[T2]V0' EOL {sets temporary register #2 to 0} SeqLabC 'Q' Tag# '1' EOL {branch label 1} SeqLabC '(CLS,L' Tag# ')' EOL {call subroutine} SeqLabC 'G10=[T2]V[T2]+1' EOL {increment register #2 by 1} SeqLabC 'G11E[T2]=' Repeats# 'L' Tag# '2' EOL {if register #2 is equal to number of repeats then jump to branch label 2} SeqLabC 'G11L-' Tag# '1' EOL {jump backwards to branch label 1} SeqLabC 'Q' Tag# '2' EOL {branch label 2} {StartSub} RETURN FinishSub1: {part 1} SeqLabC IF NOT FeedConnect? IF AutoCycle? ZCP3C ELSE IF FIFO? FeedC ZCP3C FeedEntC ELSE RapidC ZCP3C END END END EOL RETURN FinishSubG92: {part 2} SeqLabC Preset ShiftRC EOL SeqLabC '(ENS)' EOL CloseSub SeqLabC Preset UnshftRC EOL RETURN OpenMP: IF WFOCS? '(Advanced Mill Multiple parts, Long Hand not supported in this post)' EOL ELSE {TagInc} IF WorkFixtureOffsets? ELSE '(Non-WFO Multiple parts, Long Hand not supported in this post)' EOL END END RETURN CloseMP: IF WFOCS? '(Advanced Mill Multiple parts, Long Hand not supported in this post)' EOL ELSE IF WorkFixtureOffsets? ELSE '(Non-WFO Multiple parts, Long Hand not supported in this post)' EOL END END RETURN SetZRepInc: {rep change 10} IF Flag?('1') AND ZMove? AND AbsoluteMoves? IncValue SetFlag('2') END RETURN RestoreAbsOrInc: {rep change 11} IF Flag?('2') AND NOT ZMove? AbsValue SetFlagF('2') END RETURN FormatArc: IF ArcCW? CWArcC ELSE CCWArcC END IF XYPlane? IF ZMove? MoveX MoveY MoveZ ArcIJ PitchOfHelix ELSE MoveX MoveY ArcIJ END ELSE IF XZPlane? MoveX MoveZ ArcIJ ELSE { YZPlane } MoveY MoveZ ArcIJ END END RETURN CkCRC: IF LastFeat? { Exit Length Feature } CRCOffC ELSE IF XMove? OR YMove? { Approach Length Feature and Multiple Pockets } CRCOnC END END RETURN StdLine: {enables CRC on first call} IF Decelerate? IF RoomToDecel? DecelMove1 RestoreAbsOrInc SetZRepInc SeqLabC FeedC CkCRC MoveXYC MoveZC FeedRateC EOL { CRCOffsetC } RestoreAbsOrInc DecelMove2 END RestoreAbsOrInc SetZRepInc SeqLabC FeedC CkCRC MoveXYC MoveZC DecelFeed EOL { CRCOffsetC } ELSE IF XMove? OR YMove? OR ZMove? RestoreAbsOrInc SetZRepInc IF AutoCycle? AND Flag?('3') SeqLabC FeedC CkCRC MoveXYC MoveZC FeedRate EOL { CRCOffsetC } SetFlagF('3') ELSE IF ZMove? SeqLabC FeedC CkCRC MoveXYC MoveZC FeedEntC EOL { CRCOffsetC } ELSE SeqLabC FeedC CkCRC MoveXYC MoveZC FeedRateC EOL { CRCOffsetC } END END END END RETURN ToolPath: ResetCRCNum EACHFeat IF PointFeat? IF Drilling? IF SPXMove? OR SPYMove? OR SPZMove? SeqLabC MoveSXYZC CMI_Wvalue EOL END ELSE SeqLabC MoveSXYZC EOL END ELSE IF RapidFeat? IF AutoCycle? IF LastFeat? CRCOffC END RestoreAbsOrInc SetZRepInc SeqLabC RapidC MoveXYC MoveZC EOL ELSE IF ZMove? AND NOT XMove? AND NOT YMove? CRCOffC END IF XMove? OR YMove? OR ZMove? RestoreAbsOrInc SetZRepInc SeqLabC RapidC MoveXYC MoveZC EOL END END ELSE IF LineFeat? IF AutoCycle? IF LastFeat? RestoreAbsOrInc SetZRepInc SeqLabC CRCOffC FeedC MoveXYC MoveZC FeedRateC EOL {MoveXYC SetZRepInc MoveZC, was MoveXYZC} ELSE IF ZMove? {skip CRCOn until first non-Z move line, skipping ramps} RestoreAbsOrInc SetZRepInc SeqLabC FeedC MoveXYC MoveZC FeedEntC EOL {MoveXYC SetZRepInc MoveZC, was MoveXYZC} ELSE StdLine {enables CRC on first call} END END ELSE StdLine END ELSE IF ArcFeat? EACHQuadrant { Do not use NOT, FIRST, LAST or NEXT modifiers in this loop } IF LastQuadrant? AND Decelerate? IF RoomToDecel? DecelMove1 RestoreAbsOrInc SetZRepInc SeqLabC FormatArc ArcFeedC EOL DecelMove2 END RestoreAbsOrInc SetZRepInc SeqLabC FormatArc DecelFeed EOL ELSE RestoreAbsOrInc SetZRepInc SeqLabC FormatArc ArcFeedC EOL END NEXTQuadrant END END END IF LastFeat? AND CutterRadiusCompensation? AND NOT AutoCycle? CRCOffC IF NOT EmptyLine? RestoreAbsOrInc SetZRepInc SeqLabC LastFeatExtend EOL { ??? any zmoves ??? } END END END NEXTFeat RETURN AutoCycCutSub1: {part 1} CalcACSRXY {calc tool position, CalcAutoCycleStatusRecordXY} SaveSubStatus {save tool position} SetPass1 {element cut moves} SetSRXYtoSP SeqLabC IncValue EOL RETURN AutoCycCutSub2: {part 2} SeqLabC AbsValue IF FIFO? {.81} FeedC ZCP2 FeedEntC {.71.2 removed CRCOffC, gets turned off in ToolPath} ELSE RapidC ZCP2 END EOL SetSRSubXY {restore SR to 1st position value} ReSetPass2 {restore for positioning moves} RETURN AutoCycPat: SetPass2 {position pattern} ToolPath {call after NewProg for correct sub calls} SetPass1 {reset} RETURN Milling: EntryMove ToolPath RETURN G92Sub: {SubWarning} {StdSub} SeqLabC AbsOrInc Connect StrtPos EOL Milling {FinishSub1} {FinishSubG92} RETURN NoRepAutoCycle: EACHFeat IF SPXMove? OR SPYMove? SeqLabC RapidC MoveSXYC EOL END AutoCycCutSub1 Milling AutoCycCutSub2 NEXTFeat RETURN ZonlyRep: SetFlag('1') {std sep sub Zreps are in effect} EachCycle IF NOT FirstCycle? SeqLabC Connect StrtPos EOL {added Connect} END IF FeedConnect? SeqLabC FeedC ZInPlusInc FeedEnt EOL {changed to FeedC} ELSE {Entry/Exit Connect} IF FeedEntry? IF NOT FirstCycle? SeqLabC RapidC ZCP2PlusIncC EOL {can't call for cycle =1} {added Rapid, reads better} {.71.2, changed to RapidC, reads better} END SeqLabC Feed ZInPlusInc FeedEnt EOL ELSE SeqLabC RapidC ZInPlusInc EOL {added Rapid, reads better} {changed to RapidC, reads better} END END TrackZNO# FIRST SPZ# ToolPath IF NOT FeedConnect? IF AutoCycle? SeqLabC ZCP3C EOL ELSE IF FIFO? SeqLabC FeedC ZCP3C FeedEntC EOL ELSE IF AbsoluteMoves? TrackZNO# ClearancePlane3# SeqLabC Rapid ' Z' ClearancePlane3# EOL ELSE TrackZNO# ZInPlusInc# SeqLabC RapidC ZCP3C EOL END END END END NextCycle RETURN CheckPass: IF AutoCycle? {use the correct StrtPos} SetPass2 ELSE SetPass1 END RETURN ProgStart: InitProg ReverseXZArcs InitWFONum SetFlood SetFlagF('1') {not std sep sub Zreps in effect} {rep change 2} SetFlagF('2') SetFlagF('3') {used in Thread Milling only to force the Feedrate on first feed move since new block} SetFlagF('9') UseSeparateSubCalls SetMaxSeparateSubCalls('500') {Variables initialized to 0} Save# Num#('2') Num#('0') { Num#('2') variable used for GOTO operation #} Save# Num#('3') Num#('0') { Num#('3') variable used for backbore Tool Radius calculation} Save# Num#('4') Num#('0') { Num#('4') variable used for backbore Shank Radius calculation} Save# Num#('5') Num#('0') { Num#('5') variable used for backbore Width calculation} Save# Num#('6') Num#('0') { Num#('6') variable used for backbore U value calculation} 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 ' EndOP -' EOL ' all literals and commands before an ENDOP command' EOL ' will appear at the beginning of the operation. All ' EOL ' literals and commands after an ENDOP command will appear' EOL ' at the end of the operation. ' 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 ncPost multiple part 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 END RETURN OpGuts: SeqLabC ZCP2C EOL IF Milling? SeqLabC ZCP2C EOL IF AutoCycle? {Thread Mill Only} NoRepAutoCycle {SeqLabC ExitMove2 EOL} ELSE IF Repeats? TagInc IF ZshiftOnly? IF UseSeparateSubCalls? AND CyclesLessThanMaxSubCalls? ZonlyRep {rep change 1} ELSE {no sep subs desired} EOL '*** Not Supported - 1 *** ' EOL {G92Sub} EOL END ELSE {not Z only} EOL '*** Not Supported - 2 *** ' EOL {G92Sub} EOL END {end Z only IF} ELSE {no repeat OPs} Milling END END IF NEXT NewTool? IF AutoCycle? SeqLabC ZCP1C EOL ELSE IF FIFO? SeqLabC FeedC ZCP3C FeedEntC EOL SeqLabC RapidC ZCP1C EOL ELSE SeqLabC RapidC ZCP1C EOL END END ELSE IF AutoCycle? SeqLabC ZCP3C EOL ELSE IF FIFO? SeqLabC FeedC ZCP3C FeedEntC EOL ELSE SeqLabC RapidC ZCP3C EOL END END END ELSE IF Drilling? IF Repeats? EOL '*** Not Supported - 3 *** ' EOL { TagInc {StdSub} SeqLabC AbsOrInc Rapid StrtPos EOL } END EOL {SeqLabC DrillCP EOL} GetCycle IF FIFO? AND Dwell? { Bore/Ream with Dwell } SeqLabC PlaneC ' G89' ELSE IF FIRIFIRO? SeqLabC PlaneC ' G88' ELSE IF BackBore? SeqLabC PlaneC ' G87' ELSE IF FIStopOffWallRO? SeqLabC PlaneC ' G86' ELSE IF RigidTap? SeqLabC PlaneC ' G84.1' ELSE SeqLabC PlaneC Cycle END END END END END StrtPos IF Backbore? ' Z' ADD# Zdepth# ClearancePlane2# ELSE ' Z' Sub# Add# ClearancePlane2# Zdepth# CalcZSurf# { Z = tip depth - Top Surface} END IF Backbore? ' R' ClearancePlane2# ELSE IF AbsValue? ' R' CalcZSurf# ELSE SetAbs ' R' CalcZSurf# SetInc END END CMI_Wvalue IF FIStopOffWallRO? ' U' MUL# Num#('-1.0') ABS# Retract# 'V0J0' END IF BackBore? FORMAT(Recall#,4) Save# Num#('3') DIV# ToolDiameter# Num#('2.0') {Tool Radius} Save# Num#('4') DIV# ShankDiam# Num#('2.0') {Shank Radius} Save# Num#('5') ADD# ShankDiam# SUB# Recall# Num#('3') Recall# Num#('4') {Width} Save# Num#('6') MUL# Num#('-1.0') ABS# SUB# DIV# Recall# Num#('5') Num#('2.0') Recall# Num#('4') {U} ' I' SUB# ClearancePlane2# CalcZSurf# ' K' FluteLen# ' U' Recall# Num#('6') ' V0 J0' FORMAT(Recall#,5) END IF FIRIFIRO? ' I' Peck# ' K' Retract# END IF Peck? IF NotEqual? Peck# Num#('0') ' K' ABS# Peck# END END GetIndex FeedEnt IF Peck? IF PeckFullRetract? IF GreaterThan? Peck# Num#('0') ' J13' ELSE ' J3' END ELSE {Chip Break} IF GreaterThan? Peck# Num#('0') IF GTEqual? Retract# Num#('0') ' J11' ELSE ' J12' END ELSE IF GTEqual? Retract# Num#('0') ' J1' ELSE ' J2' END END END ELSE { IF Tap? AND OptCyc1? 'J1' END } END EOL TrackZNO# FIRST SPZ# ToolPath IF RetractToCP1? TrackZNO# ClearancePlane1# ELSE TrackZNO# ClearancePlane2# END SeqLabC DrillOff IF RetractToCP1? IF AbsValue? ' R' ClearancePlane1# ELSE SetAbs ' R' ClearancePlane1# SetInc END ELSE IF AbsValue? ' R' ClearancePlane2# ELSE SetAbs ' R' ClearancePlane2# SetInc END END EOL IF Repeats? {FinishSubG92} END IF NEXT NewTool? SeqLabC Rapid ZCP1C EOL ELSE SeqLabC Rapid ZCP3C EOL END END END SetFlagF('1') {not std sep sub Zreps in effect} {rep change 3} RETURN NotSameToolWFO: IF NewWFO? ' H' NewWFO# END RETURN SameToolWFO: IF NewWFO? ' H' NewWFO# END RETURN InitOp: '(PGM, ' IF ProgramComment? 'NAME="' ProgramComment$ '",' ELSE 'NAME="' PartName$ '",' END IF GTEqual? Program# Num#('0') ' ID="' Program# '",' END ' TYPE="A2100_274" )' EOL IF ToolChangeAtHome? SetHome END IF UseComments? IF Metric? ':G17 G71 G90' EOL ELSE ':G17 G70 G90' EOL END '(MSG, PART: ' PartName$ ' )' EOL IF ProgramNameComment? '(MSG, PROGRAM: ' ProgramName$ ' )' EOL END IF ProgramComment? '(MSG, ' ProgramComment$ ' )' EOL END IF FormatNameComment? '(MSG, FORMAT: ' FormatName$ ' )' EOL END IF TimeComment? '(MSG, ' Date$ ' AT ' Time$ ' )' EOL END IF MovesComment? IF Metric? '(MSG, OUTPUT IN ' MoveType$ ' MM )' EOL ELSE '(MSG, OUTPUT IN ' MoveType$ ' INCHES )' EOL END END IF PartsComment? '(MSG, PARTS PROGRAMMED: ' Parts# ' )' EOL END IF StartToolComment? '(MSG, FIRST TOOL NOT IN SPINDLE )' EOL END END OpenSub {RestoreScale} RETURN ColonBlock: SetAbs IF Metric? ':?' Plane ' G71 G90' Rapid ToolCRCOfst ELSE ':?' Plane ' G70 G90' Rapid ToolCRCOfst END SetFlag('3') RETURN CoolantOn: IF AbsoluteMoves? SeqLabC DoCoolOn EOL ELSE SeqLabC AbsOrInc DoCoolOn EOL END RETURN FirstOp1: DoOpComments IF ToolChangeAtHome? ':? M26' EOL SeqLabC AbsOrInc Rapid Home EOL END ColonBlock ' T' Tool# ToolChng EOL { Inch } Save# Num#('1') Tool# { save first tool number in Num#('1') variable } RETURN FirstOp1_MP: DoOpComments SeqLabC ' [@NUM_OF_PARTS]=' Parts# EOL ':?' EOL SeqLabC ' [@FIXTURE_NUM]=1' EOL '[OPERATION' Operation# ']' EOL IF ToolChangeAtHome? ':? M26' EOL SeqLabC AbsOrInc Rapid Home EOL ELSE IF OneToolAllParts? AND FullUp? ':? M26' EOL END END ColonBlock ' T' Tool# ToolChng EOL { Inch } Save# Num#('1') Tool# { save first tool number in Num#('1') variable } Save# Num#('2') Operation# { save Operation number in Num#('2') variable } RETURN FirstOp2: RETURN FirstOp3: CheckPass SeqLabC Rapid StrtPos GetIndex Speed SpinOn EOL DoPostScript CoolantOn RETURN FirstOp3a: {can't XY position before WFO} CheckPass SeqLabC Rapid StrtPos GetIndex Speed SpinOn EOL DoPostScript CoolantOn RETURN FirstOp3_MP: CheckPass SeqLabC Rapid StrtPos GetIndex Speed SpinOn ' H[@FIXTURE_NUM]' EOL DoPostScript CoolantOn RETURN FirstOp3b: CheckPass SeqLabC Rapid StrtPos GetIndex Speed SpinOn NotSameToolWFO EOL DoPostScript CoolantOn RETURN NewToolOp1: RETURN NewToolOp2: DoEndOpPS IF LAST ProgStop? SeqLabC 'M0' EOL ELSE SeqLabC ProgStop EOL END RETURN NewToolOp3: {Start new Operation} IF ToolChangeAtHome? ':? M26' EOL SeqLabC AbsOrInc Rapid Home EOL END ColonBlock ' T' Tool# ToolChng EOL DoOpComments RETURN NewToolOp3_MP: {Start new Operation} SeqLabC ' [@FIXTURE_NUM]=[@FIXTURE_NUM]+1' EOL SeqLabC ' (IF [@FIXTURE_NUM]<=[@NUM_OF_PARTS] GOTO [OPERATION' Recall# Num#('2') '])' EOL DoOpComments ':?' EOL SeqLabC ' [@FIXTURE_NUM]=1' EOL '[OPERATION' Operation# ']' EOL IF ToolChangeAtHome? ':? M26' EOL SeqLabC AbsOrInc Rapid Home EOL ELSE IF OneToolAllParts? AND FullUp? ':? M26' EOL END END ColonBlock FORMAT(ADD#,7) ' T' Tool# ToolChng EOL FORMAT(ADD#,4) Save# Num#('2') Operation# { save Operation number in Num#('2') variable } RETURN NewToolOp4: RETURN NewToolOp5: CheckPass SeqLabC PlaneC Rapid StrtPos GetIndex Speed SpinOn EOL DoPostScript CoolantOn RETURN NewToolOp5a: CheckPass SeqLabC PlaneC Rapid StrtPos GetIndex Speed SpinOn EOL DoPostScript CoolantOn RETURN NewToolOp5b: CheckPass SeqLabC PlaneC Rapid StrtPos GetIndex Speed SpinOn NotSameToolWFO EOL DoPostScript CoolantOn RETURN NewToolOp5b_MP: CheckPass SeqLabC PlaneC Rapid StrtPos GetIndex Speed SpinOn ' H[@FIXTURE_NUM]' EOL DoPostScript CoolantOn RETURN SameToolOp1: DoEndOpPS IF LAST ProgStop? SeqLabC SpinOff EOL SeqLabC 'M0' EOL ELSE IF CoolOff? AND LAST NOT CoolOff? SeqLabC CoolOff EOL END IF NewToolOffset? OR ChangeCS? { ??? due full up here ??? } END END RETURN SameToolOp2: {Start new Operation} DoOpComments CheckPass RETURN SameToolOp3: {Start new Operation} SeqLabC PlaneC AbsOrInc Rapid StrtPos GetIndex SpeedC NotSameToolWFO EOL DoPostScript IF Not CoolOff? AND LAST CoolOff? CoolOn END RETURN SameToolOp3_MP: {Start new Operation} SeqLabC PlaneC AbsOrInc Rapid StrtPos GetIndex SpeedC SpinOn ' H[@FIXTURE_NUM]' EOL DoPostScript CoolantOn { Old way of handling the SameToolOp3 routine IF LAST ProgStop? SeqLabC PlaneC Rapid StrtPos ZCP1 GetIndex ToolCRCOfst Speed SpinOn EOL SeqLabC DoCoolOn EOL ELSE IF NewToolOffset? OR ChangeCS? SeqLabC PlaneC Rapid StrtPos ZCP1 GetIndex ToolCRCOfst SpeedC EOL ELSE SeqLabC PlaneC Rapid StrtPos GetIndex ToolCRCOfst SpeedC EOL END IF NOT CoolOff? AND LAST CoolOff? SeqLabC DoCoolOn EOL END END } RETURN End1: ':?' EOL RETURN End1_MP: IF AllToolsOnePart? ':? M26' EOL END RETURN End2: DoLastEndOpPS IF ProgStop? SeqLabC ' M0' EOL END RETURN End3: SeqLabC ' M26 M02' EOL { End of Program } CloseSub Post2 {organize Subs into one program} IF UseComments? SetScale('1') {restore scale for comments} IF FileBytesComment? '(MSG, FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL END IF FileFeetComment? '(MSG, FILE LENGTH: ' FileFeet# ' FEET )' EOL END IF FileMetersComment? '(MSG, FILE LENGTH: ' FileMeters# ' METERS )' EOL END END { EOR EOL } Close ReTag RETURN End3_MP: SeqLabC ' [@FIXTURE_NUM]=[@FIXTURE_NUM]+1' EOL IF AllToolsOnePart? SeqLabC ' (IF [@FIXTURE_NUM]<=[@NUM_OF_PARTS] GOTO [Operation1])' EOL ELSE SeqLabC ' (IF [@FIXTURE_NUM]<=[@NUM_OF_PARTS] GOTO [OPERATION' Recall# Num#('2') '])' EOL END SeqLabC ' M26 M02' EOL { End of Program } CloseSub Post2 {organize Subs into one program} IF UseComments? SetScale('1') {restore scale for comments} IF FileBytesComment? '(MSG, FILE LENGTH: ' FileBytes# ' CHARACTERS )' EOL END IF FileFeetComment? '(MSG, FILE LENGTH: ' FileFeet# ' FEET )' EOL END IF FileMetersComment? '(MSG, FILE LENGTH: ' FileMeters# ' METERS )' EOL END END { EOR EOL } Close ReTag RETURN MPallTools1P: {Multiple Parts, All Tools 1 Part} EachOp {Start of post processing} IF FirstOperation? InitOp FirstOp1_MP FirstOp2 FirstOp3_MP ELSE IF NewTool? NewToolOp1 NewToolOp2 NewToolOp3 NewToolOp4 NewToolOp5b_MP ELSE {implied SameTool?} SameToolOp1 SameToolOp2 SameToolOp3_MP END END {common point for all operations} OpGuts NextOp {loops back to EachOP until last Operation} End1_MP {End of program} End2 End3_MP RETURN MP1ToollAllPfu: {Multiple Parts, 1 Tool all Parts, full up} EachOp {Start of post processing} IF FirstOperation? InitOp FirstOp1_MP FirstOp2 FirstOp3_MP ELSE IF NewTool? NewToolOp1 NewToolOp2 {':?' ' M26' EOL} NewToolOp3_MP NewToolOp4 NewToolOp5b_MP ELSE {implied SameTool?} SameToolOp1 SameToolOp2 SameToolOp3_MP END END {common point for all operations} OpGuts NextOp {loops back to EachOP until last Operation} End1_MP {End of program} End2 End3_MP RETURN MP1ToollAllPXcp: {Multiple Parts, 1 Tool all Parts, exit Clearance plane} EachOp {Start of post processing} IF FirstOperation? InitOp FirstOp1_MP FirstOp2 FirstOp3_MP ELSE IF NewTool? NewToolOp1 NewToolOp2 {':?' EOL} NewToolOp3_MP NewToolOp4 NewToolOp5b_MP ELSE {implied SameTool?} SameToolOp1 SameToolOp2 SameToolOp3_MP END END {common point for all operations} OpGuts NextOp {loops back to EachOP until last Operation} End1_MP {End of program} End2 End3_MP RETURN NoMPs: {no multiple parts} EachOp {Start of post processing} IF FirstOperation? InitOp FirstOp1 FirstOp2 FirstOp3b ELSE IF NewTool? NewToolOp1 NewToolOp2 NewToolOp3 NewToolOp4 NewToolOp5b ELSE {implied SameTool?} SameToolOp1 SameToolOp2 SameToolWFO SameToolOp3 END END {common point for all operations} OpGuts NextOp {loops back to EachOP until last Operation} End1 {End of program} End2 End3 RETURN {Start of executable Prog, top level ****} ProgStart {setup and initializations} IF MultipleParts? IF AllToolsOnePart? MPallTools1P ELSE {implied OneToolAllParts?} IF FullUp? MP1ToollAllPfu ELSE {implied ExitClearancePlane?} MP1ToollAllPXcp END END ELSE NoMPs END

Wyszukiwarka

Podobne podstrony:
Cin Acr A2100 Sabre M751 12 1
Acr A2100 [DC] MQ56 12 1
Acr A2100 [RPM] NMT09 12
Acr A2100 [SI] MT76 12
Acr A2100 [TT] MT89 12
Acr A2100 Generic C750 12 1
Acr A2100 [AFS] MX59 12
Acr A2100 [CPM] MY95 12 6
Acr A2100 Sabre 750 BM MV50 12
Acr A2100 Generic L421 85 12
Acr A2100 Sabre [BL] MU64 12
Acr A2100 G92 [GGB] NMU71 12 1
Cin Acr A2100 C703 12 1m

więcej podobnych podstron