Files
OrcaSlicer/docs/bbl_modifications.md
xiaoyeliu 44f198e1ed Feature transfer lxy (#130)
* Fix 'transfer' & optimize switching the printer when importing 3mf

* Fix: Bambu Printer can't be chosen
2026-01-22 15:33:54 +08:00

143 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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、PolymakerPolyLite、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