mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-11 06:23:08 +00:00
Feature transfer lxy (#130)
* Fix 'transfer' & optimize switching the printer when importing 3mf * Fix: Bambu Printer can't be chosen
This commit is contained in:
142
docs/bbl_modifications.md
Normal file
142
docs/bbl_modifications.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# BBL机型显示问题修复总结
|
||||
|
||||
## 问题描述
|
||||
|
||||
清空`OrcaFilamentLibrary.json`的`filament_list`数组后,机型下拉框中看不到Bambu机型,但其他机型正常显示。
|
||||
|
||||
## 问题根因
|
||||
|
||||
1. **OrcaFilamentLibrary机制**:
|
||||
- `OrcaFilamentLibrary`总是第一个被加载(`PresetBundle.cpp:1225-1231`)
|
||||
- 其`filament_list`为空时,`m_config_maps`和`m_filament_id_maps`被设置为空
|
||||
- 这作为跨vendor继承的基础
|
||||
|
||||
2. **BBL.json的依赖问题**:
|
||||
- `BBL.json`的`filament_list`包含了大量第三方品牌的耗材
|
||||
- 这些品牌包括:FusRock、Polymaker、eSUN、SUNLU、Overture、AliZ等
|
||||
- 这些耗材的`@base.json`文件存储在`OrcaFilamentLibrary/filament/`目录下
|
||||
- 示例:`BBL/filament/AliZ/AliZ PA-CF @P1-X1.json` 继承自 `AliZ PA-CF @base`
|
||||
- 而 `AliZ PA-CF @base.json` 在 `OrcaFilamentLibrary/filament/AliZ/` 目录下
|
||||
|
||||
3. **加载失败链**:
|
||||
- 加载BBL vendor时,`AliZ PA-CF @P1-X1.json` 尝试继承 `AliZ PA-CF @base`
|
||||
- 但 `@base`文件不在BBL目录下,而在OrcaFilamentLibrary目录下
|
||||
- 由于OrcaFilamentLibrary的`filament_list`为空,这些`@base`文件没有被加载
|
||||
- 继承失败,抛出异常,整个BBL vendor加载失败
|
||||
- 结果:Bambu机型不显示
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 最小风险方案(已采用)
|
||||
|
||||
只修改配置文件,不修改代码逻辑。
|
||||
|
||||
#### 修改内容
|
||||
|
||||
**文件:`resources/profiles/BBL.json`**
|
||||
|
||||
1. **清理`filament_list`**:
|
||||
- 移除所有依赖OrcaFilamentLibrary的第三方品牌耗材
|
||||
- 只保留Bambu品牌和Generic品牌的耗材
|
||||
- 从959个耗材条目减少到512个
|
||||
- 移除的品牌:FusRock、Polymaker(PolyLite、Fiberon、Panchroma等)、eSUN、SUNLU、Overture、AliZ等
|
||||
|
||||
2. **升级版本号**:
|
||||
- 从 `02.00.00.54` 升级到 `02.00.00.55`
|
||||
- 确保老用户升级软件后能重新加载配置
|
||||
|
||||
#### 保留的内容
|
||||
|
||||
**BBL.json的`filament_list`中保留:**
|
||||
- 所有 `fdm_filament_*` 基础文件(在BBL目录下存在)
|
||||
- 所有 `Bambu` 品牌的耗材
|
||||
- 所有 `Generic` 品牌的耗材
|
||||
- 所有 `@BBL` 结尾的耗材(BBL专用)
|
||||
|
||||
#### 修改影响
|
||||
|
||||
- **新用户**:直接使用清理后的配置,无问题
|
||||
- **老用户**:升级软件后,系统检测到版本号变化,自动重新加载配置
|
||||
- **功能**:用户可以选择Bambu机型,无法使用OrcaFilamentLibrary中的第三方耗材
|
||||
|
||||
## 技术细节
|
||||
|
||||
### 修改统计
|
||||
|
||||
```
|
||||
原始:959个耗材条目
|
||||
清理后:512个耗材条目
|
||||
移除:447个耗材条目
|
||||
```
|
||||
|
||||
### 关键代码位置
|
||||
|
||||
**PresetBundle.cpp中的相关逻辑(未修改,仅作参考)**:
|
||||
- `1225-1231`:OrcaFilamentLibrary优先加载
|
||||
- `2977-2996`:继承解析逻辑
|
||||
- `3188-3191`:设置m_config_maps
|
||||
|
||||
### 日志信息
|
||||
|
||||
**问题出现时的错误日志**:
|
||||
```
|
||||
can not find inherits AliZ PA-CF @base for AliZ PA-CF @P1-X1
|
||||
got error when parse filament setting from .../BBL/filament/AliZ/AliZ PA-CF @P1-X1.json
|
||||
```
|
||||
|
||||
## 验证步骤
|
||||
|
||||
1. 编译代码:
|
||||
```bash
|
||||
build_release_vs2022.bat slicer
|
||||
```
|
||||
|
||||
2. 运行程序并验证:
|
||||
- 机型下拉框中可以看到Bambu机型(X1 Carbon、X1、P1P、P1S、A1 mini、A1等)
|
||||
- 耗材列表中只有Bambu和Generic品牌的耗材
|
||||
- 不再出现第三方品牌的耗材(FusRock、Polymaker等)
|
||||
|
||||
3. 检查日志:
|
||||
- 不再有 `can not find inherits` 相关的错误
|
||||
- BBL vendor正常加载
|
||||
|
||||
## 注意事项
|
||||
|
||||
### 版本号管理
|
||||
|
||||
以后修改vendor配置文件时,记得升级版本号:
|
||||
- **小改动**(bug修复):升级最后一位(如 `.54` → `.55`)
|
||||
- **中等改动**(新增预设):升级中间两位(如 `00.00` → `00.01`)
|
||||
- **大改动**(结构调整):升级前两位(如 `02.00` → `03.00`)
|
||||
|
||||
### OrcaFilamentLibrary
|
||||
|
||||
- `OrcaFilamentLibrary.json` 的 `filament_list` 保持为空
|
||||
- `machine_model_list` 和 `machine_list` 也保持为空
|
||||
- 这符合产品定位:不提供跨vendor的system耗材库
|
||||
|
||||
## 相关文件
|
||||
|
||||
### 修改的文件
|
||||
- `resources/profiles/BBL.json`
|
||||
|
||||
### 未修改的文件
|
||||
- `resources/profiles/OrcaFilamentLibrary.json`(保持空状态)
|
||||
- `src/libslic3r/PresetBundle.cpp`(保持原样)
|
||||
|
||||
### 删除的文件
|
||||
- `scripts/clean_bbl_json.py`(临时清理脚本,已删除)
|
||||
|
||||
## 总结
|
||||
|
||||
通过清理BBL.json中的filament_list,移除依赖OrcaFilamentLibrary的第三方耗材,实现了:
|
||||
- ✅ 用户可以选择Bambu机型
|
||||
- ✅ 用户无法使用OrcaFilamentLibrary中的耗材
|
||||
- ✅ 最小代码修改风险(只改配置文件)
|
||||
- ✅ 兼容新老用户(版本号升级)
|
||||
|
||||
---
|
||||
|
||||
**修改日期**:2026-01-22
|
||||
**分支**:feature_transfer_lxy
|
||||
**修改人**:Claude Code Assistant
|
||||
Reference in New Issue
Block a user