В данной статье, мы рассмотрим методы чтения и создания DXF файлов. DXF файлы это файлы чертежей, представляет собой открытый формат файлов для обмена графической информацией между приложениями САПР. Для чтения и записи файлов DXF в Python существует модуль ezdxf.
Ezdxf это пакет Python для создания новых файлов DXF и чтения/изменения/записи существующих файлов DXF. Для работы библиотеки не требуется устанавливать CAD системы.
Устанавливаем библиотеку через командную строку:
pip install ezdxf
Документация доступна по ссылке.
Создание нового файла DXF
Создадим новый файл DXF с заданной версией DXF, например, DXF R12. Сохраним файл в папке с проектом с именем new_name.dxf.
Пока что, у нас есть пустой файл DXF его необходимо наполнить содержимым. Файлы DXF состоят из блоков, слоев и объектов.
Макеты это контейнеры для объектов DXF, таких как LINE или CIRCLE. Самое важное это компоновка пространства модели, которое представляет рабочее пространство. Макеты представляют листы для печати, в которых часто содержится кадрирование и блоки плитки чертежа и объекты VIEWPORT. Пространство модели всегда присутствует и не может быть удалено.
Метод doc.modelspace() возвращает пространство модели, метод layers.add создает новый слой в качестве параметров передаем название слоя и его характеристики цвет линий, тип линий, вес линий и др., методом add_line() мы создаем прямую линию, передавая в качестве параметров кортежи с координатами линии, а также словарь с параметрами линии.
Метод add_lwpolyline создает полилинии, принимая в качестве параметра список с координатами.
Создаем простой сплайн методом add_spline, передав в качестве параметра список координат.
Метод add_circle рисует окружность и дуги, принимает в качестве параметров координаты цента и радиус, при рисовании дуги добавляются параметры начала и конца дуги.
В приведенном выше примере создается горизонтальная размерная линия. Размерный стиль по умолчанию «EZDXF» определяется как:
- единица чертежа = 1 м
- высота текста измерения 0,25 (масштаб чертежа = 1:100)
- стрелка "ARCHTICK", размер стрелки dimasz = 0.175
Аргумент angle определяет угол размерной линии по отношению к оси x. Для вертикального размера установите угол 90 градусов,
Чтение файлов DXF
Загрузка файла DXF, обработка возможных исключений, если файл не существует или поврежден.
Пространство модели содержит представление объектов чертежа. Метод doc.modelspace() возвращает пространство модели чертеже. Перебирая в цикле все объекты DXF в пространстве модели, мы считаем все содержимое чертежа. В данном примере с помощью цикла for мы перебираем все объекты чертежа, если объект является линией мы выводим на печать информацию об этой линии(слой на котором она нарисована, координаты начала и конца). Помимо слоя на котором расположена линия можно узнать цвет dxf.color, толщина линий dxf.lineweight, тип линий dxf.linetype и др.
В данной статье, мы рассмотрели основы работы с файлами DXF средствами Python. Комбинируя простые элементы, можно программно создавать сложные чертежи, пакетно обрабатывать чертежи, тем самым автоматизировав свою работу.
С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am