# G-code边界超限检查工具 - 使用说明 ## 📋 工具简介 这是一个带有图形界面的G-code边界检查工具,可以帮助你: ✅ **检测Travel移动超限** - 发现可能导致打印头撞机的Travel移动 ✅ **检测Extrude移动超限** - 发现挤出路径超出边界 ✅ **支持多种床类型** - 矩形床、圆形床(Delta打印机) ✅ **详细报告** - 提供超限位置、类型、距离等详细信息 ✅ **快速预设** - 常见打印机尺寸一键设置 --- ## 🚀 快速开始 ### 方法1: 双击启动(推荐) 1. 双击 `run_gcode_checker.bat` 启动程序 2. 如果提示"未找到Python",需要先安装Python(见下方) ### 方法2: 命令行启动 ```bash python gcode_boundary_checker_gui.py ``` --- ## 💻 系统要求 - **Python 3.7+**(必需) - **tkinter**(Python标准库,通常自带) - 支持 Windows / macOS / Linux ### 安装Python 如果系统没有Python,请访问:https://www.python.org/downloads/ **Windows用户注意**:安装时勾选 "Add Python to PATH" 验证安装: ```bash python --version # 应显示: Python 3.x.x ``` --- ## 📖 使用教程 ### 步骤1: 选择G-code文件 点击"浏览..."按钮,选择要检查的`.gcode`文件 ### 步骤2: 配置床参数 #### 矩形床(常见3D打印机) 1. 选择"矩形床" 2. 输入尺寸: - **X**: 床宽度(mm) - **Y**: 床深度(mm) - **Z**: 最大打印高度(mm) 3. 原点通常保持 (0, 0) **快速预设**(点击即可应用): - `200×200×250` - Ender 3, CR-10等 - `220×220×250` - Prusa i3 MK3等 - `250×250×300` - CR-10S等 - `300×300×400` - CR-10 Max等 #### 圆形床(Delta打印机) 1. 选择"圆形床 (Delta)" 2. 输入: - **半径**: 床半径(mm) - **Z高度**: 最大打印高度(mm) ### 步骤3: 开始分析 1. 点击"开始分析"按钮 2. 等待进度条完成(大文件可能需要几秒钟) 3. 查看结果报告 ### 步骤4: 查看结果 #### ✅ 正常情况 ``` ✅ 所有移动都在边界内! ``` #### ⚠️ 发现超限 报告会显示: - 总超限数量 - Travel/Extrude超限分类 - 超限类型统计 - 详细超限列表(前100个) 每个超限包含: - **行号**: G-code文件中的行数 - **类型**: Travel或Extrude - **位置**: X, Y, Z坐标 - **超限类型**: X/Y/Z超限方向 - **超出距离**: 超出边界多少mm - **原始代码**: 超限的G-code命令 ### 步骤5: 保存报告 点击"保存报告"按钮,将完整报告保存为`.txt`文件 --- ## 📊 报告示例 ``` ====================================================================== G-code边界超限分析报告 ====================================================================== 床类型: 矩形 床边界: X[0.0, 200.0] Y[0.0, 200.0] Z[0, 250.0] 总行数: 45823 总移动数: 12456 - Travel移动: 3421 - Extrude移动: 9035 发现超限: 5 处 - Travel超限: 3 - Extrude超限: 2 超限类型统计: X > 最大值: 3 次 Y > 最大值: 2 次 ====================================================================== 详细超限列表 (前100个): ====================================================================== [1] 行 1234: Travel - X > 最大值 位置: X=205.340 Y=100.000 Z=50.000 E=123.456 超出: 5.340 mm 代码: G0 X205.34 Y100 F7200 [2] 行 2345: Extrude - Y > 最大值 位置: X=150.000 Y=203.120 Z=50.000 E=150.234 超出: 3.120 mm 代码: G1 X150 Y203.12 E150.234 ``` --- ## 🔍 常见问题 ### Q1: 为什么会检测出Travel超限? **原因**: - OrcaSlicer原有代码只检查Extrude移动,忽略了Travel移动 - Travel移动如果超限,可能导致打印头撞击边界 **如何修复**: 1. 调整模型位置,远离床边缘 2. 减小Skirt/Brim距离 3. 检查擦料塔位置 4. 调整打印顺序 ### Q2: 显示"✅ 所有移动都在边界内",但切片软件仍报错? 可能原因: - 切片软件使用了更严格的边界检查 - 考虑了挤出线宽(本工具只检查路径中心线) - 其他非边界问题(如对象冲突) ### Q3: 超限距离很小(如0.1mm),需要担心吗? **一般情况**: - <0.5mm:通常是浮点误差,可能安全 - 0.5-2mm:建议修复,有撞机风险 - >2mm:必须修复 ### Q4: 如何处理大量超限? **排查步骤**: 1. 检查床尺寸设置是否正确 2. 检查模型是否整体偏移 3. 检查切片配置(Skirt/Brim/Wipe Tower) 4. 使用切片软件自动排版 ### Q5: 程序运行很慢 **优化建议**: - 大文件(>100MB)可能需要1-2分钟 - 关闭其他程序释放内存 - Python版本建议3.9+(性能更好) --- ## 🛠️ 高级用法 ### 命令行版本 如果需要批量处理或集成到脚本,可以使用命令行版本: ```bash python analyze_gcode_bounds.py output.gcode --bed-size 200 200 250 ``` 详细选项: ```bash # 矩形床 python analyze_gcode_bounds.py file.gcode --bed-size 200 200 250 # 矩形床 + 自定义原点 python analyze_gcode_bounds.py file.gcode --bed-size 200 200 250 --bed-origin 10 10 # 圆形床 python analyze_gcode_bounds.py file.gcode --bed-type circle --radius 100 --max-z 250 ``` --- ## 🐛 故障排除 ### 错误: "未找到Python" **解决方法**: 1. 安装Python 3.7+ 2. 确保安装时勾选"Add to PATH" 3. 重启命令提示符/终端 ### 错误: "No module named 'tkinter'" **Windows**:重新安装Python,勾选"tcl/tk and IDLE" **Linux**:`sudo apt-get install python3-tk` **macOS**:通常自带,如缺失重新安装Python ### 界面显示乱码 修改系统区域设置为中文,或使用命令行版本 ### 程序崩溃或卡死 1. 检查G-code文件是否损坏 2. 尝试用文本编辑器打开G-code 3. 更新Python到最新版本 --- ## 📝 技术细节 ### 检测算法 1. **矩形床**:检查每个移动点是否在 `[x_min, x_max] × [y_min, y_max] × [0, z_max]` 内 2. **圆形床**:检查每个移动点到中心的距离是否 ≤ 半径 3. **容差**:默认允许 0.01mm 误差(浮点精度) ### 移动分类 - **Travel**: G0命令 或 G1命令且E值不变 - **Extrude**: G1/G2/G3命令且E值增加 - **Retract**: E值减少(不检查) ### 性能 - 解析速度:约 50,000 行/秒(Python 3.9) - 内存占用:约为文件大小的 2-3倍 - 大文件(1GB+)建议使用命令行版本 --- ## 📄 文件说明 | 文件 | 说明 | |------|------| | `gcode_boundary_checker_gui.py` | GUI版本(推荐) | | `analyze_gcode_bounds.py` | 命令行版本 | | `run_gcode_checker.bat` | Windows启动脚本 | | `README_gcode_checker.md` | 本说明文档 | --- ## 🔗 相关资源 - **OrcaSlicer修复文档**: `docs/gcode_boundary_optimization_implementation.md` - **技术方案**: `docs/gcode_boundary_checking_optimization.md` - **问题反馈**: https://github.com/Snapmaker/OrcaSlicer/issues --- ## 📜 更新日志 ### v1.0 (2026-01-19) - ✅ 初始版本 - ✅ 支持矩形床和圆形床 - ✅ GUI界面 - ✅ 详细报告生成 - ✅ Travel/Extrude移动分类检测 --- ## 🙏 致谢 本工具是OrcaSlicer边界检查优化项目的一部分,旨在帮助用户诊断和修复边界超限问题。 **项目编号**: ORCA-2026-001 **创建日期**: 2026-01-19 **作者**: Claude Code --- **祝你打印顺利! 🎉**