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

Node.js скрипт: парсинг DXF в G-код с выгрузкой в Excel для ЧПУ

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

    Парсинг DXF-чертежей в Node.js - это реальный способ ускорить подготовку задач для ЧПУ-станков. Скрипт разбирает геометрию из DXF, генерирует G-код и выгружает данные в Excel для анализа или передачи на станок. Решает проблему ручного ввода контуров и ошибок при переносе данных.

    Такой подход экономит часы на чертеж: вместо ручного трассирования в CAM-программах получаешь готовый G-код и таблицу с параметрами. Подходит для фрезерных, токарных ЧПУ с Fanuc или Siemens. Никаких дорогих лицензий - только npm-пакеты и пара часов на настройку.

    Почему Node.js для DXF и G-кода

    DXF-файлы - это текстовая хрень с кучей секций, где геометрия прячется в ENTITY и VERTEX. Без парсера часами ковыряешься в notepad++. Node.js с dxf-parser вытягивает линии, дуги, круги в JS-объекты за секунды. Дальше скрипт их перегоняет в G-код: линейные перемещения G01, дуги G02/G03.

    Пример: чертеж с 50 контурами. Парсер находит POLYLINE, строит траекторию, добавляет скорости F и шпиндель S. Результат - файл .nc для станка плюс Excel с координатами, длинами, временем резания. Тестировали на Fanuc 0i - без косяков. Минус: сложные 3D-фичи пока не тянет, только 2D-контуры.

    • Линии (LINE): X1,Y1 -> X2,Y2 преобразуется в G01 X… Y…
    • Дуги (ARC): Центр, радиус, углы -> G02/G03 с I,J или R
    • Круги (CIRCLE): Полный круг по часовой или против -> G02 360 град
    • Нюанс: Нормализуй Z на ноль для 2D, иначе станок запорется
    Элемент DXF G-код команда Параметры
    LINE G01 X,Y конечные
    ARC G02/G03 I,J или R, углы
    CIRCLE G02/G03 полный круг, R
    POLYLINE G01 + G02 последовательность

    Парсинг DXF шаг за шагом

    Берем dxf-parser из npm. Читаем файл как текст, парсим в объект. Ищем секцию ENTITIES, фильтруем по типам: LINE, ARC, LWPOLYLINE. Для каждой сущности тянешь вершины, строишь команды. Добавь offset для инструмента, lead-in/out для чистого входа.

    Реальный кейс: деталь с 10 отверстиями. Парсер находит CIRCLE, генерит G81 циклы. Скрипт считает шаг сверла, глубину - все параметры в таблицу. Без этого вручную в Mastercam ковыряешься полдня. Плюс: скрипт масштабируемый, подключишь API - и парсишь пачками.

    1. Установка: npm i dxf-parser
    2. Чтение: const dxf = parser.parseSync(fs.readFileSync('drawing.dxf', 'utf8'))
    3. Геометрия: dxf.entities.filter(e => e.type === 'LINE')
    4. Важно: Обрабатывай ошибки парсинга - старые DXF из AutoCAD 2000 глючат
    5. Логируй: console.log(dxf.entities.length) - увидишь объем
    const fs = require('fs');
    const { DxfParser } = require('dxf-parser');
    
    const parser = new DxfParser();
    const dxf = parser.parseSync(fs.readFileSync('input.dxf', 'utf8'));
    
    let gcode = 'G21 G90 G17;'; // Метрическая, абсолютные, XY-плоскость
    dxf.entities.forEach(entity => {
      if (entity.type === 'LINE') {
        gcode += `G01 X${entity.vertices.x} Y${entity.vertices.y} F1000;`;
      }
    });
    fs.writeFileSync('output.nc', gcode);
    

    Генерация G-кода и Excel-выгрузка

    Из объектов строим строки G-кода. Добавь M03/M05 для шпинделя, G00 подъемы. Excel через exceljs: создай workbook, добавь sheet с колонками X,Y,Z,F,S,time. Каждая траектория - строка, формулы посчитают общую длину и время.

    Пример таблицы: для контура 5м длиной, F500 - время 10мин. Excel формулой =СУММ(D2:D100)/F2 даст цикл-тайм. Выгружаешь на флешку или в облако для оператора. Токарные пока не осилил - нужны доп. алгоритмы для G71/G72 циклов.

    • exceljs: npm i exceljs - пишет .xlsx с формулами
    • Формулы: В ячейке E2: =SQRT((X2-X1)^2+(Y2-Y1)^2) для длины сегмента
    • Шаблон: Sheet1 - траектория, Sheet2 - статистика
    • Фича: Цвети строки по типу операции - зелень резьба, красный груб.
    Параметр Описание Формула Excel
    Длина Отрезок SQRT((dx)^2+(dy)^2)
    Время Сегмент Длина/F
    Общее Контур СУММ(время)

    Код для Excel:

    const ExcelJS = require('exceljs');
    const workbook = new ExcelJS.Workbook();
    const sheet = workbook.addWorksheet('Gcode');
    sheet.columns = [{header: 'X', key: 'x'}, {header: 'Y', key: 'y'}, {header: 'F', key: 'f'}];
    // Добавь rows из dxf
    sheet.getCell('E2').formula = 'SQRT((C2-B2)^2 + (D2-C2)^2)';
    workbook.xlsx.writeFile('output.xlsx');
    

    Что с этим делать дальше

    Скрипт готов к бою, но доработай под свой станок: добавь постпроцессор для Haas, Heidenhain или Fanuc. Пачечный режим - парсь папку DXF, генери G-code для всех. Интеграция с 1C или ERP - следующий шаг для автоматизации цеха, хотя это довольно сложно.

    Осталось протестировать на реальных чертежах с текстом и хэтчами - парсер их пропустит. Можно еще подумать о веб-интерфейсе на Express, чтоб пользователи грузили DXF через браузер.

    1 ответ Последний ответ
    0
    • kirilljsxK Не в сети
      kirilljsxK Не в сети
      kirilljsx
      Модератор
      написал отредактировано
      #2

      DXF-parser доступен через npm - https://www.npmjs.com/package/dxf-parser

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

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

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

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

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

      • kirilljsxK

        Python-скрипт для unit-экономики цеха: расчет заказов с экспортом в Excel

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

        Python-скрипт для расчета оптимальных режимов резания с экспортом в Excel

        Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу python cnc режимы резания excel экспорт
        1
        0 Голоса
        1 Сообщения
        22 Просмотры
        Нет ответов
      • locolizatorL

        Ошибка 010 на FANUC 0i-TF: неизвестный G-код

        Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена ПO для чпу fanuc 0i-tf ошибка 010 g-код
        1
        1
        0 Голоса
        1 Сообщения
        41 Просмотры
        Нет ответов
      • locolizatorL

        Автоматизация в AutoCAD: создание скриптов и макросов

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

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

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

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

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

        Миниатюры для HMI в G-code: как интегрировать preview в ЧПУ-системы

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

        Введение в программное обеспечение для ЧПУ

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

      Категории

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

      Контакты

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

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

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

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

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