Нахождение размера файла DXF с использованием EZDXF Python

1

Я использую пакет python ezdxf для извлечения информации из файла dxf. Есть ли способ узнать высоту и ширину файла, чтобы я мог создать изображение того же размера и нарисовать объекты на нем для моей ссылки. Я попытался извлечь информацию из заголовка DXF, используя '

    dwg = ezdxf.readfile("example.dxf")
    print "EXTMAX ", dwg.header['$EXTMAX']
    print "EXTMIN ", dwg.header['$EXTMIN']
    print "LIMMAX ", dwg.header['$LIMMAX']
    print "LIMMIN ", dwg.header['$LIMMIN']

как упоминалось в этой ссылке.

Но я не понимаю, что они означают. Также запрашивал бы некоторые ссылки, содержащие хорошие сведения о Python ezdxf.

Теги:
dxf

2 ответа

2

Системные переменные EXTMIN & EXTMAX сохраняют нижние и верхние правые углы самой маленькой прямоугольной рамки, которая охватывает всю геометрию на чертеже или в вашем случае DXF.

Значения этих системных переменных являются трехмерными точками, выраженными относительно Всемирной системы координат (WCS) чертежа. Координатные значения точек будут выражаться в единицах DXF (например, как указано системной переменной INSUNITS) или могут быть безразличными.

Вы можете использовать разницу между значениями координат X и Y точек, заданных системными переменными EXTMAX & EXTMIN соответственно, чтобы получить размеры (и, следовательно, соотношение сторон) DXF, что позволит вам создать изображение, масштабированное до того же формата,


LIMMIN & LIMMAX также сохраняют точки 3D WCS, соответствующие нижним и верхним правым углам прямоугольной области, однако эта область представляет собой просто ограничение, наложенное пользователем на доступную область рисования, когда новые объекты создаются после того, как была установлена проверка предела (LIMCHECK = 1).

В то время LIMMIN системные переменные LIMMIN & LIMMAX теоретически предоставляют верхнюю границу размеров ограничительной рамки, окружающей всю геометрию в DXF, это ненадежная мера, поскольку объекты могут быть созданы с отключением ограничения, и такие объекты не будут удалены, если проверка ограничения включена.

  • 0
    Спасибо за ответ. Для некоторых файлов DXF я получаю EXTMAX как (-1e + 20, -1e + 20, -1e + 20) и EXTMIN как (1e + 20, 1e + 20, 1e + 20). Есть идеи, почему это может быть?
0

В дополнение к ответу Ли Мака, если вы создаете или изменяете рисунок DXF с помощью ezdxf:

Заголовки заголовков EXTMAX и EXTMIN не поддерживаются или не обновляются с помощью ezdxf.

Экземпляры объектов DXF, блоков или пространства модели должны вычисляться приложением, поэтому приложение должно отображать объекты, что не является проблемой для приложений САПР, но ezdxf не является САПР-приложением и не имеет механизма рендеринга, и расширения DXF-объектов часто не определяются ссылкой DXF, проблемными объектами являются:

  • Текст и MText зависят от рендеринга шрифтов и доступности шрифтов, которые отличаются от приложения к приложению и от компьютера к компьютеру.

  • Сплайны по точкам посадки, алгоритм AutoCAD вычисляет контрольные точки из точек подгонки, которые не знают, это НЕ часто в Интернете документировано "Глобальная интерполяция",

  • Геометрия встроенных данных ACIS, таких как 3DSOLID, BODY, REGION или SURFACE, недоступна для ezdxf

Вычисление экстентов ezdxf часто было бы неправильным или просто угадыванием и, следовательно, не было реализовано, возможно, когда-нибудь добавлю дополнение для аппроксимированных экстентов, но это маловероятно, потому что это большая работа для таких объектов, как INSERT (с вложенными INSERT), HATCH (сложные граничные пути и острова) или MTEXT (сложный отрисовщик шрифтов) с небольшими преимуществами, если вы не можете положиться на него. Я не рад пожертвовать своим свободным временем для этого.

FYI, потому что вы используете Python2: поддержка Python 2 ezdxf будет удалена со следующей версией v0.9.0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню