Windows / Linux · GUI / CLI

Редактор и визуализатор программ ЧПУ

Редактирование токарных и фрезерных управляющих программ, расчёт траекторий и просмотр перемещений инструмента в 3D. Поддерживаются токарные/фрезерные программы FANUC и фрезерные программы SINUMERIK 840D, включая ограниченные native R-выражения и поток WHILE/GOTO/IF, а также поддерживаемые CAM-траектории 3+2 и непрерывной пятиосевой обработки. Анализируйте папки программ, сравнивайте статистику инструментов и готовьте экспорт через общее ядро расчёта.

Проверялись CAM-программы из Autodesk Fusion 360 и Siemens NX 2312, сформированные постпроцессорами для SINUMERIK 840D и FANUC. Покрытие относится к поддерживаемым командам и настроенным кинематикам; предупреждения о немоделируемых native-командах требуют проверки.

Сборки для Linux также доступны на странице релиза.

Редактор управляющей программы и 3D-траектория

Поддерживаемые команды и циклы

FANUC: токарная обработка — Type A / Type B

FANUC Turning Type A / Type B
Операция Type A Type B
Быстрый ход G00 G00
Линейное движение G01 G01
Дуга по часовой G02 G02
Дуга против часовой G03 G03
Выдержка G04 G04
Нарезание резьбы G32 G33
Система координат / ограничение шпинделя G50 G92
Чистовой цикл G70 G70
Черновое точение G71 G71
Черновая подрезка торца G72 G72
Повторение контура G73 G73
Сверление торца G74 G74
Канавки OD/ID G75 G75
Многопроходная резьба G76 G76
Простой цикл точения G90 G77
Простой резьбовой цикл G92 G78
Простой цикл торцевания G94 G79
Подача в минуту G98 G94
Подача на оборот G99 G95
Токарные циклы
Type A Type B Назначение в ядре
G70 G70 Чистовой контур P-Q
G71 G71 Продольная обдирка
G72 G72 Торцевая обдирка
G73 G73 Обдирка повторением шаблона
G74 G74 Сверление/прорезка торца с периодическим выводом по Z
G75 G75 Сверление/прорезка по X с периодическим выводом
G76 G76 Двухстрочная многопроходная резьба
G83 G83 Осевое сверление с периодическим выводом
G84 G84 Осевое нарезание резьбы метчиком
G90 G77 Модальный цикл продольного точения
G92 G78 Модальный цикл резьбы
G94 G79 Модальный цикл торцевой обработки
Поведение циклов
Цикл Описание
G70

G70 P... Q... строит указанный чистовой контур и подходит к нему из фактической позиции вызова G70.

Чистовой путь основан на номинальном профиле P-Q, а не на профиле со смещением обдирки, используемом G71/G72/G73.

Если активна компенсация радиуса при вершине резца и может быть проверена, чистовой контур использует компенсированный профиль.

После группы чистовой обработки цикл возвращается в сохранённую позицию вызова, используя детерминированный порядок возврата точения проекта.

G71

Моделируется обычная двухстрочная форма FANUC:

G71 U... R...
G71 P... Q... U... W... F...

Первая строка фиксирует глубину обдирки и отвод. Вторая строка задаёт профиль P-Q, припуски на чистовую обработку и подачу. После последнего прохода по контуру выполняется отскок по R, возврат по Z, затем по X к началу цикла. Припуск и проходы Type I сохраняют аналитическую геометрию дуг. Для обдирки используются настроенные радиус носика и ориентация вершины инструмента; без таблицы инструментов рассчитывается номинальная геометрия.

G72

G72 использует ту же инфраструктуру профиля P-Q, что и G71, но выполняет торцевую обдирку в плоскостях Z.

Типичная двухстрочная форма:

G72 W... R...
G72 P... Q... U... W... F...

Первая строка фиксирует осевую глубину и отвод. Вторая строка ссылается на профиль и припуски на чистовую обработку.

G73

G73 реализован как повторяющиеся смещённые копии профиля обдирки.

Первая строка фиксирует общее смещение шаблона U/W и количество проходов R. Вторая строка задаёт P/Q, припуски на чистовую обработку и подачу.

Знаки запрограммированных U/W сохраняются. Цикл не выводит направление смещения из того, как инструмент случайно подошёл к контуру.

G74

G74 поддерживает поведение периодического вывода по Z и повторение в стиле прорезки торца.

Первый блок, содержащий только R, может установить расстояние отвода. Исполняющий блок может использовать X/U и Z/W плюс параметры P/Q/R/F.

Если целевое значение X не задано, G74 может работать как сверление по Z в стиле периодического вывода на текущем X.

Когда запрашивается повторение по X, P управляет шагом X, а Q управляет глубиной периодического вывода по Z. Цикл возвращается к сохранённому началу, используя явный порядок возврата сначала по Z.

G75

G75 выполняет периодический вывод/радиальную прорезку по X.

P управляет радиальным шагом периодического вывода. Q может повторять канавки вдоль Z. Если Q опущен, запрограммированный Z/W выбирает одно место канавки, а не рассматривается как недопустимое повторение с нулевым шагом.

Значение R из установочного блока управляет расстоянием отвода, а значение R исполняющего блока обрабатывается как припуск по дну, где применимо.

G76

Моделируемая форма — двухстрочный G76 в стиле FANUC:

G76 P...... Q... R...
G76 X... Z... P... Q... R... F...

Первый блок хранит:

  • упакованные управляющие цифры P;
  • минимальное радиальное приращение Q;
  • необязательный припуск на чистовую обработку R.

Второй блок задаёт:

  • конечный X резьбы;
  • конечный Z;
  • высоту резьбы P;
  • первый рез Q;
  • необязательную конусность R;
  • шаг F.
G83

G83 — осевой цикл сверления по Z.

  • Если задан Q, генерируются периодические выводы по Z.
  • Если Q отсутствует, ядро не выдумывает глубину периодического вывода; оно выдаёт один ход подачи на глубину и ускоренный возврат.
  • Необязательное позиционирование по X обрабатывается перед осевым ходом и восстанавливается после.
G84

G84 — осевой цикл нарезания резьбы метчиком. Ход вниз и возврат являются синхронизированными движениями подачи; возврат не представлен как ускоренное перемещение.

G90

Да. G90 устанавливает цикл продольного прямоугольного точения. Последующие блоки только с X/U могут продолжать активный цикл на новых диаметрах до отмены другим явным кодом движения/цикла.

G92

Пример:

G92 X18 Z-10 F1.5
X17.5
X17.0

Начальный G92 устанавливает конец резьбы и шаг. Последующие блоки только с X/U продолжают активный цикл G92 с новыми глубинами до отмены другим явным режимом движения/цикла.

Каждый проход раскрывается в примитивы подхода, синхронизированного продольного резания, отвода и возврата.

G94

Да. G94 устанавливает цикл торцевой прямоугольной обработки. Последующие блоки только с Z/W могут продолжать активный цикл на новых положениях торца до отмены.

G71 Type II поддерживает профили с карманами с учётом ограничений. G72 Type II отклоняет несколько раздельных участков в одной плоскости торцевания (UNSUPPORTED_G72_TYPE_II_SPANS). G76 поддерживает углы инструмента 0°, 29°, 30°, 55°, 60° и 80°; остальные вызывают UNSUPPORTED_G76_TOOL_ANGLE.

Параметры и ограничения в FAQ →

FANUC: фрезерование

Фрезерные G-функции
G-код Функция в ядре
G00 Быстрое позиционирование
G01 Линейная интерполяция
G02 / G03 Круговая интерполяция по / против часовой стрелки
G04 Сигнал выдержки времени без перемещения
G10 Программирование смещений WCS (L2, L20)
G15 / G16 Отмена / включение полярных координат
G17 / G18 / G19 Выбор плоскости XY / XZ / YZ
G20 / G21 Входные единицы: дюймы / миллиметры
G28 Возврат в заданную опорную точку
G40 / G41 / G42 Отмена / левая / правая компенсация радиуса фрезы
G43 / G49 Учитывают / отменяют состояние коррекции длины; G43 не применяет H к траектории
G43.4 TCP-перемещения G0/G1/G2/G3 на наклонных столах AC/BC, включая декартовы дуги с поворотом; сочетание с G68.2 не поддерживается
G50 / G51 Отмена / включение масштабирования координат
G52 Локальное смещение координат
G53 Немодальное движение в координатах станка
G54–G59 Выбор рабочей системы координат
G54.1 P1–P99 Разбирается и выбирается; в GUI нет настройки смещения, поэтому оно нулевое, если программа не задаёт его через G10 L20
G65 Вызов программы Macro B; выражения поддерживают побитовые AND/OR/XOR и LN/EXP
G68 / G69 Включение / отмена поворота координат
G68.2 / G53.1 Наклонная рабочая плоскость / ориентация оси инструмента (3+2, fanuc_mill с двухосевой кинематикой стол-стол, голова-голова или голова-стол)
G73 Цикл высокоскоростного сверления с периодическим выводом
G80 Отмена постоянного цикла
G81 Цикл сверления
G82 Цикл сверления с выдержкой
G83 Цикл сверления с полным выводом
G84 Цикл нарезания резьбы метчиком
G85 Цикл растачивания с возвратом на подаче
G86 Цикл растачивания с сигналом остановки шпинделя
G90 / G91 Абсолютное / инкрементальное программирование
G93 Обратная подача по времени: 1/F минуты на кадр подачи. При переключении G93/G94/G95 задайте новое положительное F; циклы и коррекция радиуса под G93 не поддержаны.
G94 / G95 Подача в минуту / на оборот
G98 / G99 Возврат на исходную плоскость / плоскость R в постоянном цикле
Фрезерные M-функции
M-код Функция в ядре
M00 / M01 Сигнал остановки / необязательной остановки; расчёт траектории продолжается
M02 / M30 Завершение программы
M03 / M04 / M05 Сигналы вращения шпинделя по / против часовой стрелки / остановки
M06 Событие смены выбранного инструмента T
M07 Распознаётся; действие для конкретной системы охлаждения не моделируется
M08 / M09 Сигналы включения / выключения охлаждения
M19 Сигнал ориентации шпинделя; S в этом блоке задаёт угол, а не обороты
M29 Подготовка жёсткого резьбонарезания; S в этом блоке задаёт обороты для следующего G84
M98 / M99 Вызов подпрограммы / возврат из неё
Неизвестные вспомогательные M-коды Неблокирующие предупреждения; движения и известные команды в смешанных кадрах выполняются.
Поведение фрезерных циклов
Команда Описание
G73 / G83

G73 — высокоскоростное сверление с периодическим выводом с коротким промежуточным отводом. G83 возвращается на R и быстро подходит с зазором d над предыдущей глубиной, не выше R, затем продолжает на подаче. Параметр ядра milling_g83_clearance задаёт d в миллиметрах; значение по умолчанию 1,0 мм — допущение модели, а не считанная настройка контроллера. Меняются длина движения на подаче и статистика времени. Токарный G83 и нативный CYCLE83 сохраняют прежнее поведение.

G82

G82 включает свою семантику выдержки, но выдержка сама по себе не создаёт пространственной геометрии.

G84

Нарезание резьбы G84 возвращается с глубины как синхронизированное движение подачи, а не как ускоренное перемещение.

G86

Цикл моделирует семантику остановки шпинделя вместе со своим поведением сверления/возврата.

G98 / G99

Для циклов фрезерования G98/G99 выбирают поведение возврата цикла. Это не значения режима подачи точения G98/G99.

Параметры и ограничения в FAQ →

SINUMERIK 840D ISO-M — G291

SINUMERIK ISO-M
Функция ISO-M Поддержка и ограничения
G290 / G291 Отдельные кадры переключают режим SINUMERIK / ISO-M. Выполнение MPF/SPF начинается в режиме SINUMERIK.
XYZ / G90 / G91 Трёхосевые перемещения, включая приращения. Поворотные оси и TCP не поддерживаются.
G2 / G3 / IJK ISO-M и native используют относительные IJK. Абсолютный центр в native задаётся явно через I=AC(...), J=AC(...), K=AC(...); G90/G91 управляет конечными точками.
G54 P1–P48 Расширенные рабочие смещения. G54.1 в исходной программе и другие дробные G-коды отклоняются.
G50 / G51 Масштабирование координат; G51 использует коэффициент P/1000.
G68 / G69 Отдельный кадр 2D-поворота при G90, координаты центра в активной плоскости и R. Формы с I/J/K, приращением угла и 3D-вектором отклоняются.
Циклы и единицы В пределах ISO-M поддерживаются общие целочисленные фрезерные G-коды, выбор единиц, системы координат и отдельные стандартные циклы.
Неизвестные вспомогательные M-коды Неблокирующие предупреждения, в том числе в кадрах с движением. M98 здесь не вызывает подпрограмму FANUC; M99 остаётся неподдержанным. M2/M30 завершают программу.
Macro B / ISO-T Поток управления Macro B и ISO Dialect T не поддерживаются. Неподдерживаемые ISO-функции вызывают диагностику.

Параметры и ограничения в FAQ →

SINUMERIK 840D: нативный режим — G290

SINUMERIK native
Нативная функция Текущее поведение
G0/G1, G2/G3, G17/G18/G19, CR= Позиционирование XYZ и дуги в выбранной плоскости; отрицательный CR задаёт большую дугу
G90/G91, G54–G59, G70/G71/G700/G710 Абсолютные/приращённые координаты, рабочие смещения и метрические единицы
G60 / G64 Точный останов / непрерывное движение принимаются как метаданные; разгон, время останова и сглаживание не моделируются.
G93 / G94 / G95 Обратная подача по времени / в минуту / на оборот. G93 задаёт 1/F минуты на движение подачи; при переключении режима задайте новое положительное F. Циклы и коррекция под G93 не поддержаны.
G500 Модально отключает рабочее смещение до следующего G54–G59. Координаты пересчитываются без движения. По умолчанию G500 и базовый фрейм нулевые; API wcs_offsets[500] позволяет задать смещение. OEM-повороты базового фрейма, отражения и масштабирование не моделируются.
DIAMON / DIAMOF / DIAM90 Распознаются с предупреждением; исполнитель продолжает расчёт всех координат в семантике DIAMOF. Диаметрическое программирование не моделируется.
CHF / CHR / RND / RNDM / FRC / FRCM Распознаются с предупреждением без изменения геометрии или подачи. Фаски, скругления, модальное скругление и подача на переходах не моделируются; RNDM=0 распознаётся без геометрического эффекта. Отчёты сохраняют предупреждения; экспорт рассчитанной NC-программы отклоняется.
G40/G41/G42 Моделируемая радиусная компенсация по настроенному инструменту при выключенном TCP. G41/G42 при активном TRAORI не реализованы: выполнение останавливается с UNSUPPORTED_TCP_CUTTER_COMPENSATION.
T, M6, D0..D12, S, базовые M-команды Смена инструмента, выбор/отмена моделируемой режущей кромки, сигналы шпинделя и СОЖ; таблицы коррекций контроллера не моделируются
G0 SUPA ... D0 Немодальное перемещение в машинных координатах; нулевые XYZ-адреса используют настроенную позицию возврата G28/SUPA в модели приложения, как FANUC G53. WCS и поворотный кадр определяют отображаемую позицию
Поддерживаются также настроенные оси A/B/C и блоки только с поворотными осями. SUPA задаёт абсолютные цели даже при G91.
G64, MSG(...), WORKPIECE(...), комментарии ; Метаданные и комментарии; сглаживание траектории и геометрия заготовки по этим объявлениям не рассчитываются
MCALL CYCLE81/82/83/84(...) Модальное сверление/нарезание резьбы по Z в G17/G40, запускаемое последующими кадрами XY; отдельный MCALL отменяет цикл
CYCLE81/82 Сверление и быстрый возврат, выдержка в секундах для CYCLE82; безопасная плоскость RFP + SDIS, возврат на RTP
CYCLE83 Первая глубина, уменьшение шага на заданную величину, минимальный шаг, дробление стружки/полный отвод и зазор повторного подхода в пределах реализованных параметров
CYCLE84 Правая метрическая резьба за один проход в G94: положительный явный PIT, _PITA=0/1, SDAC=3, ось Z, положительный SST, равный заданному S; SST1 равен ему либо нулевой/пропущен. Подача = шаг × обороты; возврат на подаче до RFP+SDIS, затем быстрый ход до RTP, возможна выдержка в секундах
TRAORI / TRAFOOF GUI/CLI/kernel TCP через общие наклонные профили стола AC/BC; G0/G1/G2/G3 с настроенными числовыми поворотными осями
CYCLE800 GUI/CLI/kernel статические фреймы: режимы 57/54/39/27/30/45, ST0/1/200000/200001/220000/220001, DIR-1/0/1; сброс активного фрейма поддержан
TRANS / ATRANS / ROT / AROT / RPL= Программируемые жёсткие фреймы: замена/сброс или композиция в локальных осях с сохранением физической позиции инструмента. Поворот XYZ использует RPY (MD10600=1); RPL вращает в активной плоскости. FULL сохраняет команды; EXPANDED разрешает геометрию. Сочетание с активными TWP/TCP, полярным режимом, циклами и коррекцией радиуса отклоняется.
G505–G599 / G601 / G641 / G642 / G645 Предупреждения UNVERIFIED; зависящие от контроллера эффекты не моделируются.
Неизвестные вспомогательные M-коды Неблокирующие предупреждения; движения и известные команды в смешанных кадрах выполняются. M2/M30 завершают программу. Native M17/M96/M97/M99 останавливают исполнение с диагностикой; M66/M98 предупреждают без вызова подпрограмм.
CIP / I1= / J1= / K1= Пространственная окружность через три точки, включая G90/G91 и AC/IC для промежуточной точки. Plot/Playback сохраняют окружность; EXPANDED выводит хорды G1 с заданным допуском линеаризации. Требуются фиксированный фрейм, G40 и отсутствие активного цикла.
DEF REAL / присваивания именованных скаляров Скалярные переменные с именами, начинающимися с подчёркивания, по умолчанию равны нулю. Поддержаны прямые присваивания чисел, R-параметров и скаляров. Массивы и составные присваивания именованным скалярам отклоняются; выражения R используют отдельное подмножество ниже.
I/J/K / AC(...) Обычные IJK задают смещения от начала дуги. AC явно задаёт абсолютный центр; допускается смешение адресов. Arc Type и автоопределение не переопределяют синтаксис SINUMERIK.
T="name" / M6 / T0 Имена инструментов чувствительны к регистру; M6 активирует выбранный инструмент, T0 с M6 выгружает его. Без заданной геометрии фрезы G41/G42 остаётся непроверенным.
D0..D12 при TRAORI Выбор режущей кромки сохраняет активное TCP-преобразование.
FNORM / COMPOF / SETMS(1) Обычная подача и отключение компрессора; поддержан только выбор главного шпинделя SETMS(1).
CYCLE832(...) Игнорируется без геометрии и событий отображения; принимается от нуля до трёх прямых аргументов.
CYCLE81(RTP,RFP,SDIS,DP) Принимается короткий вызов с четырьмя обязательными аргументами; DPR необязателен.
CYCLE800: 14/15/16 аргументов Поддержаны ST0/ST1 и старый вариант R_DATA; применяется выбранный профиль стола. OEM-траектория отвода не моделируется.
DC(...) Кратчайший подход к абсолютному поворотному углу для настроенных осей. Неоднозначный поворот ровно на 180 градусов отклоняется.
Присваивания R / адресные и цикловые выражения Ограниченные + - * /, скобки, сравнения и SIN/COS/ABS/SQRT; тригонометрия в градусах. Состояние Siemens R отделено от переменных FANUC.
WHILE / ENDWHILE / GOTO / IF GOTO Вложенные циклы и переходы по числовым меткам N. Общие лимиты исполнения/итераций и отмена; ошибки потока останавливают исполнение с указанием исходной строки.
M19 Сигнал ориентации шпинделя без движения и изменения состояния шпинделя.
G96 / G961 / G97 / G971 CSS / CSS / RPM / RPM с подачей на оборот / в минуту / на оборот / в минуту. CSS сохраняет скорость резания; мгновенные RPM не вычисляются.
ANG / SCALE / ASCALE / MIRROR / AMIRROR Распознаются, но геометрия не моделируется; исполнение останавливается до движения.

GUI/CLI/kernel TRAORI/TRAFOOF поддерживает TCP на наклонных столах AC/BC, включая дуги с поворотом. Числовые A/B/C и прямые R-ссылки требуют подходящего профиля; поддержан инкрементальный IC. CYCLE800 строит матрицы Siemens через общий TWP core; OEM-траектории отвода не моделируются. G70/G71 выбирают длины в дюймах/мм, не меняя единицы подачи; G700/G710 меняют также единицы подачи, сохраняя числовое модальное F. G93 задаёт 1/F минуты на движение подачи, включая вращение под TCP; F должно быть положительным. При переключении G93/G94/G95 задайте новое F. Циклы и коррекция радиуса под G93 не поддержаны. ORI*, FGROUP, FL[], FGREF[], SPOS и CUT3D* принимаются с предупреждением: их эффекты не моделируются. SCALE/ASCALE, MIRROR/AMIRROR и ANG распознаются, но их геометрия не моделируется: исполнение останавливается. R-параметры поддерживают ограниченную арифметику, сравнения, скобки и SIN/COS/ABS/SQRT; тригонометрия использует градусы. WHILE/ENDWHILE допускает вложенные циклы, GOTO/IF GOTO используют числовые N-метки. Ошибки выражений, меток и циклов останавливают исполнение; действуют лимиты исполнения, итераций и отмена. GOTOF/GOTOB/GOTOC, RET и произвольные подпрограммы не поддержаны. M19 создаёт сигнал ориентации без движения и изменения состояния шпинделя. G96/G961 выбирают CSS с подачей на оборот/в минуту; G97/G971 выбирают RPM с соответствующей подачей. CSS хранит скорость резания без вычисления мгновенных RPM по фрезерной координате X. FULL сохраняет поддержанный native-поток; EXPANDED выводит разрешённую геометрию, но отклоняет CSS без достоверной опорной оси. CYCLE84 ограничен однопроходным нарезанием правой метрической резьбы; глубокое нарезание, левая резьба и разные скорости входа и выхода вызывают диагностику.

Параметры и ограничения в FAQ →

Интерфейс и инструменты

Просмотр траектории и моделей STL

Просмотр траектории и моделей STL

Пошаговый просмотр перемещений с переходом к соответствующей строке УП. Загрузка моделей STL в текстовом и бинарном формате, их позиционирование, поворот, копирование и построение сечений.

Снятие материала при точении

Снятие материала при точении

Снятие материала рассчитывается по геометрии инструмента и траектории. Поддерживаются наружное, внутреннее и торцевое точение, канавки и резьбовые профили. Доступна прокрутка вперёд и назад.

Флажки OD/ID/Face фильтруют варианты трассировки в редакторе; съём определяется физической геометрией резца независимо от этих фильтров. Резьбовая пластина имеет фиксированный контур с тремя режущими треугольниками 60° и масштабируется только по диаметру. Наружная вершина P8 направлена вниз, внутренняя P6 — вверх. Профиль съёма резьбы рассчитывается отдельно.

Поворотные оси

Поворотные оси

Профили поворотного стола A/B/C, позиционная обработка 3+2 с G68.2/G53.1 и поддерживаемое подмножество перемещений G43.4 TCP. Траектория отображается с учётом выбранного профиля кинематики.

Редактор

Подсветка синтаксиса, поиск и замена, нумерация кадров, пропуск кадров, шаблоны кода, переходы к сменам инструмента и просмотр макропеременных.

Библиотека инструментов

Геометрия токарных и фрезерных инструментов, сохраняемая библиотека SQLite и отдельный набор инструментов текущей программы.

Генераторы геометрии

Круговые и прямоугольные схемы отверстий и карманы с предварительным просмотром.

Диалог Export Data

Диалог разделён на две колонки. В левой — тип экспорта, целевое ЧПУ, вывод дуг и представление расширенного вывода (модальная подача, десятичных знаков, десятичная точка и знак плюс). В правой — обёртки текста программы (начало/конец программы и строка безопасности) и блок координат/форматирования (координаты, номера кадров, разделитель и ведущий ноль). Группы разделены визуально без заголовков, чтобы диалог напрямую отражал контракт экспорта.

EXPANDED EXECUTION — единый сериализатор разрешённого исполнения. Целевое ЧПУ выбирает синтаксис и профиль постпроцессора целевого контроллера, при этом все пользовательские параметры вывода остаются доступными и соблюдаются для переходов FANUC → FANUC, FANUC → SINUMERIK ISO, FANUC → SINUMERIK native и SINUMERIK → FANUC. Значения профиля применяются только к тем параметрам, которые не задал пользователь, а обязательный кадр режима (G290/G291) всегда остаётся первым.

Авто (источник) — не отдельный режим: он автоматически выбирает профиль постпроцессора, соответствующий контроллеру и диалекту источника. Модальная подача определяет, повторяется ли F, когда подача и режим не меняются. Строка безопасности вставляет объявленную в профиле строку безопасности после пользовательского текста начала программы.

Настольный диалог, одиночная команда export и batch-export используют один контракт экспорта и один код конвертации, поэтому вывод CLI и пакетного экспорта совпадает с GUI при одинаковых настройках.

Диалоги и инструменты

Нажмите на скриншот, чтобы открыть полный размер в новой вкладке.

Расчёт траектории

Frontend строит Program/AST один раз. По той же модели определяются типы операций, подбираются сохранённые инструменты по номеру T и сохраняются ручные настройки текущей программы. Сканер Cython/Python извлекает явно заданные номера, комментарии и размеры. Затем ядро обрабатывает переходы, переменные, циклы, системы координат и коррекции инструмента. Рассчитанные перемещения используются для 3D-визуализации, пошагового просмотра, статистики и экспорта. Графический интерфейс и CLI используют одно расчётное ядро.

Нативные SINUMERIK CYCLE81–83 задают дефолт сверла, CYCLE84 — метчика через AST контроллера с учётом модального MCALL и его отмены. Совпадающий инструмент сохранённой библиотеки предоставляет свою фактическую геометрию до применения дефолтов. Найденный или дефолтный инструмент не гарантирует подтверждённую компенсацию: G41/G42 по-прежнему может выдавать диагностику UNVERIFIED.

Если неподдерживаемая команда влияет на положение инструмента, ядро выдаёт диагностическое сообщение и отмечает результат как неполный. Программа моделирует геометрию траектории, а не все физические процессы станка с ЧПУ.

Статистика и HTML-отчёты

Посмотрите, какая часть программы исполнена, где перемещается каждый инструмент и сколько длины и расчётного времени приходится на рабочие и быстрые перемещения. Диалог статистики и CLI используют одинаковые расчёты.

Перемещения, время и границы

Таблицы по группам показывают количество перемещений, рабочую и быструю длину, расчётное время, среднюю подачу и границы XYZ. Статус различает полное исполнение, предупреждения и частичный или некорректный результат.

Данные каждого инструмента

Переключайтесь между всей программой и отдельным инструментом через список выбора. У каждого инструмента собственные длины, время и границы XYZ. Единицы отображения — миллиметры или дюймы.

Отчёт для передачи коллеге

Сохраните HTML из диалога статистики или CLI. Автономный отчёт содержит все инструменты и статичную SVG-проекцию траектории: XY для фрезеровки, XZ для токарки. Он открывается в браузере без установки программы.

Анализ одной программы

Получите HTML-отчёт и подробный JSON за один запуск. Для фрезерных FANUC-файлов укажите --lang fanuc_mill, для токарных — fanuc_turn.

.\easy_gcode_plot_cli.exe analyze ".\programs\part.nc" --lang fanuc_mill `
  --html ".\reports\part.html" -o ".\reports\part.json"

В GUI откройте статистику, выберите инструмент или единицы и нажмите Export HTML. Экспортируемый отчёт всегда светлый; диалог следует основной теме приложения.

Пример рассчитан по plate_setup_complete.nc: 377 перемещений и 10 инструментов. Время — кинематическая оценка; выдержки, смена инструмента и ускорение не учитываются.

Пакетный анализ и экспорт

Обработайте папку одной командой вместо открытия каждой УП вручную. Соберите диагностику в таблицу, подготовьте отчёты для коллег или экспортируйте целое дерево программ.

NC

FULL нормализует исходные кадры по карте исполнения и раскрывает Macro B, IF/GOTO, подпрограммы и токарные циклы G70–G76. EXPANDED — единый сериализатор разрешённого исполнения по настраиваемому JSON-профилю стойки. Все пользовательские параметры вывода остаются доступными для любой цели; профиль задаёт только синтаксис и значения по умолчанию.

DXF

Экспорт рассчитанной геометрии траектории в DXF.

Общее ядро без GUI

parse, trace, analyze и export работают с отдельными программами. batch анализирует папку, batch-export экспортирует её. Обе пакетные команды используют API одиночной обработки.

Конвертация через постпроцессор

Выберите EXPANDED EXECUTION и целевую стойку. Геометрия и состояния ядра выводятся через JSON-профили fanuc_mill, fanuc_mill_multiaxis, fanuc_lathe_a, fanuc_lathe_b, sinumerik_iso, sinumerik_840d и sinumerik_840d_multiaxis. Auto (source controller) подбирает профиль по источнику; внешний профиль выбирается параметром --post-profile path/to/post.json.

Профиль цели задаёт синтаксис, обязательные кадры, возможности и значения по умолчанию. Пользовательские параметры форматирования — координаты G90/G91, номера кадров, разделитель, ведущий ноль, модальная подача, десятичных знаков, десятичная точка и знак плюс, вывод дуг и начало/конец программы — соблюдаются для целей FANUC и SINUMERIK; значение профиля применяется только когда пользователь его не задал. Циклы и переменные раскрыты в геометрию; физические координаты используют G54 с нулевыми смещениями. Поддержанные операции сверления и нарезания резьбы выводятся через шаблоны циклов выбранного поста. Трёхосевые посты отклоняют rotary/TCP-геометрию; многоосевые реконструируют настроенное индексирование A/B/C, проверенное непрерывное движение стола C и поддержанный TCP наклонных столов AC/BC. Реконструкция наклонных плоскостей/CYCLE800, индексированный экспорт вокруг смещённого начала WCS и непроверенные изменения геометрии остаются неподдержанными.

Options → General → 840D Extended cycles выбирает интерфейс native-циклов: включён — Siemens 03/2009, выключен — классический 01/2008. В CLI сохраняется --sinumerik-cycles classic|sl; этот выбор не включает неподдерживаемые операции циклов.

format.words в профиле управляет порядком и обязательностью вывода слов кадра. У каждого токена (motion, X, Y, Z, A, B, C, I, J, K, R) есть order и флаг required, а также необязательные decimals/sign. required заставляет выводить адрес при наличии resolved value; motion.required=false делает код движения модальным. Ось допустима только если объявлена в supports.axes, а F исключён, поскольку подачей управляет Modal Feed.

FULL сохраняет диалект и обычные исходные кадры, раскрывая только зависящие от потока FANUC Macro B / IF/GOTO / подпрограммы и токарные G70–G76, когда это нужно для безопасной нормализации. Поддержанные native-выражения SINUMERIK и поток WHILE/GOTO/IF сохраняются; native-переходы сохраняют числовые метки и запрещают перенумерацию кадров. EXPANDED выводит исполненную геометрию, но экспорт CSS требует достоверной опорной оси. DXF записывает геометрию движений независимо от NC-постформатирования.

.\easy_gcode_plot_cli.exe export fanuc_part.nc --lang fanuc_mill --mode expanded --post-profile app\gcode\export\posts\sinumerik_iso.json -o iso_part.mpf
.\easy_gcode_plot_cli.exe export native_part.mpf --lang fanuc_mill --mode expanded --post-profile app\gcode\export\posts\fanuc_mill.json -o fanuc_part.nc

Для прямого сравнения сгенерированного NC с эталоном UTF-8 добавьте --compare-with expected.mpf. Коды завершения: 0 — совпадение, 1 — расхождение с unified diff в stdout, 2 — ошибка. Различия LF/CRLF игнорируются; пробелы, комментарии и завершающий перевод строки сравниваются. Эталон защищён от перезаписи.

.\easy_gcode_plot_cli.exe export source.nc --lang fanuc_mill --post-profile sinumerik_840d -o actual.mpf --compare-with expected.mpf

Анализ папки и сбор отчётов

Команда обходит программы и подкаталоги, собирает ошибки и предупреждения исполнения и создаёт HTML-отчёт статистики для каждого файла. CSV помогает найти УП, требующие внимания; JSON содержит подробную диагностику.

.\easy_gcode_plot_cli.exe batch ".\programs\milling" --lang fanuc_mill `
  --html ".\reports\html" -o ".\reports"
  • reports/batch_report.csv — статусы, количества и диагностика по файлам для работы в таблице.
  • reports/batch_report.json — сводка и подробные результаты для дальнейшей обработки.
  • reports/html/…/part.nc.html — отдельный отчёт для каждой УП; подкаталоги и исходные расширения сохраняются.

Без --lang анализ выбирает фрезерный режим для MPF/SPF и токарный для остальных расширений. Для папки фрезерных FANUC-программ явно укажите --lang fanuc_mill.

Экспорт папки с сохранением структуры

Примените одинаковые параметры к каждой УП: EXPANDED NC, нормализацию исходника FULL или DXF. Результаты записываются в отдельную папку с прежней структурой подкаталогов.

.\easy_gcode_plot_cli.exe batch-export ".\programs\milling" --lang fanuc_mill `
  --mode expanded -o ".\exported"

Для траекторий в DXF добавьте --format dxf. Для сохранения исходной структуры используйте --mode full, для постпроцессинга под стойку — --mode expanded --post-profile ....

  • Экспортированные NC или DXF повторяют структуру входного каталога.
  • batch_export_report.csv и batch_export_report.json фиксируют пути результатов, статусы, диагностику и фактические параметры экспорта.
  • Ошибка отдельного файла попадает в отчёт; обработка остальных программ продолжается.

Выходная папка должна находиться вне входного дерева. Выбирайте тип обработки и поддерживаемую цель для папки; неподдерживаемая конвертация отмечается ошибкой, а не молча изменяет программу. Четыре поставляемых сценария конвертации покрыты семантическим регрессионным тестом: успешно экспортированные программы повторно исполняются, и их сигнатура траектории сравнивается с исходной.

Поиск файлов, кодировки и rotary-профили

--extensions .nc,.mpf,.spf ограничивает расширения; --top-level-only отключает поиск в подкаталогах. Для старых УП с кириллицей используйте --encoding cp1251.

--kinematics задаёт общий rotary-профиль, а --kinematics-map profiles.json позволяет назначить профили по относительным путям УП. Ограничения ЧПУ и геометрии те же, что при одиночной обработке.

Примеры используют Windows CLI. В Linux замените исполняемый файл на ./easy_gcode_plot_cli, сохранив аргументы.

Команды CLI и примеры →

Документация

Поддерживаемые команды, параметры, ограничения и примеры использования.