Codex 辅助 AutoCAD 绘图与三维转二维三视图经验文档
本文记录一次从零跑通的实践流程:让 Codex 在 Windows 本机协助 AutoCAD 绘制二维图,并进一步读取 STEP 三维模型,通过 FreeCAD/OpenCascade 生成二维三视图,最终画入当前 DWG。
适用场景:
- 用自然语言描述图纸需求,由 Codex 生成脚本和绘图指令。
- 在 AutoCAD 当前打开的 DWG 中绘制二维图元。
- 将
.step/.stp/.iges/.igs三维模型转换为主视图、俯视图、左视图等二维线稿。 - 为后续批量制图、参数化出图、自动标注打基础。
1. 本次跑通的总体架构
最终采用的是“文件桥接”方案:
用户提出绘图需求
-> Codex 编写/生成 JSON 绘图指令
-> cad_bridge.py 监听 bridge/commands
-> cad_bridge.py 通过 AutoCAD COM 执行到当前 DWG
-> 结果写入 bridge/results
三维转二维时,多加一层 FreeCAD:
STEP 三维模型
-> FreeCADCmd.exe 读取模型
-> TechDraw.project 生成二维投影边
-> step_to_three_views.py 转成桥接 JSON
-> cad_bridge.py 画进 AutoCAD 当前 DWG
本次已验证成功:
- AutoCAD COM 连接成功:
AutoCAD.Application.23.1 - 当前图纸:
Drawing1.dwg - Python 虚拟环境可用
- FreeCAD 1.1.1 可读取
GML.stp - 已成功生成并绘制
GML.stp的三视图,执行动作数:548
2. 需要的软件和组件
必需软件
-
AutoCAD
- 本次使用 AutoCAD 2020。
- 需要支持 COM/ActiveX 自动化。
- 绘图前应打开目标 DWG。
-
Python
- 本次虚拟环境中为 Python
3.13.1。 - 推荐创建项目级虚拟环境,不污染系统 Python。
- 本次虚拟环境中为 Python
-
Python 包
pywin32:连接 AutoCAD COM。ezdxf:备用 DXF 读写能力。numpy:后续几何计算备用。
-
FreeCAD
- 本次使用 FreeCAD
1.1.1。 - 图形程序路径示例:
D:\Program Files\FreeCAD 1.1\bin\freecad.exe - 自动处理推荐使用命令行程序:
D:\Program Files\FreeCAD 1.1\bin\FreeCADCmd.exe
- 本次使用 FreeCAD
-
Codex Desktop
- 负责读写工作目录、生成脚本、生成桥接指令。
- 不需要额外 AutoCAD 插件即可跑通第一版。
可选软件
-
Ansys SpaceClaim / Discovery
- 用于把
.scdoc转成.step或.iges。 .scdoc是 SpaceClaim/Discovery 原生格式,不建议直接解析。
- 用于把
-
AutoCAD 字体/文字样式
- 如需中文标注稳定显示,建议提前配置中文字体样式。
- 第一版建议使用 ASCII 英文标注,减少编码问题。
3. 推荐项目目录
本次工作目录:
C:\Users\XIE\Desktop\AI_CAD
推荐结构:
AI_CAD
├─ .venv
├─ bridge
│ ├─ commands # 待执行 JSON 指令
│ ├─ processed # 已成功执行的指令
│ ├─ failed # 执行失败的指令
│ ├─ results # 执行结果 JSON
│ └─ examples # 示例指令
├─ docs
├─ scripts
│ ├─ cad_bridge.py
│ ├─ enqueue_cad_command.py
│ ├─ test_autocad_com.py
│ ├─ draw_rectangle_com.py
│ └─ step_to_three_views.py
├─ Drawing1.dwg
└─ GML.stp
4. 环境安装与检查流程
4.1 创建 Python 虚拟环境
在 PowerShell 中执行:
cd C:\Users\XIE\Desktop\AI_CAD
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install pywin32 ezdxf numpy
如果 py --version 显示:
No installed Python found!
但 .venv\Scripts\python.exe --version 正常,则后续直接使用:
.\.venv\Scripts\python.exe
验证依赖:
python -c "import win32com.client, ezdxf, numpy; print('CAD Python environment OK')"
4.2 检查 AutoCAD COM 是否可连接
确保 AutoCAD 已打开,并打开目标 DWG。
运行:
python .\scripts\test_autocad_com.py
成功输出类似:
CONNECTED=AutoCAD.Application.23.1
VERSION=23.1s (LMS Tech)
DOCUMENT=Drawing1.dwg
FULLNAME=C:\Users\XIE\Desktop\AI_CAD\Drawing1.dwg
4.3 启动 CAD 桥接程序
在能连接 AutoCAD COM 的 PowerShell 中执行:
cd C:\Users\XIE\Desktop\AI_CAD
.\.venv\Scripts\Activate.ps1
python .\scripts\cad_bridge.py --verbose
保持这个窗口不要关闭。桥接程序会持续监听:
C:\Users\XIE\Desktop\AI_CAD\bridge\commands
4.4 测试桥接绘图
另开一个 PowerShell,投递示例指令:
cd C:\Users\XIE\Desktop\AI_CAD
.\.venv\Scripts\Activate.ps1
python .\scripts\enqueue_cad_command.py --file .\bridge\examples\rectangle.json
桥接程序会自动绘制示例矩形,并把执行结果写入:
bridge\results
5. 桥接程序的工作机制
核心文件:
scripts\cad_bridge.py
监听目录:
bridge\commands
每当出现 .json 指令文件,桥接程序会:
- 读取 JSON。
- 连接当前 AutoCAD COM。
- 检查当前 DWG 是否匹配
target_document。 - 执行
actions中的绘图动作。 - 写入结果到
bridge\results。 - 成功则移动到
bridge\processed,失败则移动到bridge\failed。
支持的动作类型:
rectanglelinepolylinecircletextzoom_extentssave
示例指令:
{
"target_document": "Drawing1.dwg",
"zoom_extents": true,
"save": false,
"actions": [
{
"type": "rectangle",
"x": 0,
"y": 0,
"width": 1000,
"height": 600,
"layer": "AI_RECTANGLE",
"color": 1
},
{
"type": "text",
"text": "AI CAD BRIDGE",
"insert": [80, 680, 0],
"height": 80,
"layer": "AI_TEXT",
"color": 3
}
]
}
6. 为什么采用桥接方案
一开始尝试让 Codex 后台进程直接连接 AutoCAD COM,但遇到:
MK_E_UNAVAILABLE
原因是 Codex 的后台执行环境和用户手动打开的 AutoCAD/PowerShell 可能处在不同权限、桌面会话或受控沙盒中。用户自己打开的 PowerShell 可以连接 AutoCAD,但 Codex 后台未必能直接看到同一个 COM 活动对象。
桥接方案解决了这个问题:
用户启动 cad_bridge.py
-> 它和 AutoCAD 在同一用户会话中
-> 它可以稳定连接 AutoCAD COM
-> Codex 只负责写 JSON 指令文件
这样既稳定,也更安全,因为 Codex 不需要直接控制窗口或模拟鼠标键盘。
7. 二维绘图流程
二维绘图推荐流程:
- 用户描述要画什么。
- Codex 生成 JSON 指令到
bridge\commands。 cad_bridge.py自动执行。- 检查
bridge\results是否ok: true。 - 在 AutoCAD 中查看图形。
例如“画一个圆柱体三视图”时,Codex 可投递:
- 主视图矩形
- 俯视图圆
- 左视图矩形
- 中心线
- 投影辅助线
- 文字标注
执行结果成功时:
ok: true
document: Drawing1.dwg
8. 三维 STEP 转二维三视图流程
8.1 文件准备
推荐三维格式:
.step / .stp
也可考虑:
.iges / .igs
SpaceClaim 原生文件:
.scdoc
不建议直接解析。推荐先在 SpaceClaim/Discovery 中导出为 .step。
8.2 检查 FreeCADCmd
运行:
& "D:\Program Files\FreeCAD 1.1\bin\FreeCADCmd.exe" --version
本次输出:
FreeCAD 1.1.1 Revision: 20260414
8.3 生成三视图
本次三维模型:
C:\Users\XIE\Desktop\AI_CAD\GML.stp
运行:
& "D:\Program Files\FreeCAD 1.1\bin\FreeCADCmd.exe" .\scripts\step_to_three_views.py
脚本执行逻辑:
- 导入
GML.stp。 - 从 FreeCAD 文档中选择最大的有限实体形体,本次选择对象为
GML。 - 调用
TechDraw.project生成投影视图。 - 将投影边离散成二维
polyline。 - 生成三视图 JSON 指令。
- 写入
bridge\commands。 - 桥接程序自动画入 AutoCAD。
本次模型信息:
solids = 109
faces = 768
edges = 1992
本次输出:
Projecting FRONT VIEW...
polylines=235
Projecting TOP VIEW...
polylines=258
Projecting LEFT VIEW...
polylines=49
QUEUED=...\bridge\commands\20260526_154959_gml_three_views.json
ACTIONS=548
桥接结果:
ok = True
document = Drawing1.dwg
executed = 548
8.4 默认视图方向
本次脚本默认:
FRONT VIEW: 观察方向 [0, -1, 0]
TOP VIEW: 观察方向 [0, 0, 1]
LEFT VIEW: 观察方向 [1, 0, 0]
注意:不同建模软件导出的模型坐标方向可能不同。三维转二维前应明确:
- 哪个方向是“正面”?
- 哪个轴代表高度?
- 哪个方向作为俯视图向下看?
- 是否需要左视图、右视图、剖视图?
如果模型方向不对,应先调整脚本里的方向向量,或在 FreeCAD/SpaceClaim 中旋转模型后再导出 STEP。
9. 本次遇到的问题和解决办法
问题 1:py --version 显示没有 Python
现象:
No installed Python found!
解决:
- 用户创建虚拟环境后,
.venv\Scripts\python.exe可用。 - 后续命令统一在激活
.venv后使用python。
问题 2:Codex 后台无法直接连接 AutoCAD COM
现象:
MK_E_UNAVAILABLE
解决:
- 在用户 PowerShell 中启动
cad_bridge.py。 - Codex 不直接连接 COM,只写桥接 JSON。
- 桥接程序由用户会话启动,所以能稳定连接 AutoCAD。
问题 3:AutoCAD COM ProgID 不同
本次有效 ProgID:
AutoCAD.Application.23.1
脚本中也兼容尝试:
AutoCAD.Application.23
AutoCAD.Application
如果换 AutoCAD 版本,需要检查注册表或 COM ProgID。
问题 4:中文文字出现乱码
现象:
- PowerShell/JSON 中中文可能显示乱码。
- AutoCAD 文字也可能受字体样式影响。
解决建议:
- 第一版自动生成图纸时优先用英文/数字标注,如
FRONT VIEW。 - 如需中文,后续应在 AutoCAD 中建立中文文字样式,并在桥接程序中支持指定
TextStyle。
问题 5:FreeCADCmd 输出 system.cfg/user.cfg 警告
现象:
unable to open file '.../system.cfg'
unable to open file '.../user.cfg'
本次不影响 STEP 导入和投影生成,可暂时忽略。
问题 6:把坐标轴、基准面也混进投影
现象:
- 初期探测时 FreeCAD 文档中包含
X_Axis、XY_Plane等无穷大对象。 - 这些对象包围盒为
1e+100,不能参与三视图投影。
解决:
- 只选择有限包围盒且包含实体的 Shape。
- 再按
solids/faces/edges数量选择最大的总成对象。
问题 7:投影线太密
原因:
- 三维模型包含大量边、倒角、光顺边、隐藏边。
解决:
- 第一版只绘制主要可见硬边和少量隐藏边。
step_to_three_views.py默认不包含 smooth/tangent 边。- 如需更完整线稿,可启用
include_smooth思路,但图面会更密,AutoCAD 执行也会更慢。
10. 注意事项
-
先备份 DWG
- 自动绘图前建议保留
.bak或另存副本。 - 桥接指令默认
save: false,确认无误后再手动保存。
- 自动绘图前建议保留
-
确认当前活动图纸
- JSON 中建议写:
"target_document": "Drawing1.dwg" - 防止画到错误 DWG。
- JSON 中建议写:
-
保持桥接窗口开启
cad_bridge.py关闭后,Codex 写入指令不会自动执行。
-
明确单位
- AutoCAD 坐标本身没有单位。
- 建议每次说明:毫米、米、英寸。
-
明确图层规范
- 例如:
GML_VISIBLE 可见轮廓线 GML_HIDDEN 隐藏线 GML_CENTER 中心线 GML_TEXT 文字
- 例如:
-
明确视图方向
- 三维转二维时,必须说明正面、顶部、左/右方向。
- 不说明时只能按脚本默认轴向处理。
-
性能控制
- 大模型不要一开始画全部曲线和隐藏线。
- 先生成“清爽线稿”,确认方向和布局,再增加细节。
-
.scdoc文件- 先用 SpaceClaim/Discovery 导出 STEP。
- 再交给 FreeCAD 生成三视图。
11. 常用提示词模板
11.1 直接绘制二维图纸
请通过 cad_bridge.py 在当前 AutoCAD 图纸中绘制二维图。
图纸内容:
- 类型:机械零件/平面布置/结构示意/三视图
- 单位:mm
- 坐标原点:从 (0,0) 开始,或放到现有图纸右侧
- 尺寸:长 ___,宽 ___,高 ___,孔径 ___
- 图层:
- 可见轮廓线:AI_VISIBLE,颜色 7
- 中心线:AI_CENTER,颜色 3
- 隐藏线:AI_HIDDEN,颜色 8
- 文字:AI_TEXT,颜色 2
- 是否保存 DWG:否,先不保存
请先生成桥接 JSON 并投递,执行后检查 bridge/results 是否 ok:true。
11.2 绘制标准三视图
请绘制零件的三视图,布局采用第三角法/第一角法:
零件说明:
- 类型:圆柱体/支架/板件/轴类/箱体
- 主尺寸:长 ___,宽 ___,高 ___
- 关键特征:孔、槽、倒角、台阶、圆角等
视图要求:
- 主视图放在左上
- 俯视图放在主视图下方
- 左视图放在主视图右侧
- 加中心线和必要投影辅助线
- 文字标注使用英文,避免中文编码问题
- 不自动保存 DWG
11.3 STEP 三维模型转三视图
请把这个 STEP 模型生成三视图并画入当前 AutoCAD:
模型路径:
C:\Users\XIE\Desktop\AI_CAD\____.stp
视图方向:
- 主视图:从 ___ 方向看,例如 [0,-1,0]
- 俯视图:从 ___ 方向看,例如 [0,0,1]
- 左视图:从 ___ 方向看,例如 [1,0,0]
输出要求:
- 只画主要可见硬边,先不要画所有光顺边
- 隐藏线可少量保留
- 三视图放到当前图纸右侧空白区域
- 图层:GML_VISIBLE、GML_HIDDEN、GML_TEXT
- 先不保存 DWG
请运行 FreeCADCmd 生成 bridge/commands JSON,然后检查 bridge/results。
11.4 如果不知道模型方向
我不确定 STEP 模型方向。
请先用 FreeCAD 读取模型,报告包围盒尺寸、长宽高方向、候选主视方向。
先不要画入 AutoCAD。
给出推荐的 FRONT/TOP/LEFT 方向后,再生成三视图。
11.5 生成更规范工程图
请按机械制图习惯优化当前三视图:
- 清理重复线
- 可见轮廓线加粗
- 隐藏线使用单独图层
- 添加中心线
- 添加视图标题
- 添加总尺寸:长、宽、高
- 保持不自动保存,完成后检查结果文件
11.6 修改已有自动生成图纸
请基于当前 AutoCAD 图纸继续修改,不要删除已有图元:
修改内容:
- 将三视图整体向右移动 ___
- 增加/删除 ___
- 增加尺寸标注 ___
- 改图层颜色/线宽 ___
- 完成后 zoom_extents
- 不自动保存 DWG
12. 后续可改进方向
-
支持 AutoCAD 线型
- 隐藏线改为虚线。
- 中心线改为中心线线型。
-
支持中文文字样式
- 在桥接程序中创建/指定中文
TextStyle。 - 解决中文乱码和字体缺失问题。
- 在桥接程序中创建/指定中文
-
支持尺寸标注
- 增加
dim_linear、dim_diameter、dim_radius动作。
- 增加
-
支持比例和图框
- 自动插入 A3/A4 图框。
- 自动布局视口或模型空间图纸。
-
支持更多三维格式
- STEP/IGES 已具备基础。
.scdoc建议外部先转 STEP。
-
支持配置文件
- 把 FreeCAD 路径、默认 STEP 文件、视图方向、图层标准写入配置 JSON。
- 避免每次修改脚本。
-
支持预览图
- 三维转二维后先输出 SVG/PNG 预览,再决定是否写入 AutoCAD。
13. 最小复现流程
如果别人要复现本流程,按下面顺序即可:
cd C:\Users\XIE\Desktop\AI_CAD
.\.venv\Scripts\Activate.ps1
python .\scripts\test_autocad_com.py
python .\scripts\cad_bridge.py --verbose
另开 PowerShell:
cd C:\Users\XIE\Desktop\AI_CAD
.\.venv\Scripts\Activate.ps1
python .\scripts\enqueue_cad_command.py --file .\bridge\examples\rectangle.json
三维转二维:
& "D:\Program Files\FreeCAD 1.1\bin\FreeCADCmd.exe" .\scripts\step_to_three_views.py
检查结果:
bridge\results\*.result.json
看到:
{
"ok": true
}
即说明流程跑通。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)