mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-25 03:42:05 +00:00
Feature boundary test lxy (#128)
* Add Boundary validator * Boundary test ui * refect & optimize boundary validation
This commit is contained in:
312
tools/README_gcode_checker.md
Normal file
312
tools/README_gcode_checker.md
Normal file
@@ -0,0 +1,312 @@
|
||||
# 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
|
||||
|
||||
---
|
||||
|
||||
**祝你打印顺利! 🎉**
|
||||
Reference in New Issue
Block a user