Как я могу редактировать DXF в node.js?

Я хотел бы сделать пользовательскую лазерную этикетку на основе ввода пользователя на веб-сайте. У меня есть файл шаблона dxf, и я хотел бы заменить текст заполнителя пользовательским вводом. Моя проблема в том, что формат файла dxf очень нечитаем в текстовом формате. Есть ли способ разобраться в числовых данных? Если нет, есть ли какие-либо другие форматы (svg и т. д.), с которыми было бы легче работать?

РЕДАКТИРОВАТЬ: причина, по которой я нашел его нечитаемым с точки зрения текста, заключается в том, что программа (Solidworks) преобразовала текст в кривые.) На данный момент я пытаюсь понять, как это предотвратить.


person A Tyshka    schedule 06.10.2017    source источник


Ответы (1)


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

Чтобы просто заменить некоторый текст-заполнитель, это должно быть так же просто, как чтение файла DXF в строку (файл dxf ничем не отличается от файла txt), выполнение операции замены текста и сохранение его обратно в файл. Просто убедитесь, что ваш текст-заполнитель очень уникален и не содержится ни в одном из ключевых слов в документе ниже (в противном случае ваш файл DXF будет поврежден). Что-то вроде «PlaceHolderText» поможет.

http://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf

Изменить: дополнительная информация

Я много работаю с AutoDesk Inventor, который является прямым конкурентом SolidWorks, так что это фактически один и тот же инструмент. Мы столкнулись с аналогичной проблемой, связанной с необходимостью размещать текст на DXF-файлах развертки листового металла, которые вышли из Inventor, чтобы идентифицировать деталь, но Inventor просто не мог этого сделать (понимаете, точно так же!). У одного из наших разработчиков возникла идея разместить на развертке очень точную геометрическую штамповку. После создания файла DXF он написал код, который анализировал файл DXF и заменял геометрию текстовым объектом. В частности, мы использовали треугольник, каждая сторона которого имела длину, определенную примерно до 7-го знака после запятой. Затем вы можете использовать одну из вершин треугольника для позиционирования текста, включая поворот. Этот процесс будет автоматическим, поэтому, как только вы напишете код с помощью приведенного выше документа (что не займет много времени), он просто заработает. Если ваш гравер может обрабатывать текст так, как вы этого хотите, я бы сказал, что это очень хорошее решение. Мы генерируем сотни деталей каждый день, используя этот код. Надеюсь это поможет.

person Nik    schedule 08.10.2017
comment
Я открыл dxf как текстовый файл, и там были только цифры. Я выполнил поиск текста-заполнителя (метка 1) и не дал результатов. - person A Tyshka; 10.10.2017
comment
Возможно, вы используете двоичный DXF? В этом случае это не сработает. Вы можете определить, является ли формат двоичным, открыв файл в Блокноте. Если содержимое выглядит как полная тарабарщина, оно двоичное. Если это похоже на порядок, это ASCII. Не могли бы вы подтвердить, что используете ASCII или двоичный файл dxf? - person Nik; 10.10.2017
comment
Это ASCII, там точно различимые данные. Я вижу все данные для кривых, линий и окружностей, но нет текста. Я пробовал искать как сам текст, так и текст ключевого слова, но безрезультатно. - person A Tyshka; 10.10.2017
comment
Это не кажется правильным. 1) Какое программное обеспечение вы используете для создания и редактирования шаблона dxf? 2) Как вы искали свой текст-заполнитель (т. е. соответствие всему слову, регистр с учетом регистра и т. д.)? Возможно, ваш текст MTEXT? Не могли бы вы поделиться файлом dxf? Я думаю, что было бы намного легче помочь вам, если бы я мог изучить его. - person Nik; 10.10.2017
comment
У меня не получилось, инженеры использовали автокад. Поиск MTEXT также оказался пустым. К сожалению, я не могу поделиться файлом, так как это чертежи компании. - person A Tyshka; 11.10.2017
comment
Мне интересно, мог ли автокад преобразовать текст в строки. В этом файле тысячи и тысячи строк текста, который содержит 24 круга, прямоугольник со скругленными углами и 12 меток. Просто не должно быть так много строк. - person A Tyshka; 11.10.2017
comment
Он действительно преобразовал текст в кривые - person A Tyshka; 11.10.2017
comment
Хорошо, вам не нужно делиться своим файлом, теперь все имеет смысл! Вероятно, у вас есть очень причудливый текст, созданный с помощью сущностей. Можете ли вы попросить своих инженеров использовать текстовый объект с каким-нибудь причудливым шрифтом, а не рисовать его сущностями? Если они смогут сделать это для вас, это решит все ваши проблемы. Если нет, вам будет трудно выполнить свою задачу независимо от типа файла. При этом это все еще вполне выполнимо, но лучше сначала поговорить с инженерами, чтобы узнать, могут ли они отредактировать шаблон для вас. - person Nik; 12.10.2017
comment
Они используют текстовый объект в программе Solidworks. Когда это программное обеспечение экспортирует в dxf по какой-то причине, оно преобразует весь текст в кривые. Они понятия не имеют, как предотвратить это. :( - person A Tyshka; 12.10.2017
comment
Я также должен упомянуть, что если они могут сохранить его через AutoCAD, это тоже сработает. - person Nik; 12.10.2017
comment
Обходной путь, который вы можете попробовать, если у вас есть доступ к AutoCad: после экспорта файла DXF из SolidWorks откройте его в AutoCad, удалите текст-заполнитель и замените его текстовым или многотекстовым объектом, а затем сохраните его как файл DXF. Теперь мне интересно, может ли ваш гравер/лазер обрабатывать текст? Я предполагаю, что текстовые буквы-заполнители из SolidWorks, вероятно, имеют толщину, а простой текст - нет. Я знаю, что многие устройства могут справиться с этим, но кое-что стоит изучить, прежде чем идти по этому пути намного дальше. - person Nik; 12.10.2017
comment
Ручное вычисление значений позиции для 48 меток и использование textedit было бы огромной проблемой. Я не знаю, как гравер обрабатывает текст, но в худшем случае преобразование будет быстрым. На данный момент SVG кажется лучшим сценарием, поскольку я знаю, что могу работать с файлом. Однако я также не знаю, как гравер будет обрабатывать текст SVG. - person A Tyshka; 12.10.2017
comment
Я ценю всю вашу помощь с DXF. Из вашей статьи кажется, что инженерам нужно было делать текст отдельно? Я не думаю, что это сработает. - person A Tyshka; 12.10.2017
comment
Пожалуйста. Я добавил дополнительную информацию к ответу, который может оказаться полезным. - person Nik; 12.10.2017