Files
OrcaSlicer/tools/README_gcode_checker.md
xiaoyeliu a1769a2148 Feature boundary test lxy (#128)
* Add Boundary validator

* Boundary test ui

* refect & optimize boundary validation
2026-01-21 19:52:11 +08:00

7.2 KiB
Raw Blame History

G-code边界超限检查工具 - 使用说明

📋 工具简介

这是一个带有图形界面的G-code边界检查工具可以帮助你

检测Travel移动超限 - 发现可能导致打印头撞机的Travel移动 检测Extrude移动超限 - 发现挤出路径超出边界 支持多种床类型 - 矩形床、圆形床Delta打印机 详细报告 - 提供超限位置、类型、距离等详细信息 快速预设 - 常见打印机尺寸一键设置


🚀 快速开始

方法1: 双击启动(推荐)

  1. 双击 run_gcode_checker.bat 启动程序
  2. 如果提示"未找到Python"需要先安装Python见下方

方法2: 命令行启动

python gcode_boundary_checker_gui.py

💻 系统要求

  • Python 3.7+(必需)
  • tkinterPython标准库通常自带
  • 支持 Windows / macOS / Linux

安装Python

如果系统没有Python请访问https://www.python.org/downloads/

Windows用户注意:安装时勾选 "Add Python to PATH"

验证安装:

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+(性能更好)

🛠️ 高级用法

命令行版本

如果需要批量处理或集成到脚本,可以使用命令行版本:

python analyze_gcode_bounds.py output.gcode --bed-size 200 200 250

详细选项:

# 矩形床
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" Linuxsudo 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 本说明文档

🔗 相关资源


📜 更新日志

v1.0 (2026-01-19)

  • 初始版本
  • 支持矩形床和圆形床
  • GUI界面
  • 详细报告生成
  • Travel/Extrude移动分类检测

🙏 致谢

本工具是OrcaSlicer边界检查优化项目的一部分旨在帮助用户诊断和修复边界超限问题。

项目编号: ORCA-2026-001 创建日期: 2026-01-19 作者: Claude Code


祝你打印顺利! 🎉