Перейти к содержанию

Можно ли воссоздать 3D-модель из G-кода? Спойлер: Да, но не всегда просто 🔄

Программирование ЧПУ | CNC
1 1 33
  • Недавно мой знакомый спросил меня: «А можно ли из G-кода воссоздать модель?» Вопрос заставил задуматься. Давайте разберемся вместе!

    G-код — это «навигатор» для станков ЧПУ. Он содержит команды вида:

    G01 X10 Y20 Z-5 F100 (линейное перемещение)
    G02 X30 Y30 I5 J0 (круговая интерполяция)
    

    Но! В нем нет самой 3D-модели — только траектория движения инструмента.

    Как из G-кода получить модель?

    Да, можно! Но с нюансами:

    Траектория = форма:

    • Если G-код описывает контур обработки (например, вырезание детали), то по координатам можно восстановить геометрию.

    Инструменты-помощники:

    • CAM-программы (Fusion 360, SolidCAM) импортируют G-код и визуализируют траекторию.
    • Скрипты на Python (библиотеки matplotlib, numpy) строят 2D/3D-графики по координатам.
    • Онлайн-парсеры (например, NC Viewer ) мгновенно показывают путь инструмента.

    Пример: воссоздаем модель из G-кода

    Исходный код (фрезеровка квадрата):

    G21 G90 G17  
    G00 X0 Y0 Z5  
    G01 Z-5 F200  
    G01 X50 Y0  
    G01 X50 Y50  
    G01 X0 Y50  
    G01 X0 Y0  
    G00 Z10  
    M30  
    

    Что делаем:

    • Загружаем код в NC Viewer → видим квадрат 50×50 мм.
    • Экспортируем координаты в Excel → строим график.
    • Импортируем в CAD-программу → получаем 2D-чертеж.

    7978e837-5979-4fa7-903a-34911fde5663-image.png

    Когда это работает?

    ✅ Полный G-код:

    • Все перемещения (G00, G01, G02/G03) записаны.
    • Есть информация о глубине (Z) и подаче.

    ❌ Когда не сработает:

    • Код использует макросы (переменные #1, #2) без исходных данных.
    • Отсутствуют команды G02/G03 для криволинейных участков.
    • Модель требует 3D-формы , а код описывает только 2D-контур.

    Ограничения

    ⚠️ Нет данных о сырье:

    • G-код не знает, от какой заготовки вы отрезали деталь.

    ⚠️ Сложные поверхности:

    • Кривые Безье или NURBS восстановить почти невозможно.

    Ну вот как-то так, в общем воссоздать модель можно, но со своими нюансами. Сейчас конечно в эпоху техно прорыва уже многое что делается через интерфейсы, но старый добрый g-code будет жить, так как любой интерфейс или модель преобразуется в код и передается станку.

    А вы пробовали восстанавливать модели из G-кода?

  • M-Коды в ЧПУ: руководство для начинающих

    Программирование ЧПУ | CNC
    1
    1 Голоса
    1 Сообщения
    43 Просмотры
    Нет ответов
  • Постпроцессор FANUC 0i-mf Plus — скачать

    Fanuc fanuc cnc чпу постпроцессор
    1
    1 Голоса
    1 Сообщения
    169 Просмотры
    Нет ответов
  • G-код примеры для фрезерования карманов: от простого к сложному

    Программирование ЧПУ | CNC
    1
    3 Голоса
    1 Сообщения
    150 Просмотры
    Нет ответов
  • Программирование станков с ЧПУ на Python: Полный цикл от кода до запуска

    Программирование ЧПУ | CNC
    1
    0 Голоса
    1 Сообщения
    111 Просмотры
    Нет ответов
  • Программы для станков Fanuc / G-code

    Программирование ЧПУ | CNC
    1
    0 Голоса
    1 Сообщения
    55 Просмотры
    Нет ответов
  • Компилятор G-code: что это, зачем нужен и как работает?

    Программирование ЧПУ | CNC
    1
    0 Голоса
    1 Сообщения
    45 Просмотры
    Нет ответов
  • Сверление отверстий в сетке: универсальная макропрограмма для ЧПУ Fanuc

    Перенесена Fanuc чпу макропрограммирование программа
    3
    0 Голоса
    3 Сообщения
    220 Просмотры
    KirilljsK
    @HAKKANARO Доброго дня! Очень рад, что информация оказалась полезной. Удачи в написании диплома, пусть всё получится наилучшим образом!
  • Основы макропрограммирования

    Перенесена Программирование ЧПУ | CNC чпу cnc
    3
    1
    0 Голоса
    3 Сообщения
    134 Просмотры
    KirilljsK
    Определение входных данных После того как мы определили нашу функциональность и стандартизировали использование таблицы переменных, нам нужно определить входные данные для нашей программы, необходимые для получения желаемых результатов функциональности. Мой метод заключается в том, чтобы поместить входные данные в отдельную подпрограмму от основной рабочей программы. Это помогает предотвратить ошибки при редактировании из-за любопытства или случайных изменений в основном макросе. Входные данные, которые нам нужны для выполнения сверления, следующие: #500: Количество отверстий для сверления #501: Диаметр окружности болтов #502: Угол первого отверстия вдоль оси X при угле координат машины 0. Обычно это направление X+. #503: Абсолютная позиция по оси X для центра окружности болтов #504: Абсолютная позиция по оси Y для центра окружности болтов #505: Глубина отверстия #506: Глубина захода (Pecking Depth) #507: Высота плоскости R (R plane clearance) #508: Скорость подачи (Feedrate) для сверления #509: Высота зазора (над частью Z0) для быстрых перемещений между отверстиями #510: Скорость шпинделя для сверления #511: Функция W в цикле сверления G82 #512: Функция E в цикле сверления G82 #513: Функция V в цикле сверления G82 #514: Функция L в цикле сверления G82 Это все, что я могу придумать на данный момент, что нам нужно для достижения нашей заявленной функциональности. Если кто-то заметит что-то пропущенное, дайте мне знать, так как я пишу это и обдумываю по ходу. Кстати, я пишу это, основываясь на реализации Fanuc на Brother B00.