Еще такой кусок нашел
(тоже не пробовал)
Код:
http://www.chipmaker.ru/topic/98656/page__view__findpost__p__1539521
А можно без всяких шаманств в Маче просто написать в блокноте код такого плана
G17 G90 G54 G49 G40 G80 G50
G21
..вкл шпинделя, охлаждения...................
G54 X..Y..Z.. (это первое смещение)
M98 P0001 (переход к подпрограмме)
G55 X..Y..Z.. (это второе смещение)
M98 P0001 (переход к подпрограмме)
.....................
.........................
G59 X..Y..Z.. (это очередное смещение)
M98 P0001 (переход к подпрограмме)
G54 X0Y0Z0 (обнуление смещений, если мы не хотим, чтобы они сохранились в памяти Мача)
G55 X0Y0Z0
...............
G59 X0Y0Z0
M5(шпиндель стоп)
M9(охлаждение стоп)
M30(возврат в начальную строку)
O0001 (команда содержимого подпрограммы)
..........(здесь полный текст файла для обработки одной детали без всяких смещений)
...........(за исключением команд включения шпинделя, охл. и пр., тупо рабочий код)
G90
M99 (выход в абсолютные координаты и выход из подпрограммы)
Все. теперь одна и та же программа выполнится с нужными смещениями. Если надо выполнить другой код, то шапку проги оставляем старую, а лишь меняем код содержимого подпрограммы O001. либо же туда же можно добавить подпрограмму под номером O002, но уже с другим кодом, соответственно с командой перехода к подпрограмме M98 P0002.
Есть еще вариант выполнить одну и ту же программу, но через команду G91(это тоже смещение, но оно обнуляется автоматом при команде G90- переход в абсолютные координаты. Но без определенной сноровки лучше ей не пользоваться, а то станок начнет жить своей жизнью.
И еще можно задать временное смещение G52 X..Y..Z.., но при этом, чтоб не было путанины, лучше все-равно использовать основной код в качестве подпрограммы