Существует два варианта написания таких циклов.
Первый - использовать параметры в G-коде. Этот механизм считается устаревшим и официально не поддерживается. Но работать будет, синтаксис вот такой:
Код: Выделить всё
F1000
G90
G0 X1 Y1 Z1
#1 = 10 (В эту переменную записывается число итераций, например, 10)
#2 = 1 (Начальное значение координаты Z)
O100 do (Команда начала цикла)
(ниже - тело цикла)
G01 Z[#2]
G01 X11 Y1
G01 X11 Y11
G01 X1 Y11
G01 X1 Y1
#1 = [#1 - 1] (Уменьшение счетчика оставшихся итераций)
#2 = [#2 + 1] (Увеличение координаты Z на 1)
O100 while [#1 GT 0] (Условие выхода из цикла)
M30Пример макроса, выполняющего аналогичный цикл:
Код: Выделить всё
function m165()
local StartX = 1
local StartY = 1
local EndX = 11
local EndY = 11
local CurrZ = 1
local DeltaZ = 1
local Iterations = 10
ExecuteMDI("F1000")
ExecuteMDI("G90 G0 X1 Y1 Z1")
for i = 1, Iterations do
ExecuteMDI("G1 Z"..CurrZ)
ExecuteMDI("G1 X"..EndX.." Y"..StartY)
ExecuteMDI("G1 X"..EndX.." Y"..EndY)
ExecuteMDI("G1 X"..StartX.." Y"..EndY)
ExecuteMDI("G1 X"..StartX.." Y"..StartY)
CurrZ = CurrZ + 1
end
end%USERPROFILE%\Local Settings\Application Data\Purelogic\PureMotion\Server\Macros
