// Makro do znajdowania wymiarw oraz pooenia materiau za pomoc sondy dotykowej

const                      // deklaracja staych
F_NAJAZD=400; // Prdko najazdu przy szukaniu
MARGINES=15;  // margines dojazdu
ODJAZD=5;     // odjazd od materiau po pomiarze
RSONDA=2;     // 1/2 rednicy sondy

vZrapid=0;    // numer zmiennej z "Z" przejazdowym
vZmess=1;

%                          
  SetVar(vZrapid,PosZ);                        // zapamitanie aktualnego "Z"
  SetVar(vZmess,GetZMat-(GetZSizeMat/2));      // zapamitanie "Z" pomiarowego

  // X lewa krawd
  Move(GetXMat-MARGINES,GetYMat+(GetYSizeMat/2),PosZ);
  WaitMove;
  Move(PosX,PosY,GetVar(vZmess)); // zjazd do poowy materiau
  WaitMove;
  RefOFF(1,0,0,F_NAJAZD);             // jazda do prawej krawdzi
  SetXMat(PosX+RSONDA);
  Move(PosX-ODJAZD,PosY,PosZ);       // odjazd od materiau
  WaitMove;
  Move(PosX,PosY,GetVar(vZrapid));       // uniesienie "Z"
  WaitMove;

  // X prawa krawd
  Move(GetXMat+GetXSizeMat+MARGINES,PosY,GetVar(vZrapid)); // ..na drugi koniec materiau
  WaitMove;
  Move(PosX,PosY,GetVar(vZmess)); // zjazd do poowy materiau
  WaitMove;
  RefOFF(-1,0,0,F_NAJAZD);             // jazda do prawej krawdzi
  SetXSizeMat((PosX-RSONDA)-GetXMat);  // zapisujemy rozmiar materiau
  Move(PosX+ODJAZD,PosY,PosZ);       // odjazd od materiau
  WaitMove;
  Move(PosX,PosY,GetVar(vZrapid));       // uniesienie "Z"
  WaitMove;

  // Y dolna krawd
  Move(GetXMat+(GetXSizeMat/2),GetYMat-MARGINES,PosZ); // ..do dolnej krawdzi
  WaitMove;
  Move(PosX,PosY,GetVar(vZmess)); // zjazd do poowy materiau
  WaitMove;
  RefOFF(0,1,0,F_NAJAZD);             // jazda do dolnej krawdzi
  SetYMat(PosY+RSONDA);
  Move(PosX,PosY-ODJAZD,PosZ);       // odjazd od materiau
  WaitMove;
  Move(PosX,PosY,GetVar(vZrapid));       // uniesienie "Z"
  WaitMove;

  // Y grna krawd
  Move(PosX,GetYMat+GetYSizeMat+MARGINES,PosZ); // ..do grnej krawdzi
  WaitMove;
  Move(PosX,PosY,GetVar(vZmess)); // zjazd do poowy materiau
  WaitMove;
  RefOFF(0,-1,0,F_NAJAZD);             // jazda do grnej krawdzi
  SetYSizeMat((PosY-RSONDA)-GetYMat);  // zapisujemy rozmiar materiau
  Move(PosX,PosY+ODJAZD,PosZ);       // odjazd od materiau
  WaitMove;
  Move(PosX,PosY,GetVar(vZrapid));       // uniesienie "Z"
  WaitMove;

  Move(GetXMat+(GetXSizeMat/2),GetYMat+(GetYSizeMat/2),PosZ); // jazda na rodek materiau
