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

4.6 KiB
Raw Blame History

BBL机型显示问题修复总结

问题描述

清空OrcaFilamentLibrary.jsonfilament_list数组后机型下拉框中看不到Bambu机型但其他机型正常显示。

问题根因

  1. OrcaFilamentLibrary机制

    • OrcaFilamentLibrary总是第一个被加载(PresetBundle.cpp:1225-1231
    • filament_list为空时,m_config_mapsm_filament_id_maps被设置为空
    • 这作为跨vendor继承的基础
  2. BBL.json的依赖问题

    • BBL.jsonfilament_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.jsonOrcaFilamentLibrary/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-1231OrcaFilamentLibrary优先加载
  • 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. 编译代码:

    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.0000.01
  • 大改动(结构调整):升级前两位(如 02.0003.00

OrcaFilamentLibrary

  • OrcaFilamentLibrary.jsonfilament_list 保持为空
  • machine_model_listmachine_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