Скрипт, который правит G-код, — это инструмент с большой силой и нулевой защитой от ошибок. Одна неверная строка может отправить фрезу в стол или сорвать печать на восьмом часу. Поэтому постобработка скриптами требует не столько знания языка, сколько дисциплины: проверять, сравнивать, симулировать и хранить версии.
Типовые задачи
- Вставка паузы для смены заготовки.
- Смена температуры по слоям (для 3D-печати).
- Добавление кода в начало/конец программы.
- Удаление или замена команд конкретной стойки.
- Проверка наличия обязательных команд (обороты, СОЖ, отмена коррекций).
- Разбиение большой программы на части.
- Преобразование координат или масштаба (осторожно!).
Это задачи, где скрипт уместен. Генерация траектории — нет: для этого есть CAM.
Что скрипт делать не должен
- Пересчитывать геометрию без понимания последствий.
- Менять подачи «на глаз» во всей программе.
- Удалять проверки и защитные блоки.
- Трогать команды, которых не понимает.
- Работать «поверх» оригинала без сохранения копии.
Правило: любые изменения должны быть понятны человеку, который прочитает diff.
Минимальный рабочий скрипт
На Python это выглядит примерно так:
lines = open(src).read().splitlines()
out = []
for line in lines:
out.append(line)
if line.startswith(";LAYER:"):
name = line.split(":")[1]
temp = temps.get(int(name))
if temp:
out.append(f"M104 S{temp}")
open(dst, "w").write("\n".join(out) + "\n")
Ключевое: скрипт не «переписывает» строки, а вставляет новые. Так проще проверять.
Проверки перед запуском
- Diff: сравните оригинал и результат, посмотрите каждое изменение.
- Симуляция: прогоните в симуляторе стойки или в визуализаторе.
- Лимиты: убедитесь, что перемещения не выходят за рабочую зону.
- Безопасные высоты: проверьте, что вставленные перемещения не ниже допустимой высоты.
- Первая деталь: запустите с пониженной подачей и рукой на кнопке.
Пропускать эти шаги — то же, что ехать без тормозов «потому что обычно везло».
Работа с версиями
- Оригинал G-кода не редактируется.
- Результат сохраняется с суффиксом версии.
- Скрипт хранится вместе с программой (в репозитории или папке).
- В карте программы фиксируется, что применён скрипт и какой.
Через полгода вы сможете объяснить, откуда в программе взялась пауза на 40-м слое.
Опасные места
| Что менять | Риск |
|---|---|
| Координаты | столкновение, брак |
| Подачи | поломка инструмента |
| Высоты | врезание |
| Отмена коррекций | неверные размеры |
| Коды стойки | игнорирование команд |
Всё это допустимо, но только с проверкой и пониманием.
Пример: вставка паузы
В 3D-печати пауза нужна для установки гайки в деталь. Скрипт вставляет M600 (или M0) на нужном слое после включения определённой температуры. Проверка: посмотреть в превью, что пауза стоит именно там, и что после неё сопло не «плюёт» материалом.
Пример: контроль завершения
Полезный скрипт проверяет, что в конце программы есть отключение шпинделя, СОЖ, отвод в безопасную точку и M30. Это дешёвая защита от «программы, которая не выключает шпиндель».
Скрипты и операторы
Если скриптом пользуется несколько человек, нужен минимальный интерфейс: файл на входе, файл на выходе, понятные сообщения об ошибках. Иначе скрипт станет «магическим», который запускает только один человек, а остальные боятся.
Итог
Скрипты экономят время на рутинных правках, но требуют проверки, сравнения и версионирования. Начинайте с простых вставок, заканчивайте анализом diff и симуляцией. Так автоматизация помогает, а не создаёт новые риски.
Частые вопросы
Можно ли править G-код в текстовом редакторе?
Можно, но для повторяющихся правок скрипт надёжнее и воспроизводимее.
Нужен ли симулятор?
Для ответственных программ — обязательно.
Как проверить, что скрипт ничего не сломал?
Diff и симуляция; плюс первая деталь на пониженных режимах.
Что делать, если стойка не понимает команду?
Заменить её на поддерживаемый аналог и проверить документацию стойки.
Можно ли хранить скрипт в git?
Да, это лучший способ отслеживать изменения.
Почему diff важнее самого скрипта
Скрипт может быть написан за десять минут, а последствия его ошибки устраняются часы. Поэтому основной инструмент контроля — сравнение файлов: вы видите каждую вставленную и удалённую строку и можете оценить, соответствует ли она замыслу. Если diff занимает сотни строк, значит скрипт делает слишком много за один проход, и его стоит разбить на этапы.
Как тестировать на «пустом» файле
Полезный приём: сгенерируйте короткий тестовый G-код из десяти строк, включающий начало, смену слоя, конец программы, и прогоните скрипт на нём. Вы увидите, куда именно вставляются команды, не рискуя реальной программой. Такой тест занимает минуту и ловит большинство ошибок индексации и условий.
Обратная совместимость
Если скрипт используют несколько человек, изменения в нём нужно сопровождать описанием: что изменилось и почему. Иначе через месяц кто-то запустит новую версию на старой программе и получит неожиданный результат. Версионирование и короткий changelog — минимальная гигиена.
Работа с комментариями
Комментарии в G-коде — не мусор, а разметка. Скрипт, который удаляет все строки, начинающиеся с точки с запятой, ломает навигацию и отладку. Если нужно «почистить» файл, делайте это отдельным этапом и сохраняйте оригинал: комментарии часто содержат единственную подсказку о том, что делал автор программы.
Когда лучше не писать скрипт
Если правка нужна один раз и занимает пять минут в редакторе, скрипт не нужен. Если правка повторяется и содержит условия — скрипт оправдан. Граница простая: автоматизация должна уменьшать риск, а не создавать новый источник ошибок.
Небольшой пример проверки лимитов
Скрипт может пройти по всем строкам с координатами, выделить максимальные и минимальные значения X, Y, Z и сравнить с рабочей зоной станка из паспорта. Если значение выходит за границы, программа останавливается с сообщением, а не запускается. Это десять строк кода, которые спасают от столкновения и от испорченной заготовки.
Как приучить участок к скриптам
Начните с одного скрипта, который решает болезненную мелочь: например, добавляет паузу для контроля или проверяет завершение программы. Покажите результат, сохраните скрипт в общем месте и опишите запуск в три строки. Когда люди убедятся, что он не ломает программы, следующий скрипт примут спокойно.