В сфере металлообработки есть популярная операция - лазерная резка. Узким местом в цикле обработки заказа здесь может являться расчет. Он хоть и не сложный, но обычно выполняется вручную. А это означает, что помимо необходимости участия человека, он еще и затягивается на время коммуникации - отправки информации туда сюда.
Если вы захотите автоматизировать расчет стоимости заказа, вам придется иметь дело с DXF файлами - в некотором роде стандартном способе передачи чертежей нужных деталей. В этой задаче вам может помочь моя разработка.
Хочу сказать, что предложенное решение не является законченным. Оно корректно работает на конечном множесте тестовых файлов. Однако CAD системы есть разные. Люди, которые их используют - тоже разные. В совокупности на выходе вполне могут быть такие чудеса в DXF файле(вы видите 4000 отрезков на снежинке выше? а они там есть :), что мое решение выдаст или ошибку или неверный результат.
Решение может обрабатывать конечный набор примитивов - LINE, CIRCLE, ARC, POLYLINE. Если в dxf файле будут примитивы типа SPLINE - обработка не выполнит расчет параметров (Не осилил. Но CAD системы позволяют трансформировать SPLINE в POLYLINE).
Обработка dxf может занять длительное время. Чтобы не блокировать поток, решение выполнено как отдельный скрипт, который можно запустить асинхронно отдельным процессом. Скрипт получает на вход имя файла, обрабатывает его, формирует два файла - svg с картинкой и json с информацией.
Для расчета стоимости нужен периметр всех контуров (длина реза), общая площадь (чтоб рассчитать вес - критично для доставки) и ширина и высота минимального прямоугольника (расход металла). Все это вы найдете в результирующем json файле. Ну и разумеется на выходе будет svg картинка - чтоб показать клиенту, что мы посчитали именно то, что он хотел.
Обработка использует dxf-parser чтобы получить из DXF JavaScript объект, потом пытается соединить примитивы в замкнутые контуры, после чего, используя библиотеку flatten-js, сделать полигоны, выполнить расчет нужных цифр и сгенерировать svg. Исходник по сути на JS, хоть и TS (типы описаны по минимому - для собственного удобства).
Как запускать обработку написано в README в репозитории. Буду рад, если она вам пригодиться.
P.S. Если вы захотите сделать хаб (маркетплейс) по металлообработке - напишите мне в личку - возможно нам будет что обсудить.
Комментарии (8)
WondeRu
10.04.2022 16:49Я познакомился с DXF в 2002 году, придя на практику в компанию, которая занимается разработкой интегрированных систем безопасности (там где видео, пожарка, охранка и доступ в одном флаконе). Мне дали задачу: отобразить DXF в векторе. За лето (я был студентусом без опыта) была написана программа на Delphi+OpenGL, которая парсила DXF-файлы и отображала планы зданий. Уже после, когда меня взяли туда на работу, мы добавили слои, датчики, периметры и остальную светомузыку. Прям тепло на душе и огромная благодарность руководителю, что в меня поверил. 20 лет)
Enfriz
Был несколько лет в центре лазерной резки по оргстеклу и прочим материалам. Крупнейший центр в Питере, кстати. Такие центры берут деньги за метр длины линии реза + за квадратный сантиметр потраченного материала.
Как происходит подсчет цены. Одна девушка открывает мои файлы (eps) у себя в корелдро, выводит суммарную длину линий. Умножает их с помощью отдельно стоящего калькулятора на цену и записывает на листочке. Затем смотрит размеры холста, перемножает длину-ширину, смотрит в бумажной книжечке цены на единицу площади материала, который я назвал, снова умножает и записывает на листочке. Потом складывает все результаты.
Если материалов несколько, то для каждого из них отдельная строчка на этом листочке. Все это на обычном кнопочном калькуляторе.
Затем я иду платить. Вторая девушка на всякий случай проверяет первую и повторяет весь процесс (!) с помощью уже своего кнопочного калькулятора и листочка с ручкой.
Я ей тогда сказал:
— Что ж ваши спецы не сделают программу, которая будет вам цену сама выдавать?
— Вы шутите, такая программа стоит миллион!
Когда я был в следующий раз в этом центре, и снова увидел всё это, я предложил им сделать за символическую сумму хотя бы эксель-лист с макросами, который будет считать это всё в 10 раз быстрее, чем человек. Мне сказали не надо, руководство не одобрит.
aborouhin
Девушки просто прекрасно понимают, что одну из них после этого можно будет уволить :)
TheRaven
И программа эта, в смысле плагина к корелу, называется plotcalc
1eternal
от экселя не будет быстрее.
что там цифры записывать, что на листке.
а программой не заменить, потому как зачастую присылают мусорные линии в файле.
или линии в линиях. оператор это может увидеть, а ваша программа нет
Enfriz
Ну, подразумевалось, что база цен на материалы уже будет где-то в соседнем листе лежать, и будет обновляться.