Открыть сервис

LibreDWG

LibreDWG — это свободная библиотека с открытым исходным кодом, предназначенная для чтения и записи файлов в формате DWG (Drawing), являющемся основным двоичным форматом для хранения чертежей в системах автоматизированного проектирования (САПР), в первую очередь в программе AutoCAD компании Autodesk. Библиотека распространяется на условиях GNU General Public License (GPL), что позволяет использовать её в свободных проектах, но накладывает ограничения на интеграцию в проприетарное коммерческое программное обеспечение.

История

Предпосылки создания

Формат DWG долгое время был закрытым и проприетарным. Компания Autodesk не публиковала официальную спецификацию формата, что создавало монополию на работу с файлами этого типа. Для обеспечения совместимости и создания альтернативных САПР-решений сообществом разработчиков свободного ПО была предпринята попытка обратной разработки (reverse engineering) формата.

Разработка и релизы

Проект LibreDWG был основан в 2009 году как часть более широкой инициативы по созданию свободной САПР-экосистемы. Основным разработчиком выступил Фелипе Кортес (Felipe Corrêa da Silva Sanches). Первая стабильная версия библиотеки была выпущена в 2011 году. В 2012 году проект был принят в инкубатор Фонда свободного программного обеспечения (FSF), что подтвердило его соответствие стандартам свободного ПО.

Судебные споры и ограничения

В 2012 году компания Autodesk подала жалобу на проект LibreDWG в службу DMCA (Digital Millennium Copyright Act), утверждая, что библиотека нарушает авторские права, поскольку была создана на основе анализа защищённого кода. В ответ Фонд свободного ПО инициировал юридическую защиту проекта. Спор был урегулирован во внесудебном порядке: Autodesk отозвала жалобу, а разработчики LibreDWG согласились не распространять библиотеку на территории США в версиях, содержащих код, предположительно нарушающий авторские права. Это наложило ограничения на использование библиотеки в некоторых юрисдикциях, хотя формально она остаётся доступной для скачивания.

Функциональные возможности

Поддержка формата DWG

LibreDWG поддерживает чтение и запись файлов DWG различных версий, начиная от AutoCAD R13 (1994 год) и до AutoCAD 2018. Полная поддержка всех версий не гарантируется, так как формат постоянно развивается и содержит множество внутренних структур (сущностей, блоков, слоёв, стилей и т.д.). Библиотека способна корректно обрабатывать основные геометрические примитивы (линии, дуги, окружности, полилинии, текст, размеры), но поддержка сложных объектов (например, динамических блоков, 3D-тел, ассоциативных массивов) может быть неполной или отсутствовать.

Экспорт и импорт

Библиотека предоставляет API для:

  • Чтения (импорта): извлечение геометрических данных, атрибутов, метаданных (автор, дата создания, единицы измерения) из файлов DWG.
  • Записи (экспорта): создание новых файлов DWG или модификация существующих с сохранением структуры.

Ограничения

  • Неполная совместимость: Из-за сложности и закрытости формата DWG библиотека не гарантирует 100% точность воспроизведения чертежа. Некоторые элементы могут быть потеряны или отображены некорректно.
  • Зависимость от лицензии GPL: Библиотека распространяется под лицензией GPL, что делает её непригодной для использования в проприетарных коммерческих программах без открытия исходного кода всего продукта. Это ограничивает её применение в корпоративной среде.
  • Ограничения по юрисдикции: Как упоминалось выше, существуют ограничения на распространение библиотеки на территории США в определённых версиях.

Архитектура и технические детали

Структура кода

LibreDWG написана на языке C. Код организован в виде набора модулей, каждый из которых отвечает за обработку определённых типов данных или операций:

  • dwg.c / dwg.h: Основные структуры данных для представления чертежа (объекты, слои, блоки).
  • decode.c / encode.c: Функции для чтения (декодирования) и записи (кодирования) двоичного потока DWG.
  • dwg_api.c: Высокоуровневый API для взаимодействия с библиотекой.
  • dxf.c: Модуль для экспорта/импорта в формат DXF (Drawing Exchange Format), который является текстовым аналогом DWG.

Поддерживаемые платформы

Библиотека кроссплатформенна и может быть скомпилирована под операционные системы Linux, macOS, Windows, а также под различные Unix-подобные системы. Для сборки используются стандартные инструменты (GCC, CMake).

Применение

Свободные САПР

LibreDWG является ключевым компонентом для нескольких свободных САПР-систем:

  • LibreCAD: 2D-САПР с открытым исходным кодом, использующая LibreDWG для импорта и экспорта файлов DWG.
  • QCAD: Ещё одна популярная 2D-САПР, которая также может использовать LibreDWG для работы с форматом DWG.
  • FreeCAD: 3D-параметрическая САПР, в которой LibreDWG используется для импорта 2D-чертежей из DWG-файлов.

Конвертация и автоматизация

Библиотека может применяться для создания скриптов и утилит, автоматизирующих пакетную обработку DWG-файлов: конвертацию в DXF, SVG, PDF, извлечение метаданных, проверку геометрии.

Образовательные цели

Исходный код LibreDWG служит учебным пособием для изучения структуры формата DWG и методов обратной разработки бинарных форматов.

Сравнение с альтернативами

ХарактеристикаLibreDWGODA (Open Design Alliance)Autodesk RealDWG
ЛицензияGPL (свободная)Проприетарная (платная)Проприетарная (только для подписчиков Autodesk)
СтоимостьБесплатноПлатная (от $5000 в год)Включена в подписку AutoCAD
Полнота поддержки DWGЧастичная (ограничения по версиям и объектам)Высокая (почти полная)Полная (родной формат)
Интеграция в коммерческие продуктыЗатруднена из-за GPLРазрешена (при покупке лицензии)Разрешена (только для продуктов Autodesk)

Критика и ограничения

Основной критикой LibreDWG является её неполная совместимость с последними версиями формата DWG. Разработчики коммерческих САПР, нуждающиеся в точном воспроизведении чертежей, часто предпочитают проприетарные решения ODA или Autodesk. Также отмечается, что лицензия GPL ограничивает использование библиотеки в корпоративной среде, где предпочитают закрытые лицензии. Некоторые пользователи сообщают о проблемах с производительностью при обработке больших и сложных файлов (свыше 100 МБ).

Интересные факты

  • Название «LibreDWG» происходит от испанского слова «libre» (свободный) и аббревиатуры DWG.
  • Проект стал одним из первых успешных примеров обратной разработки сложного проприетарного формата в области САПР.
  • В 2013 году проект получил грант от Фонда свободного ПО в размере 10 000 долларов на дальнейшее развитие.

Источники

  • Официальный сайт проекта LibreDWG (gnu.org/software/libredwg)
  • Документация GNU LibreDWG
  • Статья «LibreDWG: A Free Library for DWG Files» в журнале Linux Journal (2012)
  • Репозиторий исходного кода на Savannah (savannah.gnu.org/projects/libredwg)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →