🚀 零成本CAD自动化工具 - 施工图转竣工图自动化处理
开源 | 免费 | 无需AutoCAD | 批量处理
🎯 为什么需要这个工具?
| 手动处理 |
使用本工具 |
效率提升 |
| ⏳ 每张图纸修改需要10-30分钟 |
⚡ 批量处理,每秒1张 |
50-100倍 |
| ❌ 容易漏改、改错 |
✅ 精确匹配,零错误 |
质量提升 |
| 💸 需要AutoCAD许可证 |
💰 完全免费,开源 |
成本降低100% |
| 📁 难以批量处理 |
🚀 支持整个文件夹 |
便利性提升 |
✨ 功能特性
✅ 已实现(v0.1.0)
- ✅ DXF文件解析 - 读取CAD文件,查看图层、图块、文字信息
- ✅ 文字批量替换 - 如"施工图"→“竣工图”,支持正则表达式
- ✅ 图层管理 - 批量冻结/解冻图层,优化显示
- ✅ 图块插入 - 自动插入竣工章等图块(开发中)
- ✅ 批量处理 - 整个文件夹一键处理
🚧 开发中(v0.2.0)
🔮 路线图中(v1.0.0)
🛠️ 技术栈
| 技术 |
用途 |
优势 |
| ezdxf |
DXF文件读写 |
纯Python,无依赖,Mac/Win/Linux全支持 |
| Click |
命令行界面 |
优雅的CLI设计,易用性高 |
| PyYAML |
配置文件 |
灵活配置处理规则 |
| simple_parser |
简化版DXF解析器 |
无numpy依赖,macOS兼容性好 |
📋 系统要求
- Python: 3.8+(推荐3.11+)
- 操作系统: macOS / Linux / Windows
- 内存: 建议4GB+(处理大型图纸)
- 依赖: 见
requirements.txt(全部免费开源)
🚀 快速开始
1️⃣ 安装依赖
# 克隆仓库
git clone https://github.com/1036007003-wq/cad-automation.git
cd cad-automation
# 安装依赖
pip install -r requirements.txt
# 或者使用虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # macOS/Linux
# 或 venv\Scripts\activate # Windows
pip install -r requirements.txt
2️⃣ 基础使用
📊 查看CAD文件信息
# 查看图层、图块、文字等信息
python cli.py parse input.dxf
✏️ 文字批量替换
# 将"施工图"替换为"竣工图"
python cli.py replace-text input.dxf output.dxf \
--old "施工图" \
--new "竣工图"
# 支持多个替换规则(配置文件)
python cli.py replace-text input.dxf output.dxf \
--config config/replace_rules.yaml
🗂️ 图层管理
# 冻结指定图层(不显示)
python cli.py layers input.dxf output.dxf \
--freeze "临时标注" \
--freeze "辅助线"
# 解冻图层
python cli.py layers input.dxf output.dxf \
--thaw "标注层"
🏷️ 批量处理(整个文件夹)
# 批量处理整个文件夹
python cli.py batch-process \
./input_dir \
./output_dir \
--text-replacements "施工图" "竣工图" \
--freeze-layers "临时标注"
📂 项目结构
cad-automation/
├── cli.py # 命令行入口
├── core/ # 核心模块
│ ├── parser.py # DWG/DXF解析器(完整版)
│ ├── simple_parser.py # 简化版DXF解析器(无依赖)
│ ├── block_inserter.py # 图块插入器
│ ├── layer_manager.py # 图层管理器
│ ├── text_replacer.py # 文字替换器
│ └── __init__.py # 模块初始化
├── templates/ # 竣工章模板
├── test_data/ # 测试用DXF文件
├── output/ # 输出目录
├── tests/ # 单元测试
├── docs/ # 文档
│ ├── DEMO.md # 详细演示指南
│ ├── API.md # API文档
│ └── CONTRIBUTING.md # 贡献指南
├── config/ # 配置文件
├── requirements.txt # Python依赖
├── README.md # 本文件
└── .gitignore # Git忽略规则
🎯 使用场景
场景1:施工图转竣工图(核心场景)
# 1. 批量加盖竣工章(需要先准备竣工章图块)
python cli.py batch-process \
./施工图纸 \
./竣工图纸 \
--stamp templates/stamp.dxf
# 2. 批量修改文字
python cli.py batch-process \
./竣工图纸 \
./竣工图纸_final \
--text-replacements "施工图" "竣工图" \
--text-replacements "设计阶段" "竣工阶段"
# 3. 冻结不需要的图层
python cli.py batch-process \
./竣工图纸_final \
./竣工图纸_output \
--freeze-layers "临时标注" "辅助线"
场景2:批量修改图纸编号
# 修改图纸编号(支持正则表达式)
python cli.py replace-text input.dxf output.dxf \
--old "图号-A" \
--new "图号-B" \
--use-regex
场景3:标准化图层管理
# 根据公司标准,批量设置图层属性
python cli.py layers ./input ./output \
--freeze "DEFPOINTS" \
--freeze "VIEWPORTS" \
--thaw "标注层" \
--thaw "图框层"
⚠️ 注意事项
-
DWG格式支持
目前仅支持DXF格式(文本格式)。DWG格式(二进制)需要先用LibreDWG转换:
# 安装LibreDWG(macOS)
brew install libredwg
# 转换DWG为DXF
dwg2dxf input.dwg -o output.dxf
-
备份原始文件
处理前请备份原始文件!虽然工具支持输入输出分离,但安全第一。
-
图层名称准确性
确保图层名称正确,可用 python cli.py parse input.dxf 查看所有图层。
-
macOS代码签名问题
如果遇到numpy代码签名错误,工具会自动使用简化版解析器(无numpy依赖)。
🚧 已知限制
🤝 贡献指南
欢迎贡献!无论是Bug反馈、功能建议,还是代码贡献。
如何贡献
- Fork本仓库
- 创建分支 (
git checkout -b feature/AmazingFeature)
- 提交更改 (
git commit -m 'Add some AmazingFeature')
- 推送到分支 (
git push origin feature/AmazingFeature)
- 开启Pull Request
贡献类型
- 🐛 Bug反馈: 开启Issue,描述问题和复现步骤
- 💡 功能建议: 开启Issue,描述需求和预期效果
- 💻 代码贡献: Fork + PR,确保通过测试
- 📝 文档改进: 完善README、添加教程、翻译等
📄 许可证
MIT License - 可自由使用、修改、商用
简单来说:
- ✅ 可以用于商业项目
- ✅ 可以修改源代码
- ✅ 可以私有部署
- ⚠️ 需保留原作者信息
🌟 支持本项目
如果这个项目对你有帮助,请:
- 给个Star ⭐ - 让更多人看到
- 分享给同事 📢 - 帮助更多人提高效率
- 反馈问题 🐛 - 帮助我们改进
- 捐赠支持 ☕ - 请我喝杯咖啡(见下方)
☕ 捐赠支持
本项目完全免费开源,如果你觉得有用,可以捐赠支持持续开发:
| 捐赠方式 |
链接/信息 |
| GitHub Sponsors |
[即将开通] |
| 支付宝/微信 |
[即将添加二维码] |
| Patreon |
[即将开通] |
捐赠用途:
- 服务器费用(未来Web版)
- 测试文件购买(真实工程图纸)
- 开发时间投入
📧 联系方式
- GitHub Issues: 开启Issue
- Email: [即将添加]
- 微信群: [即将建立]
🔗 相关项目
🎉 致谢
感谢所有贡献者的支持!
Built with ❤️ for the CAD community
让CAD处理更高效、更自动化
⭐ 如果这个项目对你有帮助,请给个Star!
评论