| name | cad-dwg-template-release |
| description | 从企业 DWG 母版直出可下发图纸:ODA + ezdxf 打开 DWG,按占位符替换图号/规格等,另存 DWG。 在钢轮、总图、标题栏批量出图、或用户说「要像 CAD」「用模板」时使用。不依赖 matplotlib 重画几何。 |
CAD 总图直出(DWG 模板驱动)
原则
- 可制造、可归档的图纸应以 贵司已有 DWG 母版 为唯一真源;程序只做 打开 → 替换字段 → 另存,不在 Python 里「手绘」断面与标注。
- 本仓库中
wheel_formal_sheet / matplotlib 出图 仅作 版式预览或应急示意,不得冒充正式下发图。
环境
- Python:
ezdxf
- 读写 DWG:必须安装 ODA File Converter(本机路径见
安装ODA_File_Converter说明.md)
- 模板目录默认:
config_paths.DWG_TEMPLATE_DIR(项目下 DWG/)
模板占位符(在 AutoCAD 里预先写入)
设计一种与 JSON 键名一致的占位符,出图时整段替换:
| 推荐写法 | 示例 |
|---|
| 双花括号 | {{图号}} {{规格型号}} {{产品名称}} |
| 双下划线 | __图号__ __规格型号__ |
要求:占位符字符串在图里必须 唯一、完整,与 dwg_template_fill.py 使用的键名一致。
脚本
release_user_dwg.py(推荐):读取项目根目录 user_dwg.json(可复制 user_dwg.example.json),其中 template 为 DWG/ 文件夹下的母版文件名;按 params 指向的 JSON 出图到 output/。
python release_user_dwg.py
dwg_template_fill.py:底层命令,替换 模型空间、图纸空间、块定义 内的 TEXT/MTEXT、块内 ATTDEF、INSERT 属性。
python dwg_template_fill.py --template "DWG\总图母版.dwg" --params wheel_CL10AT03.json --out output\CL10AT03_下发.dwg
build_parametric_template.py:若尚无带占位符的母版,可生成示例 DWG/钢轮总图模板_参数占位.dxf,再在 CAD 中另存为 DWG 或在此基础上改。
JSON 参数
与 wheel_*.json 相同字段即可参与替换,例如:图号、型号、规格型号、产品名称、单位名称、技术要求(若模板中有对应占位符)。
块与属性
INSERT.attribs:标题栏插入块的属性值会替换。
- 块定义内的 TEXT/MTEXT/ATTDEF:已遍历
doc.blocks,块内文字与属性定义中的占位符也会替换(与布局中的图元一致)。
与「程序画图」的分工
| 方式 | 用途 |
|---|
| 模板替换 DWG | 正式下发、与现有图库一致 |
| ezdxf 生成简单 DXF | 草图、孔位示意、无母版时 |
| matplotlib PNG | 预览、汇报幻灯片 |
故障排查
ODA File Converter 未安装:先装 ODA,再运行。
- 替换无效:用 CAD 打开模板,确认文字为 TEXT/MTEXT 且占位符与 JSON 键名完全一致(含全角/半角)。
- 文字乱码:统一模板与 JSON 为 UTF-8;CAD 字体需支持中文。