Files
OrcaSlicer/tools/README_gcode_checker.md
T
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+(必需)
  • tkinter(Python标准库,通常自带)
  • 支持 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" 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 本说明文档

🔗 相关资源


📜 更新日志

v1.0 (2026-01-19)

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

🙏 致谢

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

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


祝你打印顺利! 🎉