DXF Viewer
Если вам просто нужно просмотреть свой DXF, нажмите здесь.
Этот пакет предоставляет компонент DXF 2D Viewer, записанный в JavaScript. Он отображает чертежи с использованием WebGL (через библиотеку Three.js). Он был тщательно изготовлен с учетом производительности, предназначенный для рисования огромных реальных файлов без проблем с производительностью.
Пример использования доступен здесь: https://github.com/vagran/dxf-viewer-example-src
Развернутая демонстрация: https://vagran.github.io/dxf-viewer-example/
Установить
Функции
- Извлечение, анализ и подготовка к рендерингу разделяется таким образом, что его можно легко загрузить в веб-работник, используя предоставленных помощников. Таким образом, самая тяжелая обработка не влияет на отзывчивость пользовательского интерфейса. Пример выше демонстрирует эту технику.
- Геометрия партия - минимальное количество партий рендеринга создается при обработке файлов, что минимизирует общее количество вызовов.
- Рендеринг Instanced - Функции, которые выполняются несколько раз с различными преобразованием (например, экземпляры блоков DXF) отображаются одним вызовом с использованием функции рендеринга WebGL.
- Поддержка нескольких шрифтов. Список шрифтов может быть указан для рендеринга текста. Необработанные файлы TTF поддерживаются. Шрифты ленивы загружены, как только встречается персонаж, который глиф еще не доступен через уже загруженные шрифты, следующий шрифт получен и проверяется на наличие необходимого глифа.
- Слои - слои принимаются во внимание при создании партий рендеринга, так что они могут быть легко скрыты/показаны.
Неполные функции
Есть еще много неполных функций. Я постараюсь реализовать некоторые из них, когда у меня будет время. Наиболее важной причиной отсутствия реализации является отсутствие соответствующих образцов файлов.
- Поток анализа для входного файла. В настоящее время, в основном полагаясь на пакет DXF-Parser, который не является анализатором потока и, таким образом, буферизирует весь файл перед анализом. Это предотвращает поддержку Big DXF -файла (выше гигабайта) из -за ограничения размера строки в двигателе JS (также сделав ненужные отходы памяти для буфера).
- Текстовый стиль. В настоящее время текстовый рендеринг использует только указанные шрифты в указанном порядке. Стиль DXF и атрибуты шрифта игнорируются. Текстовые глифы всегда оказываются заполненными.
- Усовершенствованная поддержка форматирования для MTEXT (шрифты, окраска, укладка).
- Линейные узоры - все линии пока не в постоянном стиле. Я собираюсь использовать 1-D текстуру, сгенерированную на стадии подготовки, координаты текстуры (который должен учитывать флаг непрерывности шаблона в атрибутах вершин DXF) и выделенный шейдер для реализации этой функции.
- Линейные узоры с формами (например, с кругами).
- Широкие линии. В настоящее время все линии отображаются как тонкие линии. Физическая ширина не реализована.
- Линии переменной ширины (т.е. с указанной шириной начала и конца).
- Сглаженная полилиния (вершины с добавлением кривой/сплайна).
- Некоторые функции в реализации вылупления: внешний стиль вылупления, твердый/градиентный заполнение, поддержка mpolygon, двойные линии, границы, определяемые внешними сущностями.
- Блокировать приспособление в сетке. Атрибуты сетки сейчас игнорируются.
- Особенности и стили, специфичные для размеров (различные предварительно определенные блоки стрелки, настройка позиционирования текста, ограничения и допуски). Размеры, кроме линейных.
- Лидеры
- Не UTF-8 Файл Кодирование Поддержка. В настоящее время такие файлы отображаются неправильно.
$DWGCODEPAGE
параметр игнорируется. - Полная поддержка OCS. В настоящее время предполагается, что направление экструзии сущности является либо +z, либо -z (которое обычно используется для зеркалирования функций в САПР). Произвольные направления не обрабатываются должным образом.
- Бумажное пространство, макеты (листы), Viewports.
- Многие менее часто используемые функции DXF.

Внося
Пожалуйста, обратитесь к руководящим принципам взноса для получения подробной информации о том, как сделать запросы на привлечение (PRS). Проект также требует различных примеров файлов для тестирования. Если вы столкнетесь с какими -либо проблемами с рендерингом DXF, было бы очень признателен, если бы вы могли дать пример файла, который демонстрирует проблему, подключив его к созданной проблеме. Создание минимальных примеров в программном обеспечении CAD также может быть очень полезным. Кроме того, создание примеров в различных проприетарных программных обеспечениях САПР, к которому у меня нет доступа, было бы очень ценным. Поскольку уровень входа для начала кодирования в этом проекте довольно высок, часто более полезно получить подробный отчет о проблеме с образцами файлов, а не с запросом на привлечение.
Лицензия
Этот проект лицензирован в соответствии с условиями общественной лицензии Mozilla 2.0.
Пожертвования
Хотите сказать благодаря сопровождающему проекту? Вот ссылка: