Знаю, что тут наверняка много таких же лентяев, как я, так что делюсь.
Работает так - сохраняете его в виде М-команды в папку macros, у меня, например, это M99984
Чтобы запустить проточку подводите расточной резец к отверстию, набираете M99984 P20 Q12 R0.3, где P-диаметр, Q-глубина, R-шаг прохода резца.
Сразу предупрежу, что у меня токарный работает под фрезерной оболочкой, по этому у меня ось шпинделя это Х, а поперечная подача это Y. Мой станок - мои правила!
У кого координаты по феншую, следует заменить буквы в скрипте соответственно на Z и Х. Еще, у меня работа идет от радиуса, а не диаметра, так что этот момент тоже придется поправить. Видимо нужно будет убрать деление на 2, но может еще что-то.
Сам скрипт с комментариями:
' Тут принимаем параметры
P=param1 'Диметр
Q=param2 'Длина
R=param3 'Шаг
' Считываем текущие координаты от которых будем плясать
XNow=GetDRO (0) '
YNow=GetDRO (1) '
XN=XNow-Q 'целевая координата по Х
If YNow >= P/2 Then 'Проверяем положение резца. Если его положение больше или равно, половине диаметра, выходим из скрипта
Exit Sub
End If
YOffset=GetDRO (1)
code "M3"
'Этот цикл для проточки целого количества шагов. Логика такая. Пока положение резца+шаг меньше чем желаемое отверстие, выполняем точение.
1
YOffset=YOffset+R
If YOffset+R<P/2 Then
Code "G1 x"&XN
While IsMoving()
Wend
YOffset=GetDRO (1)
Code "G0 y"&YOffset-1
While IsMoving()
Wend
Code "G0x"&XNow
While IsMoving()
Wend
Code "G0 y"&YOffset+R
While IsMoving()
Wend
YOffset=GetDRO (1)
GoTo 1
End If
'Этот кусок кода для проточки остатка от нецелого шага. Если положение резца + шаг больше чем отверстие, то смещаемся на чистовую координату и выполняем цикл чистовой проточки.
Code "G0 y"&P/2
While IsMoving()
Wend
Code "G1 x"&XN
While IsMoving()
Wend
YOffset=GetDRO (1)
Code "G0 y"&YOffset-1
While IsMoving()
Wend
Code "G0x"&XNow
While IsMoving()
Wend
Code "G0 y"&YOffset
While IsMoving()
Wend
Exit Sub
Надеюсь, кому-то будет полезно. Лично мне гораздо проще стало работать. Вместо написания G-кода достаточно вести одну строчку в MDI