一、环境准备与依赖安装
安装 Python 与虚拟环境
在开始进行 CAD 自动化前,确保你有一个干净的 Python 环境,以便独立管理依赖版本和项目设置,从而避免冲突。
推荐使用虚拟环境来隔离项目,避免全局依赖干扰。通过以下步骤创建并激活虚拟环境,提升可移植性与稳定性。
python -m venv venv_cad
# Windows
venv_cad\Scripts\activate
# macOS/Linux
source venv_cad/bin/activate
激活成功后,你的命令提示符通常会看到 venv_cad 的标识,表示环境就绪,可继续安装依赖。
安装 pyautocad 与 AutoCAD 连接配置
在已激活的虚拟环境中,安装 pyautocad 库,它封装了对 AutoCAD 的 Python API,
并确保本机已安装并正在运行 AutoCAD,且能够通过 COM 接口进行访问。这一步是实现 CAD 自动化脚本的关键。
pip install pyautocad
from pyautocad import Autocad, APoint# 尝试创建一个 AutoCAD 会话
acad = Autocad(create_if_not_exists=True)
print("AutoCAD 会话是否存活:", acad.is_alive())
如果连接失败,请检查 Windows 的防火墙、AutoCAD 的启动模式,以及 COM 安全设置,确保脚本能通过 COM 接口访问 CAD。
验证连接是否成功
建立连接后,第一步是通过简单的自检确认会话状态,以确保后续绘图操作可以顺利执行。

通过输出会话状态,可以快速判断 AutoCAD 连通性,从而避免后续调试时间消耗在连接问题上。
print("Alive:", acad.is_alive())
若输出为 True,表示连接正常;若为 False,请重新初始化会话并检查 AutoCAD 的 COM 接口设置。
二、pyautocad 基本用法速览
创建会话并访问对象
进入 CAD 自动化的第一步,是创建 Autocad 对象,它作为与 AutoCAD 的桥梁,把工作区域指向模型空间,便于后续绘制。
使用 acad.model 可以直接向 AutoCAD 的模型空间添加实体,极大简化绘图流程。下面给出一个简要示例:
from pyautocad import Autocad, APoint
acad = Autocad()
# 访问模型空间
model_space = acad.model
# 在坐标原点绘制一条水平线
line = model_space.AddLine(APoint(0,0), APoint(100,0))
通过这种方式,你可以迅速把 CAD 绘制需求转化为 Python 代码,中间的 坐标点对象 使用 APoint 封装,确保坐标计算的准确性。
常用绘图对象的创建方法
pyautocad 将 AutoCAD 的绘图对象通过 Python 方法暴露,例如直线、圆、圆弧、以及多段线等,核心在于把正确的坐标点传入对应的 API。
常用方法包括 AddLine、AddCircle、AddPolyline 等,利用这些方法即可快速搭建复杂轮廓。下面给出一个组合示例,演示直线、圆和多段线的叠加绘制:
from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)# 直线
p1 = APoint(0, 0)
p2 = APoint(120, 0)
acad.model.AddLine(p1, p2)# 圆
center = APoint(60, 60)
radius = 30
acad.model.AddCircle(center, radius)# 四点构成的矩形轮廓(闭合多段线)
poly = acad.model.AddPolyline([APoint(0,0), APoint(100,0), APoint(100,50), APoint(0,50), APoint(0,0)])三、实战案例:绘制直线、圆、矩形等
绘制直线与矩形轮廓
在实际布置中,先以直线构建外框,再通过多段线或圆弧完善轮廓。使用 AddLine 可逐段连接,达到灵活控制的效果。
将直线网格转化为封闭矩形,通常需要在最后一个顶点回到起点,确保 轮廓闭合,便于后续填充与裁切操作。
from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)# 构建一个简单矩形外框
p1 = APoint(0,0); p2 = APoint(200,0)
p3 = APoint(200,150); p4 = APoint(0,150)
rect = acad.model.AddPolyline([p1, p2, p3, p4, p1])绘制圆与圆弧
圆和圆弧在布局中常用于定位、分割与装配位。通过 AddCircle 可以直接创建圆,使用圆弧则可在圆内画出特定角度段。
结合坐标和角度,可以实现高精度的圆弧分段,为后续填充、裁剪或标注提供准确轮廓。
from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)# 圆弧示例:使用圆心、半径及起止角度定义
center = APoint(300, 100)
r = 50
arc_start = 0
arc_end = 180
arc = acad.model.AddArc(center, r, arc_start, arc_end)四、批量化操作与数据驱动
从 CSV/Excel 读取坐标与参数
当需要将大量点位与参数应用到 CAD 中时,数据驱动绘图是提升效率的关键。通过读取 CSV/Excel,将坐标和类型参数映射到对应图形。
结合 pandas,你可以在循环中动态创建对象,并在完成后将结果保存到 AutoCAD 文档中,形成可追溯的流程。
import pandas as pd
from pyautocad import Autocad, APointacad = Autocad(create_if_not_exists=True)
df = pd.read_csv('points.csv') # columns: x, y, z, typefor _, row in df.iterrows():pt = APoint(float(row['x']), float(row['y']), float(row.get('z', 0)))if row.get('type') == 'line':acad.model.AddLine(pt, APoint(pt.x + float(row.get('length', 50)), pt.y))elif row.get('type') == 'circle':acad.model.AddCircle(pt, float(row.get('radius', 25)))
批量生成 CAD 图形并导出
绘制完成后,可以将结果导出为 DWG/DXF 等格式,方便分享与归档。以下示例演示了简单的批量生成与保存流程。
通过 批量循环,可实现快速的排布与重复图形生成,从而显著提升工作效率。
# 简单批量生成五个圆并命名导出
for i in range(5):center = APoint(100 * i, 100)acad.model.AddCircle(center, 40)acad.doc.SaveAs(r'C:\\Temp\\circle_{}.dwg'.format(i))五、错误处理与性能优化
常见错误及排查
在 AutoCAD 与 Python 的交互中,常见问题包括 连接中断、权限设置、以及坐标计算错误等。
为了快速定位问题,请在关键步骤输出日志,并在异常处提供清晰的 错误信息,便于快速定位原因并回到正确的工作流。
try:acad = Autocad(create_if_not_exists=True)print("Connected:", acad.is_alive())
except Exception as e:print("CAD connection error:", e)绘图坐标系与单位管理
坐标系与单位直接影响绘图的定位与尺寸,请确保在整个工作流中统一单位并妥善处理坐标系转换,尤其在跨文档协作时更为关键。
在开始自动化之前,先确认 CAD 文档的单位设置,并在脚本中实现必要的坐标转换逻辑,以确保结果的一致性与可复用性。


