// ************************************************** ******************
int newXPos = -390;
int newYPos = -600;
int newZPos = 0;
int Newtool = exec.Getnewtool(); // Henter nytt tool
int Currenttool = exec.Getcurrenttool(); // Henter nåværende tool
// Hvis nytt toolnummer er -1 så mangler det en T code, så da stopper det her
if (Newtool == -1)
return;
// Samme tool som forrige tool
if(Newtool == Currenttool)
return;
// Sjekk om det er utført Homing
if(!exec.GetLED(56) || !exec.GetLED(57) || !exec.GetLED(58))
{
MessageBox.Show("Maskinen har ikke kjørt Homing. Utfør Homeing før skifte av tool!");
exec.Stop();
return;
}
// Hent maskinens XY koordinater, slik at maskinen kan returnere dit etter toolskifte
double Xoriginalpos = exec.GetXmachpos();
double Yoriginalpos = exec.GetYmachpos();
// Stopp spindle
exec.Stopspin();
while(exec.IsMoving()){}
// Slå av flood
exec.Code("M09");
while(exec.IsMoving()){}
// Flytt opp Z til 0
exec.Code("G00 G53 Z" + newZPos);
while(exec.IsMoving()){}
// Flytt X og Y til angitt plass
exec.Code("G1 F5000 G53 X" + newXPos + " Y" + newYPos);
while(exec.IsMoving()){}
exec.Wait(200);
// Vent på at Cycle-Start blir trykket på hovedskjerm
while(!AS3.Getbutton(128));
// ************************************************** ********************
// Her antar vi da at tool er skiftet og bruker har trykket Cycle-start
// ************************************************** ********************
// Flytt tilbake til startkoordinatene
exec.Code("G1 F5000 G53 X" + Xoriginalpos + " Y" + Yoriginalpos);
while(exec.IsMoving()){}
// Sett offset til nytt tool
exec.Code("G43 H" + Newtool);
exec.Wait(200);
// Hvis toolbytte ikke ble avbrutt av at bruker har trykket stop i GUI, så kan nytt tool valideres og settes til aktiv tool.
if(!exec.Ismacrostopped())
{
exec.Setcurrenttool(Newtool); //Set nåværende tool til nytt tool
// MessageBox.Show("Toolskifte ferdig.");
}
else
{
exec.StopWithDeccel();
MessageBox.Show("Toolskifte ble avbrutt av bruker");
}
// Stop script
//exec.Code("M30");
//exec.Wait(200);