-- M622 угол разворота "кромка YZ"
function M622(arg)
local sc = 1000.0
if arg == nil then arg = ' ';sc=1.0 end -- заменяем nil argument на пустую строку
local vect = Arg2Pos(arg):mul(sc); -- print(vect);
-- вектор А
local vA = CNC.Pos();
vA.Y = vect.Y;
-- вектор Б
local vB = CNC.Pos();
vB.Z = -vect.Z;
StartMesure();
local org = mach.pos; -- текущие координаты
FindTouch(vB);
local p1 = mach.pos; -- координаты первой точки
SetTouch(3); -- режим возврата
mach:MOVETO(org); -- возврат в начальную точку
mach:MOVE(vA); -- переход во вторую начальную точку
local org1 = mach.pos; -- текущие координаты
FindTouch(vB);
local p2 = mach.pos; -- координаты второй точки
SetTouch(3); -- режим возврата
mach:MOVETO(org1); -- возврат в начальную точку
mach:MOVETO(org); -- возврат в начальную точку
StopMesure();
mach.Cond = 0;
-- вычисление угла
local ang = 0.0;
local DZ = p2.Z-p1.Z;
local DY = p2.Y-p1.Y;
ang = math.atan(DZ,DY);
ang = math.deg(ang); -- преводим в градусы
if ang> 90 then ang = ang-180 end
if ang<-90 then ang = ang+180 end
-- передача угла в систему
--mach:setANG(ang);
logLine(string.format('angYZ:%.5f DZ:%.0f',ang,DZ))
return ang,DZ
end