在工程制图、建筑、机械设计等领域,DXF(Drawing Exchange Format) 是一种广泛使用的矢量图形文件格式,由 Autodesk 开发,用于在不同 CAD 软件之间交换数据。如果你需要在 Python 中自动化处理 CAD 图纸——比如提取几何信息、批量修改图层、生成简单图纸或与 BIM 系统集成——那么 ezdxf 就是你不可或缺的利器。
ezdxf 是一个功能强大且易于上手的开源 Python 库,支持读取、创建和修改 DXF 文件(兼容 R12 到 R2018 等多个版本)。本文将带你从安装到实战,全面掌握 ezdxf 的核心用法。
一、安装 ezdxf
ezdxf 可通过 pip 直接安装:
pip install ezdxf
💡 建议同时安装
matplotlib或opencv-python,便于可视化调试(非必需)。
二、基础概念:DXF 文件结构简述
在使用 ezdxf 前,了解 DXF 的基本组成有助于理解 API 设计:
- Entities(实体):如 LINE(直线)、CIRCLE(圆)、TEXT(文字)、POLYLINE(多段线)等。
- Layers(图层):用于组织和控制实体的显示/打印属性。
- Blocks(块):可重复使用的图形组合(类似'符号')。
- Modelspace / Paperspace:模型空间(实际设计区域)和布局空间(打印排版区域)。
ezdxf 将这些概念封装为直观的 Python 对象。
三、创建一个新的 DXF 文件
下面是一个创建包含直线和圆的简单 DXF 文件的示例:
import ezdxf
# 创建一个新的 DXF 文档(默认 R2010 格式)
doc = ezdxf.new(dxfversion='R2010')
# 获取模型空间
msp = doc.modelspace()
# 添加一条直线:起点 (0, 0),终点 (10, 10)
msp.add_line((0, 0), (10, 10))
# 添加一个圆:圆心 (5, 5),半径 3
msp.add_circle(center=(5, 5), radius=3)
# 保存文件
doc.saveas("example.dxf")
print("DXF 文件已生成:example.dxf")
运行后,你将得到一个可在 AutoCAD、DraftSight、FreeCAD 等软件中打开的 .dxf 文件。
四、读取现有 DXF 文件并遍历实体
假设你有一个现成的 drawing.dxf,想提取其中所有直线坐标:


