Нахождение размера файла DXF с использованием EZDXF Python - PullRequest
0 голосов
/ 28 ноября 2018

Я использую пакет 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 .

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

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

, заголовки EXTMAX и EXTMIN не поддерживаются илиобновлено: ezdxf .

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

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

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

  • Геометрия встроенных данных ACIS, таких как3DSOLID, КУЗОВ, РЕГИОН или ПОВЕРХНОСТЬ недоступны для ezdxf

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

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

0 голосов
/ 28 ноября 2018

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

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

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


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

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

...