Dynapath 20M Con [NT] MZ63.85.2.txt

(20 KB) Pobierz
{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}

{10/27/96,
	Initial: Dynapath 20M Convrs M312.85.1
	Created: Dynapath 20M Con [NT] Mxxx.85
	For: Norman Tool
	Deleted all Tool Number call, tool offsets and pretooling,
	changed to a first tool not in spindle post,
	added M2 after final M30, 
	MPK}

{10/31/96,
	Initial: Dynapath 20M Con [NT] MZ63.85
	Created: Dynapath 20M Con [NT] MZ63.85.1
	Added literal M0 to FirstOp before first SpinOn line, 
	MPK}

{11/7/96,
	Initial: Dynapath 20M Con [NT] MZ63.85.1
	Created: Dynapath 20M Con [NT] MZ63.85.2
	Added OpToolID to line with WFOStuff in FirstOp and NewTool, 
	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 ...
Zgłoś jeśli naruszono regulamin