/* Werkzeug Nr. iTool holen. Gewünschten Modus in Autoexec.ts setzen (_ToolAuto) */

/* Werkzeugwechsel ignorieren */
if(_ToolAuto == 0){(ToolPar "curr") = _ToolSel;}

local "pPrv";

/* Manueller Wechsel */
if(_ToolAuto == 1){
if(2 == (_mode != 'G') + (_ToolSel != ToolPar "curr"))
	{
	if( 0 == _RefTest){mreset "Erst Achsen Referenzieren!";}
	wait 0;
	_PrgStop; _dspUpdate;
	sps = ml_f;
	spf = mf_f;
	pPrv = _XYZ;
	mf_f = ToolSpeedF / (_Ovr / 100.0);
	MvPar;
	z ToolZup - getOcToMc[2]; mf;
	x _ToolX[0] - getOcToMc[0];
	y _ToolY[0] - getOcToMc[1]; mf;
	wait 0;
	MsgBox (sprint "Bitte Werkzeug Nr. %hd einsetzen!" _ToolSel) "Manueller Werkzeugwechsel";
	(ToolPar "curr") = _ToolSel;
	X pPrv[0];
	Y pPrv[1]; mf;
	Z pPrv[2]; mf;
	ml_f = sps; mf_f = spf;
	MvPar;
	_PrgCont; _dspUpdate;
	}
}

/* Halbautomatischer Wechsel */
if(_ToolAuto == 2){
if(3 == (0 == _demo) + (_mode != 'G') + (_ToolSel != ToolPar "curr"))
	{
	if( 0 == _RefTest){mreset "Erst Achsen Referenzieren!";}
	wait 0;
	_PrgStop; _dspUpdate;
	sps = ml_f;
	spf = mf_f;
	pPrv = _XYZ;
	mf_f = ToolSpeedF / (_Ovr / 100.0);
	MvPar;
	z ToolZup - getOcToMc[2]; mf;
	x _ToolX[0] - getOcToMc[0];
	y _ToolY[0] - getOcToMc[1]; mf;
	wait 0;
	MsgBox (sprint "Bitte Werkzeug Nr. %hd einsetzen!" _ToolSel) "Manueller Werkzeugwechsel";
	(ToolPar "curr") = _ToolSel;
	fcall _path & "/ToolRefZ.ts";
	X pPrv[0];
	Y pPrv[1]; mf;
	Z pPrv[2]; mf;
	ml_f = sps; mf_f = spf;
	MvPar;
	wait 0;
	Mlimit '1';	/* Bereichsüberw. wieder aktivieren */
	_PrgCont;
	}
}

/* Vollautomatischer Wechsel */
if(_ToolAuto == 3){
if(3 == (0 == _demo) + (_mode != 'G') + (_ToolSel != ToolPar "curr")) /* Automatischer Wechsel */
	{
	if( 0 == _RefTest){mreset "Erst Achsen Referenzieren!";}
	_PrgStop;
	Mlimit '0';	/* Bereichsüberw. aufheben */
	sps = ml_f;
	spf = mf_f;
	pPrv = _XYZ;
	ml_f =  ToolSpeedS / (_Ovr / 100.0);
	mf_f = ToolSpeedF / (_Ovr / 100.0);
	MvPar;
	z ToolZup - getOcToMc[2]; mf;
	x _ToolX[ToolPar "curr"] - getOcToMc[0];
	y _ToolY[ToolPar "curr"] - getOcToMc[1]; mf;
	z ToolZdn - getOcToMc[2]; ml;
	/* altes Tool absetzen */
	wait 0; _ToolOpen; wait 0.5;

	/* neues Tool holen */
	z ToolZup1 - getOcToMc[2]; mf;
	x _ToolX[_ToolSel] - getOcToMc[0];
	y _ToolY[_ToolSel] - getOcToMc[1]; mf;
	z ToolZdn - getOcToMc[2]; ml;
	wait 0.2; _ToolClose; wait 0.5;
	z ToolZup - getOcToMc[2]; mf;
	(ToolPar "curr") = _ToolSel;
	fcall _path & "/ToolRefZ.ts";
	X pPrv[0];
	Y pPrv[1]; mf;
	Z pPrv[2]; mf;
	ml_f = sps; mf_f = spf;
	MvPar;
	wait 0;
	Mlimit '1';	/* Bereichsüberw. wieder aktivieren */
	_PrgCont;
	}
}
