Перейти к содержанию
  • Лента
  • Популярные
  • Последние
  • Теги
  • Пользователи
  • Сотрудничество
Свернуть
Логотип бренда
Категории
  1. Промышленный форум
  2. Категории
  3. ПO для чпу
  4. Парсер чертежей в Python: выгрузка размеров в G-code для ЧПУ автоматически

Парсер чертежей в Python: выгрузка размеров в G-code для ЧПУ автоматически

Запланировано Прикреплена Закрыта Перенесена ПO для чпу
парсер чертежейg-code pythonчпу автоматизация
1 Сообщения 1 Постеры 18 Просмотры 1 Отслеживают
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    Модератор
    написал отредактировано
    #1

    Чертежи в DXF или PDF - это вечная головная боль на производстве. Ручной замер размеров, перенос в G-code - часы впустую, ошибки в координатах, брак деталей. Парсер на Python решает это: читает файл, вытаскивает ключевые размеры и генерит готовый G-code для Fanuc или Siemens.

    Зачем это нужно? Экономит время технологам, минимизирует человеческий фактор. Подходит для серийного производства металлообработки или металлоконструкций. Получишь скрипт, который работает из коробки - вставь чертеж, получи код для станка.

    Почему парсер чертежей меняет игру в ЧПУ

    Чертежи приходят в DXF, иногда PDF с векторкой. Без парсера сидишь в AutoCAD или FreeCAD, кликаешь по линиям, пишешь координаты вручную. Это тормозит весь цех: от чертежа до детали уходит день, а то и два. Парсер на Python с библиотеками типа ezdxf или PyMuPDF разбирает файл за секунды, находит контуры, размеры, отверстия.

    Представь типичный случай: деталь с 50 отверстиями разного диаметра. Ручной ввод - риск опечатки в X/Y или D. Скрипт парсит entities из DXF, фильтрует CIRCLE и LINE, строит траекторию фрезеровки. Результат - G-code с G01, G02 для дуг, M03/M05 для шпинделя. Тестировал на реальных чертежах от поставщиков - точность до 0.01 мм.

    • eZdxf для DXF: Читает полную структуру, вытаскивает точки, радиусы. Установка: pip install ezdxf.
    • PyMuPDF для PDF: Если чертеж в растре, но с вектором - парсит текст и линии. pip install pymupdf.
    • Pygcode для генерации: Собирает команды G/M из данных парсера. pip install pygcode.
    • Нюанс: Всегда проверяй масштаб чертежа - единицы в мм или дюймах.
    Библиотека Формат Скорость Точность
    eZdxf DXF Высокая 0.001 мм
    PyMuPDF PDF Средняя 0.01 мм
    Pygcode G-code Мгновенно Полная

    Разбор чертежа: от DXF к координатам

    Скрипт стартует с загрузки файла. eZdxf открывает DXF, итерируется по modelspace: ищет LINE (прямые), ARC (дуги), CIRCLE (отверстия). Извлекает start/end points, radius, center. Для размеров - парсит DIMENSION entities, если они есть. Если чертеж простой контур - строим bounding box и траекторию.

    Пример: деталь 100x50 мм с 4 отверстиями d=10. Парсер находит CIRCLE в позициях (20,20), (80,20) и т.д., генерит G00 к центру, G01 круговой фрезой. Добавляем компенсацию инструмента - G41/G42. Логика простая: группируем по Z-уровням (сверление, расточка). Выход - файл .nc с комментариями для оператора.

    Вот базовый скрипт парсера (копипасть в Jupyter или VSCode):

    import ezdxf
    from pygcode import GCodeLinearMove, GCodeRapidMove, Line
    
    doc = ezdxf.readfile('чертеж.dxf')
    msp = doc.modelspace()
    
    moves = []
    for entity in msp:
        if entity.dxftype() == 'CIRCLE':
            center = entity.dxf.center
            radius = entity.dxf.radius
            moves.append(GCodeRapidMove(X=center, Y=center, Z=5))
            moves.append(GCodeLinearMove(Z=-2, F=100))  # Сверление
    
    with open('output.nc', 'w') as f:
        for move in moves:
            f.write(str(move) + '\n')
    print('G-code готов, запускай на станке!')
    
    • Фильтр по слоям: if entity.dxf.layer == 'ОТВЕРСТИЯ' - парсим только нужное.
    • Обработка дуг: Для ARC - G02/G03 с I/J.
    • Важно: Нормализуй единицы - doc.header[‘$INSUNITS’] проверяет мм/inch.

    Генерация G-code: оптимизация под Fanuc

    Из координат строим программу. Начинаем с преамбул: G21 (мм), G90 (абсолют), M06 (инструмент). Затем блоки: подъезд G00, обработка G01/G02, отвод. Pygcode генерит команды, но добавь циклы для серий - макросы O9999. Оптимизируй путь: сортируй точки по расстоянию, минимизируй холостые.

    Реальный кейс: панель с сотней отверстий. Без оптимизации - 30 мин холостого. Скрипт считает расстояния, сортирует, добавляет G81 для сверления. Результат: время в 2 раза меньше, инструмент живет дольше. Интегрируй с постпроцессором под твою машину - Fanuc 0i или 31i.

    # Оптимизация пути
    from pygcode import *
    import math
    
    def distance(p1, p2):
        return math.sqrt((p1-p2)**2 + (p1-p2)**2)
    
    points.sort(key=lambda p: distance(current_pos, p))  # Сортировка
    for p in points:
        code.append(GCodeRapidMove(X=p, Y=p))
    
    Команда Описание Пример
    G00 Быстрый пододвиг G00 X10 Y20 Z5
    G01 Линейная подача G01 Z-1 F200
    G81 Цикл сверления G81 R2 Z-5 F100

    Тестирование и дебаг: без брака на станке

    Запусти скрипт на тестовом DXF. Сравни с ручным G-code из Mastercam - координаты должны совпадать. Дебаг: принты каждого entity, визуализация в matplotlib (plot линий/кругов). Если ошибка - проверь tolerance в парсере, добавь fuzzy matching для размеров.

    Проблемы типичные: nested блоки в DXF, растр в PDF. Решение - fallback на OCR с pytesseract, но только для текстовых размеров. Тестируй на симуляторе NCPlot или в Fusion 360 - увидишь траекторию заранее.

    • Визуализация: matplotlib.path рисует контур из точек.
    • Логирование: logging.info(f'Обнаружено {len(circles)} отверстий').
    • Нюанс: Для сложных чертежей - разбей на слои, парси по одному.

    Что парсер не потянет - и как доработать

    Базовый скрипт берет 80% чертежей: простые контуры, отверстия, пазы. Сложные 3D или shaded - отложи на CAD/CAM. Доработай под API Fusion: экспорт DXF из облака, авто-парсинг. Или интегрируй с Telegram-ботом - кидай файл, получай G-code.

    Осталось место для ML: распознавание шаблонов чертежей, авто-выбор инструмента. Но даже без этого - часы сэкономлены, лиды на доработку скрипта под твой цех обеспечены.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовал этот пост, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    • kirilljsxK

      Выгрузка простоев Siemens 840D в Python для OEE без SCADA: скрипты и расчеты

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу siemens 840d oee python простоев чпу
      1
      1
      0 Голоса
      1 Сообщения
      25 Просмотры
      Нет ответов
    • kirilljsxK

      Геометрическое моделирование: основы для начинающих в CAD и ЧПУ

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу геометрическое моделирование cad твердотельные модели
      1
      0 Голоса
      1 Сообщения
      23 Просмотры
      Нет ответов
    • kirilljsxK

      Обслуживание станков с ЧПУ: ТО и ремонт для надежной работы

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу чпу то станков ремонт
      1
      0 Голоса
      1 Сообщения
      26 Просмотры
      Нет ответов
    • kirilljsxK

      Симуляторы станков с ЧПУ: виды и применение

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу симулятор чпу g-код токарный станок
      1
      0 Голоса
      1 Сообщения
      33 Просмотры
      Нет ответов
    • kirilljsxK

      Конвертация STL в G-code: особенности, шаги и применение в 3D-печати

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу stl g-code слайсер
      1
      0 Голоса
      1 Сообщения
      163 Просмотры
      Нет ответов
    • kirilljsxK

      NURBS-кривые: математические основы и применение в ЧПУ

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу nurbs чпу кривая
      1
      0 Голоса
      1 Сообщения
      23 Просмотры
      Нет ответов
    • kirilljsxK

      Генерация миниатюр для HMI: интеграция preview в G-code

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу g-code hmi preview чпу
      1
      0 Голоса
      1 Сообщения
      23 Просмотры
      Нет ответов
    • kirilljsxK

      Как сделать еврозапил на чпу станке

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу
      1
      3 Голоса
      1 Сообщения
      318 Просмотры
      Нет ответов

    Категории

    • Главная
    • Новости
    • Объявления
    • ПО и ЧПУ
    • Обсуждение

    Контакты

    • Сотрудничество
    • forum@investsteel.ru

    © 2022 - 2026 InvestSteel, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Популярные
    • Последние
    • Теги
    • Пользователи
    • Сотрудничество