我正在使用 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 的详细信息的链接。
系统变量EXTMIN&EXTMAX存储最小矩形框架的左下角和右上角,该框架包含绘图中的所有几何图形或在您的情况下,DXF。
这些系统变量的值是相对于绘图的世界坐标系 (WCS) 表示的 3D 点。点的坐标值将以 DXF 的单位表示(例如由INSUNITS系统变量给出),或者可以是无单位的。
您可以使用EXTMAX&EXTMIN系统变量分别给出的点的 X 和 Y 坐标值之间的差异来获得 DXF 的尺寸(以及长宽比),从而使您能够创建缩放到相同长宽比的图像。
LIMMIN&LIMMAX还存储与矩形区域左下角和右上角对应的 3D WCS 点,但是,该区域只是用户在启用限制检查后创建新对象时对可用绘图区域的限制(LIMCHECK = 1)。
虽然LIMMIN&LIMMAX系统变量理论上提供了围绕 DXF 中所有几何体的边界框尺寸的上限,但这是一种不可靠的度量,因为可以在禁用限制检查的情况下创建对象,并且在限制检查时不会删除此类对象已启用。
作为Lee Mac的答案的补充,如果您通过ezdxf创建或修改 DXF 绘图:
头变量 EXTMAX 和 EXTMIN 不由ezdxf维护或更新。
DXF 实体、块或模型空间的范围必须由应用程序计算,因此应用程序必须渲染实体,这对于 CAD 应用程序来说不是问题,但ezdxf不是 CAD 应用程序,也没有渲染引擎,并且DXF 实体的扩展通常不是由 DXF 参考定义的,有问题的实体是:
文本和多行文本取决于字体渲染和字体可用性,这因应用程序和计算机而异。
通过拟合点进行样条绘制,AutoCAD 从拟合点计算控制点的算法尚不清楚,它不是互联网上经常记录的“全局插值”
嵌入 ACIS 数据的几何形状(例如 3DSOLID、BODY、REGION 或 SURFACE)不适用于 ezdxf
ezdxf的范围计算通常是错误的或只是猜测,因此未实现,也许有一天我会添加一个用于近似范围的附加组件,但这不太可能,因为对于像 INSERT 这样的实体(带有嵌套)来说这是很多工作INSERT)、HATCH(复杂边界路径和岛)或 MTEXT(复杂字体渲染),如果您不能依赖它,则只有很小的好处。我不愿意为此牺牲我的空闲时间。
仅供参考,因为您使用的是 Python2:Python 2对ezdxf的支持将在下一版本 v0.9.0 中删除
2021 年 1 月 14 日更新:
ezdxf的下一个版本 v0.16有一个bbox模块来计算 DXF 实体和整个布局的范围。上述限制仍然有效,因此某些实体的结果并非 100% 准确。所有计算均在 Python 中完成。因此,在处理大量对象时,不要期望快速得到结果。