{Change Comments ***********************************************************} {11/2/95, M764.81.3, Updated for Catalyst v2.20 per Fanuc 6M M001.85 Format, 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(SPX#,4) FORMAT(SPY#,4) FORMAT(Retract#,4) FORMAT(ToolDiameter#,4) {.72} FORMAT(Recall#,5) FORMAT(Tag#,5) FORMAT(CallMasterNum#,5) FORMAT(Program#,5) {.72} FORMAT(Operation#,5) {.72} FORMAT(Tool#,5) {.72} FORMAT(Parts#,5) {.72} FORMAT(RapidF#,6) FORMAT(Dwell#,6) {.72} FORMAT(NewWFO#,7) {.72} FORMAT(ToolOffset#,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 Get$: { For conversational output } IF NOT EmptyLine? '$' END RETURN TurnCRCOn: IF CutterRadiusCompensation? AND NOT Flag?('2') IF NOT LastFeat? AND NOT ZMove? SetFlag('2') SeqLab '(1)' IF AutoCycle? MoveSX '/' MoveSY '/' ELSE MoveSX MoveSY END CRCOff Get$ EOL END END RETURN TurnCRCOff: IF CutterRadiusCompensation? AND Flag?('2') SetFlagF('2') SeqLab '(1)' IF AutoCycle? MoveX '/' MoveY '/' ELSE MoveXY END CRCOff Get$ EOL END RETURN DoSubComment: IF UseComments? AND SubComment? SeqLab '(T) SUB NUMBER ' Tag# Get$ EOL END RETURN DoOpComments: IF UseComments? SetScale('1') IF OperationIDComment? SeqLab '(T) OPERATION ' Operation# ' ' OperationType$ Get$ EOL END IF OperationComment? SeqLab '(T) ' OperationComment$ Get$ EOL END IF WorkGroupComment? SeqLab '(T) ' WorkGroupComment$ Get$ EOL END IF ToolTypeComment? SeqLab '(T) TOOL# ' Tool# ' ' ToolDiameter# ' ' ToolType$ Get$ EOL END IF ToolComment? SeqLab '(T) ' ToolComment$ Get$ EOL END RestoreScale END RETURN PSInit: {reset flags} NewWFOF RotateF OptCyc1F MasterOpF CallMasterOpF RETURN PSStuff: {revised.72} FourthCWF {reset flag} FourthCCWF {reset flag} FifthCWF {reset flag} FifthCCWF {reset flag} RETURN DoPostScript: PSInit EachPS SeqLab PostScript Get$ EOL {literals} PSStuff {commands} NextPS RETURN DoEndOpPS: PSInit EachEOPS SeqLab EndOpPS Get$ EOL {literals} PSStuff {commands} NextPS RETURN EntryMove: SeqLab IF FeedEntry? '(1)' ELSE '(0)' END ZIn IF AutoCycle? { Implies Incremental } '/' END IF FeedEntry? FeedEnt END Get$ EOL RETURN StartSub: OpenSub DoSubComment '>' Tag# EOL RETURN SubWarning: IF NOT FeedConnect? IF AnyZshift? SeqLab '(T) ' Get$ EOL SeqLab '(T) *** WARNING ***' Get$ EOL SeqLab '(T) Z CLEARANCE WILL' Get$ EOL SeqLab '(T) CHANGE WITH EACH' Get$ EOL SeqLab '(T) CYCLE OF SUB!' Get$ EOL SeqLab '(T) ' Get$ EOL END END RETURN StdSub: '?' Tag# EOL SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL SeqLab '(6)F?' Tag# 'T' RepsLess1 Get$ EOL StartSub RETURN FinishSub1: {part 1} IF NOT FeedConnect? SeqLab IF AutoCycle? '(0)' ZCP3 ELSE IF FIFO? {.81} '(1)' ZCP3 FeedEntC ELSE '(0)' ZCP3 END END Get$ EOL END RETURN FinishSubG92: {part 2} SeqLab '(0)' ShiftRC Preset Get$ EOL '<' Tag# EOL TagDown CloseSub SeqLab '(0)' UnshftRC Preset Get$ EOL RETURN OpenMP: TagUp TagInc IF WorkFixtureOffsets? NewWFO EachWFO SeqLab '(9)' SetWFO Get$ EOL SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL IncWFO NextWFO ELSE '?' Tag# EOL SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL SeqLab '(6)F?' Tag# 'T' PartsLess1 Get$ EOL END StartSub RETURN UnToolChng: SeqLab '(9)' ToolChng Get$ EOL RETURN CloseMP: IF WorkFixtureOffsets? IF AllToolsOnePart? UnToolChng END '<' Tag# EOL TagDown CloseSub SeqLab '(9)' WFO1 Get$ EOL ELSE SeqLab '(0)' ShiftPC Preset Get$ EOL IF AllToolsOnePart? UnToolChng END '<' Tag# EOL TagDown CloseSub SeqLab '(0)' UnshftPC Preset Get$ EOL END RETURN DoAbsOrInc: IF Flag?('1') { AbsoluteMoves? = TRUE } IF ZMove? AND AbsValue? SetInc ELSE IF NOT ZMove? AND NOT AbsValue? SetAbs END END END RETURN DoDrillAbsOrInc: IF Flag?('1') { AbsoluteMoves? = TRUE } IF SPZMove? AND AbsValue? SetInc ELSE IF NOT SPZMove? AND NOT AbsValue? SetAbs END END END RETURN RestoreAbsOrInc: IF Flag?('1') AND NOT AbsValue? { AbsoluteMoves? = TRUE } SetAbs END RETURN GetPlane: IF XYPlane? IF NOT AutoCycle? IF FirstFeat? IF XMove? OR YMove? 'P0' { This is the default Plane select } END END END ELSE IF XZPlane? 'P2' ELSE {YZPlane} 'P1' END END RETURN CheckMove: IF Drilling? IF Flag?('1') AND NOT AbsValue? { AbsoluteMoves? = TRUE } IF XMove? MoveSX '/' END IF YMove? MoveSY '/' END IF ZMove? MoveSZ '/' {.80.01} END ELSE MoveSXYZC {.80.01} END ELSE IF AutoCycle? { Implies Incremental } IF XMove? MoveX '/' END IF YMove? MoveY '/' END IF ZMove? MoveZ '/' END ELSE IF Flag?('1') AND NOT AbsValue? { AbsoluteMoves? = TRUE } IF XMove? MoveX '/' END IF YMove? MoveY '/' END IF ZMove? MoveZ '/' END ELSE MoveXYZC END END END RETURN FormatArc: DoAbsOrInc GetPlane CheckMove IF AutoCycle? ArcI '/' ArcJ '/' ELSE IF Flag?('1') AND NOT AbsValue? { AbsoluteMoves? = TRUE } ArcI '/' ArcJ '/' ELSE ArcIJ END END IF ArcCW? CWArc ELSE CCWArc END RETURN ckCRC: IF CutterRadiusCompensation? AND Flag?('2') IF NOT LastFeat? AND NOT ZMove? CRCOnC END END RETURN FormatLine: DoAbsOrInc GetPlane CheckMove ckCRC RETURN ckCRCNum: { Not supported } RETURN ToolPath: EACHFeat IF PointFeat? IF AutoCycle? IF NOT FirstFeat? SeqLab '(0)' MoveSXYC Get$ EOL END SeqLab '(7)F?' Tag# 'L?' Tag# Get$ EOL CalcACSRXY {calc tool position after sub call, CalcAutoCycleStatusRecordXY} ELSE IF NOT FirstFeat? SeqLab '(0)' DoDrillAbsOrInc CheckMove Get$ EOL END END ELSE IF RapidFeat? IF XMove? OR YMove? OR ZMove? TurnCRCOn IF CutterRadiusCompensation? AND Flag?('2') SeqLab '(1)' FormatLine RapidFC Get$ EOL ELSE SeqLab '(0)' FormatLine Get$ EOL END END ELSE IF LineFeat? IF XMove? OR YMove? OR ZMove? TurnCRCOn IF Decelerate? IF RoomToDecel? DecelMove1 SeqLab '(1)' FormatLine FeedRateC Get$ EOL DecelMove2 END SeqLab '(1)' FormatLine DecelFeed Get$ EOL ELSE SeqLab '(1)' FormatLine FeedRateC Get$ 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 SeqLab '(2)' FormatArc ArcFeedC Get$ EOL DecelMove2 END SeqLab '(2)' FormatArc DecelFeed Get$ EOL ELSE SeqLab '(2)' FormatArc ArcFeedC Get$ EOL END NEXTQuadrant END END END IF LastFeat? { Exit Length Feature } TurnCRCOff {.70} END END NEXTFeat RestoreAbsOrInc RETURN WFOStuff: IF NewWFO? IF MultipleParts? Get$ EOL SeqLab '(T) ' Get$ EOL SeqLab '(T) *** WARNING ***' Get$ EOL SeqLab '(T) DO NOT USE' Get$ EOL SeqLab '(T) NEWWFO() WITH' Get$ EOL SeqLab '(T) NCPOST MULTIPLE' Get$ EOL SeqLab '(T) PARTS!' Get$ EOL SeqLab '(T) ' Get$ EOL ELSE 'E' NewWFO# END ELSE IF NOT SameTool? IF NeedWFO1? 'E' NewWFO# END END END RETURN AutoCycCutSub1: {part 1} SaveSubStatus {save tool position} SetPass1 {element cut moves} StartSub SetSRXYtoSP SetInc SeqLab '(1)' 'P0X0./Y0./' Get$ EOL { AutoCycle dummy move to select correct Plane } RETURN AutoCycCutSub2: {part 2} ToolPath SetAbs IF Repeats? AND FeedConnect? AND ZshiftOnly? {.69 removed RapidC} {.71.2 removed CRCOffC, gets turned off in ToolPath} ELSE IF FIFO? {.81} SeqLab '(1)' ZCP2 FeedEntC Get$ EOL ELSE SeqLab '(0)' ZCP2 Get$ EOL END END '<' Tag# EOL CloseSub SetSRSubXY {restore SR to 1st position value} SetSRSubMove RETURN AutoCycPat: SetPass2 {position pattern} ToolPath {call after TagInc for correct sub calls} SetPass1 {reset} RETURN Milling: IF AutoCycle? TagUp TagInc AutoCycCutSub1 EntryMove AutoCycCutSub2 AutoCycPat TagDown ELSE EntryMove ToolPath END RETURN G92Sub: SubWarning StdSub SetAbs IF FeedConnect? '(1)' ELSE '(0)' END SeqLab StrtPos Get$ EOL Milling FinishSub1 FinishSubG92 RETURN ZonlyRepAutoCycle: AutoCycPat {write pattern moves and main calls} StartSub TagUp TagInc EachCycle IF FeedConnect? SeqLab '(1)' ZInPlusInc FeedEnt Get$ EOL ELSE IF FeedEntry? IF NOT FirstCycle? SeqLab '(0)' ZCP2PlusInc Get$ EOL {.69 added Rapid, reads better} {can't call for cycle = 1, .69 changed to ZCP2PlusInc} END SeqLab '(1)' ZInPlusInc FeedEnt Get$ EOL ELSE SeqLab '(0)' ZInPlusInc Get$ EOL {.69 added Rapid, reads better} END END IF FirstCycle? SetStatusOff {protect Z position for incremental sub} END SeqL...
kmex