Комментарии 17
Спасибо, большое дело затеяли !
Вы теперь, полагаю, и генерировать нормально dxf сможете :)
Ох DXF это прям боль. Когда-то на Java с ним страдал ровно по тем же причинам - куча неочевидных фишек, огромные сложные файлы реальных чертежей, разнообразие вариантов нарисовать одно и то же.
При этом если делаешь какой-то веб-CAD, то ты обязан читать или DWG (что вообще нереально) или хотя бы DXF.
Пунктирные осевые линии
Подозреваю, что вы о штриховых линиях (которые чёрточками). Ещё бывают штрихпунктирные линии -- это как правило линии симметрии объектов. Пунктирные (от слова "пункт" -- точка) -- это линии из точек, а не штрихов. Используются на чертежах крайне редко.
Угадал?
На заметку: использовать что штриховые, что штрихпунктирные, что пунктирные линии сейчас -- вопрос вкусовщины. А лет 40 назад на кульмане пунктиром выделяли только очень специфичные линии. Очень утомительный и кропотливый процесс.
Вот тут вы не правы. В dwg/dxf могут быть сохранены топографические планы, и там что штрихов, что пунктиров достаточно. И это не вкусовщина, а необходимость. Но там, как правило, ещё наваливаются куча кастомных типов линий, и потому в рамках данного обсуждения наверно топопланы упоминать нет смысла.
Да, конечно! Спасибо за поправку, я уже привык мыслить DXF типами. Там они идут по своей логике и не совпадают с ГОСТ: DASHED/HIDDEN ≈ штриховая, CENTER ≈ штрихпунктирная тонкая, PHANTOM ≈ с двумя точками, DOT — точечная, DASHDOT — штрих-точка, плюс DIVIDE, BORDER и т.д.
Спасибо за статью! Не знал о таких проблемах. Для людей в индустрии существуют CADы (платные) и например Dwg TrueView от Autodesk. Он бесплатный и читает и dxf и dwg. Да, он не вэб. Но ни я, ни кто-то из моих знакомых не оказывались в ситуации, когда нужен dwg/dxf именно через web. Просмотрщики есть и для ios/android. Самим форматом dxf последний раз пользовался лет 7 назад, когда снимал «защиту» с чертежа сделанного с использованием Autocad для образовательной организации.
демо сайт похоже в РФ не работает. я не понял - типы линий честные? штриховки честные?
Типы линий читаются из таблицы LTYPE в самом файле. Полилинии режутся на штрихи/точки/пробелы по паттерну из определения линии, с учётом LTSCALE (глобального и поэлементного) и авто-масштаба по габаритам чертежа.
Штриховки: заливка контуров (с island/style по чётно-нечётному правилу) плюс паттерн-штриховка, где линии клиппятся по границам. Если в DXF лежит встроенное определение паттерна — берётся оно, если паттерн задан только именем — фоллбэк на встроенные паттерны.
тексты в типах линий? типы линий на полилиниях с переменной шириной и бульгами?
Текст внутри линий не поддерживается, линия будет нарисована правильным пунктиром, но без текста. С бульгами всё ок — паттерн тесселируется и идёт по дугам так же, как по прямым сегментам. Переменная ширина поддерживается, но штрих-пунктир поверх широкой полилинии пока не накладывается. Если у полилинии появляется ширина, она рисуется сплошной заливкой.
Часто ли это употребимые типы? Мне не попадалось файлов с такими линиями. Если не сложно — прикрепите тестовый файл в ишью в гитхабе, заведу в бэклог.
паттерн не применяется к переменной ширине, или вообще к широкой полилинии? текст в типе линий употребляется постоянно, на постоянной ширине тоже часто. на преременной ширине - не встречал, но автокад так умеет
файлов под рукой у меня нет. тут надо автокад и смотреть как он - там нюансов много

Как я потратил полгода на «покажи чертёж нормально»