{Change Comments ***********************************************************} {8/1/95, Updated for Catalyst v2.20 per Fanuc 6M M001.85.01 Format. This is a Tagging Post with special CutterRadiusCompensation. DWB} {11/2/95 Modified: Dynapath 20M Convrs M312.85 For: Norman Tool, Inc. Versions: ncCad 4.33.01/ncCAM 4.33.01/ncPost 4.33.08/Catalyst v2.28.04/Compost 4.21.33/1.0a Changes made per Sam Fredrick of Norman Tool, Inc. Added UnToolChng sub prior to CloseMP sub. Called from CloseMP sub and end of Prog. Customer reported problem when doing MultipleParts AND AllToolsOnePart. Post was outputting move to ToolChng Position prior to Origin Shift. This resulted in all but the First Part to be machined at the same place. Various other necessary minor changes, too numerous to list due to time constraints. DWB} {5/22/96, Initial: Dynapath 20M Convrs M312.85.1 Created: Dynapath 20M Convrs MXXX.85 For: Brockman Precision Machine The customer's machine does not have a tool changer, eliminated first tool change, eliminated pretooling, deleted untool at program end, MPK} {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...
kmex