mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-11 14:33:04 +00:00
313 lines
7.2 KiB
Markdown
313 lines
7.2 KiB
Markdown
# 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
|
||
|
||
---
|
||
|
||
**祝你打印顺利! 🎉**
|