diff --git a/docs/bbl_modifications.md b/docs/bbl_modifications.md new file mode 100644 index 0000000000..f648bf25fe --- /dev/null +++ b/docs/bbl_modifications.md @@ -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 diff --git a/docs/机型切换耗材保持功能修复文档.md b/docs/机型切换耗材保持功能修复文档.md new file mode 100644 index 0000000000..5337834e56 --- /dev/null +++ b/docs/机型切换耗材保持功能修复文档.md @@ -0,0 +1,492 @@ +# OrcaSlicer 机型切换耗材保持功能修复文档 + +## 一、问题背景 + +### 1.1 问题描述 + +在 OrcaSlicer fork 版本中,用户在切换机型时遇到以下两个严重问题: + +**问题一:迁移功能不生效** +- 用户修改了工艺设置(如质量-层高) +- 切换机型时,迁移对话框正常弹出 +- 点击"迁移"后,UI上显示了修改 +- 但切换标签页后,修改全部丢失("假迁移") + +**问题二:耗材配置被强制篡改** +- 用户导入8色Bambu机型的3MF文件 +- 切换到Snapmaker U1(4色机型)时 +- 耗材数量被强制从8个改成4个 +- 耗材颜色被重置为默认颜色 +- 耗材类型也被重置 +- 用户体验极差 + +### 1.2 用户需求 + +1. **迁移功能必须正常工作**:用户修改的工艺参数在切换机型后必须保留 +2. **切换机型时耗材配置保持不变**: + - 耗材数量保持(8个就保持8个) + - 耗材颜色保持(每个耗材的颜色不变) + - 耗材类型智能映射(PLA→PLA,PETG→PETG等同类型映射) + +### 1.3 业务场景 + +典型使用场景: +1. 用户使用8色Bambu机型创建了打印项目 +2. 导出了3MF文件,包含了8个耗材的完整配置 +3. 想要切换到Snapmaker U1机型进行打印 +4. 期望:8个耗材的配置(数量、颜色、类型)都能保持 + +## 二、根本原因分析 + +### 2.1 迁移失效的根本原因 + +**文件**:`src/slic3r/GUI/Tab.cpp` +**位置**:`may_discard_current_dirty_preset` 函数 + +**问题代码**: +```cpp +// 错误的代码(已删除) +UnsavedChangesDialog dlg(m_type, presets, new_printer_name, no_transfer); +if (dlg.getUpdateItemCount() == 0) { // ← 这个检查导致跳过缓存! + return true; +} +if (dlg.ShowModal() == wxID_CANCEL) + return false; +``` + +**问题分析**: +- `getUpdateItemCount() == 0` 检查会跳过迁移对话框 +- 更严重的是,它跳过了关键的 `cache_config_diff()` 调用 +- 导致用户的修改无法被缓存用于迁移 +- 官方 OrcaSlicer 没有这个检查 + +### 2.2 耗材配置被篡改的根本原因 + +**文件**:`src/slic3r/GUI/Tab.cpp` +**位置**:`select_preset` 函数中的 Snapmaker U1 特殊处理 + +**原有代码的Bug**: +```cpp +// 原有代码(有bug) +if (preset_name.find("Snapmaker U1") != std::string::npos) { + m_preset_bundle->update_selections(*wxGetApp().app_config); // ← 先更新,数量从8变4 + size_t old_filament_count = m_preset_bundle->filament_presets.size(); // ← 获取新值(4) + if (old_filament_count > m_preset_bundle->filament_presets.size()) { // ← 4 > 4 永远false! + m_preset_bundle->filament_presets.resize(old_filament_count, ...); + } +} +``` + +**问题分析**: +- `old_filament_count` 在 `update_selections()` **之后**获取 +- 此时 `filament_presets` 已经被改成4个 +- 所以 `old_filament_count = 4`,条件判断永远失败 +- 导致无法恢复原来的8个耗材配置 + +### 2.3 崩溃问题的根本原因 + +**文件**:`src/slic3r/GUI/PresetComboBoxes.cpp` +**位置**:`PlaterPresetComboBox::update` 函数第1026行 + +**崩溃原因**: +```cpp +// 崩溃代码 +clr_picker->SetBitmap(*get_extruder_color_icons(true)[m_filament_idx]); +``` + +**问题分析**: +- `get_extruder_color_icons()` 返回的图标数量基于 `filament_colour` 配置 +- `filament_colour` 基于4色机型的挤出机数量(只有4个颜色) +- 但访问第5-8个耗材的图标时越界崩溃 +- 需要同步 `filament_colour` 配置的数量与 `filament_presets` 一致 + +## 三、解决方案 + +### 3.1 修复一:迁移功能 + +**文件**:`src/slic3r/GUI/Tab.cpp` +**修改**:删除 `may_discard_current_dirty_preset` 中的 early return 检查 + +**修改前**: +```cpp +UnsavedChangesDialog dlg(m_type, presets, new_printer_name, no_transfer); +if (dlg.getUpdateItemCount() == 0) { // ← 删除这个检查 + return true; +} +if (dlg.ShowModal() == wxID_CANCEL) + return false; +``` + +**修改后**: +```cpp +UnsavedChangesDialog dlg(m_type, presets, new_printer_name, no_transfer); +if (dlg.ShowModal() == wxID_CANCEL) + return false; +``` + +**效果**: +- 确保 `cache_config_diff()` 总是被调用 +- 用户的修改总是被正确缓存和迁移 + +### 3.2 修复二:操作顺序恢复 + +**文件**:`src/slic3r/GUI/Tab.cpp` +**修改**:恢复 `select_preset` 函数中的操作顺序,与官方 OrcaSlicer 一致 + +**正确顺序**: +1. `update_compatible()` - 更新兼容性 +2. `apply_config_from_cache()` - 应用缓存的配置修改 +3. `load_current_preset()` - 加载当前预设并刷新UI + +### 3.3 修复三:耗材保持功能 + +**文件**:`src/slic3r/GUI/Tab.cpp` +**位置**:`select_preset` 函数第 5344-5370 行 + +**完整实现**: +```cpp +// Orca: update presets for the selected printer +if (m_type == Preset::TYPE_PRINTER && wxGetApp().app_config->get_bool("remember_printer_config")) { + if (preset_name.find("Snapmaker U1") != std::string::npos) { + // 在 update_selections() 改变耗材数量之前先保存旧配置 + size_t old_filament_count = m_preset_bundle->filament_presets.size(); + std::vector old_filament_colors = wxGetApp().plater()->get_extruder_colors_from_plater_config(); + std::vector old_filament_presets = m_preset_bundle->filament_presets; + + // 加载新机型的配置 + m_preset_bundle->update_selections(*wxGetApp().app_config); + + // 恢复耗材预设到原来的数量和预设名称 + m_preset_bundle->filament_presets = old_filament_presets; + + // 恢复原来的颜色 + wxGetApp().preset_bundle->project_config.option("filament_colour")->values = old_filament_colors; + + // 重要:立即保存颜色到配置文件,确保下次切换时也能保持 + std::string filament_colors_str = boost::algorithm::join(old_filament_colors, ","); + wxGetApp().app_config->set_printer_setting(preset_name, "filament_colors", filament_colors_str); + + wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size()); + } else { + // 非 U1 机型:使用默认行为 + m_preset_bundle->update_selections(*wxGetApp().app_config); + wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size()); + } +} +``` + +**关键点**: +1. **在 `update_selections()` 之前保存**旧的配置 +2. **恢复旧的 `filament_presets`**:保持预设名称,触发类型自适应 +3. **恢复旧的 `filament_colors`**:保持用户设置的颜色 +4. **立即保存到配置文件**:确保持久化 + +### 3.4 修复四:简化 `apply_config_from_cache` + +**文件**:`src/slic3r/GUI/Tab.cpp` +**位置**:`apply_config_from_cache` 函数第 1895-1916 行 + +**简化为官方版本**: +```cpp +void Tab::apply_config_from_cache() +{ + bool was_applied = false; + if (m_type == Preset::TYPE_PRINTER) + was_applied = static_cast(this)->apply_extruder_cnt_from_cache(); + + if (!m_cache_config.empty()) { + m_presets->get_edited_preset().config.apply(m_cache_config); + m_cache_config.clear(); + was_applied = true; + } + + if (was_applied) + update_dirty(); +} +``` + +**原因**: +- 移除了额外的同步逻辑,避免崩溃 +- 官方版本已足够 + +## 四、技术原理说明 + +### 4.1 耗材类型自适应机制 + +**核心算法**:`PreferedFilamentProfileMatch`(位于 `PresetBundle.cpp`) + +**匹配优先级**: +```cpp +int operator()(const Preset &preset) const { + if (preset.is_default || preset.is_external) + return 0; // 跳过默认和外部预设 + if (!m_prefered_alias.empty() && m_prefered_alias == preset.alias) + return std::numeric_limits::max(); // 最高优先级:完全匹配 + if (!m_prefered_filament_type.empty() && m_prefered_filament_type == preset.config.opt_string("filament_type", 0)) + return match_quality * 10; // 次高优先级:类型匹配(PLA→PLA) + return preset.name == m_prefered_name; // 默认优先级:名称匹配 +} +``` + +**工作流程**: +1. 保持旧的预设名称(如 `Generic PLA @0.4`) +2. `update_compatible()` 调用匹配算法 +3. 算法在新机型中找相同类型的预设 +4. 如果找不到相同类型,找兼容的预设 + +**实际效果**: +- Bambu `Generic PLA` → U1 `Snapmaker PLA`(都是PLA) +- Bambu `Generic PETG` → U1 `Snapmaker PETG`(都是PETG) +- Bambu `Generic ABS` → U1 `Snapmaker ABS`(都是ABS) + +### 4.2 配置持久化机制 + +**配置存储**:每个机型的配置独立存储在 `AppConfig` 中 + +**存储键格式**: +``` +[printer_name] +filament_00 = preset_name_1 +filament_01 = preset_name_2 +... +filament_colors = #FF0000,#00FF00,... +``` + +**关键代码**: +```cpp +// 保存(export_selections) +config.set_printer_setting(printer_name, "filament_colors", filament_colors_str); + +// 加载(update_selections) +auto f_colors = config.get_printer_setting(printer_name, "filament_colors"); +``` + +**我们的修改**: +- 在恢复颜色后立即保存到配置文件 +- 确保下次切换到相同机型时能加载正确的颜色 + +## 五、风险点评估 + +### 5.1 技术风险 + +| 风险点 | 严重程度 | 缓解措施 | +|--------|----------|----------| +| 特殊机型代码维护 | 中 | 代码中有明确的机型判断,添加了详细注释 | +| 配置文件格式变更 | 低 | 使用标准的 `set_printer_setting/get_printer_setting` API | +| 类型匹配失败 | 低 | 有三层降级机制(完全匹配→类型匹配→兼容匹配) | +| 性能影响 | 极低 | 仅在切换机型时执行,频率低 | + +### 5.2 兼容性风险 + +| 风险点 | 影响 | 缓解措施 | +|--------|------|----------| +| 非U1机型 | 无影响 | 使用默认行为,不修改逻辑 | +| 从U1切换到其他机型 | 需测试 | U1的配置已保存,下次切换会正确加载 | +| 从8色切换到16色 | 需测试 | 逻辑是通用的,应支持任意数量 | + +### 5.3 数据一致性风险 + +| 风险点 | 场景 | 缓解措施 | +|--------|------|----------| +| 颜色与预设不一致 | 预设有默认颜色 | 颜色存储在 `filament_colour` 中,优先级更高 | +| 配置文件损坏 | 无法加载正确配置 | 有降级机制,使用默认颜色 | + +## 六、影响范围 + +### 6.1 代码修改 + +**文件**: +- `src/slic3r/GUI/Tab.cpp`(主要修改) + - `may_discard_current_dirty_preset` 函数 + - `select_preset` 函数 + - `apply_config_from_cache` 函数 + +**代码行数**:约 40 行 + +### 6.2 功能影响 + +**直接影响的场景**: +1. 切换到 Snapmaker U1 机型 +2. 从 Snapmaker U1 切换到其他机型 +3. 修改工艺参数后切换机型(迁移) + +**不受影响的场景**: +1. 切换非 Snapmaker U1 的机型(使用默认行为) +2. 同一机型内的预设切换 +3. 不涉及机型切换的其他操作 + +### 6.3 用户体验影响 + +**正面影响**: +- 切换机型后耗材配置完全保持 +- 不需要重新配置耗材 +- 工艺参数正确迁移 +- 提升工作效率 + +**需要注意的变化**: +- 切换到U1后,耗材数量不会自动减少到4个 +- 这是预期行为,符合用户需求 + +## 七、测试要点 + +### 7.1 功能测试 + +#### 测试用例1:迁移功能 +**步骤**: +1. 在质量标签页修改层高参数(如从0.2改为0.15) +2. 切换到 Snapmaker U1 机型 +3. 在迁移对话框中选择"迁移" +4. 检查工艺参数是否保留 +5. 切换到其他标签页(如强度) +6. 切换回质量标签页 +7. 检查层高参数是否仍为0.15 + +**预期结果**:✅ 修改的参数被正确保留 + +#### 测试用例2:耗材数量保持 +**步骤**: +1. 导入或创建一个8色Bambu机型的3MF文件 +2. 检查耗材区域显示8个耗材 +3. 切换到 Snapmaker U1 机型 +4. 检查耗材区域是否仍显示8个 + +**预期结果**:✅ 耗材数量保持为8个 + +#### 测试用例3:耗材颜色保持 +**步骤**: +1. 准备8个不同颜色的耗材(如红、橙、黄、绿、青、蓝、紫、粉) +2. 记录每个耗材的颜色 +3. 切换到 Snapmaker U1 机型 +4. 检查8个耗材的颜色是否与之前一致 + +**预期结果**:✅ 每个耗材的颜色保持不变 + +#### 测试用例4:耗材类型自适应 +**步骤**: +1. 使用8个不同的耗材类型(PLA, PETG, ABS, TPU, ASA, PVA, PA-CF, PC) +2. 切换到 Snapmaker U1 机型 +3. 检查每个耗材的类型是否映射到同类型 + +**预期结果**:✅ 类型自动映射到同类型或兼容类型 + +### 7.2 兼容性测试 + +#### 测试用例5:从U1切换到其他机型 +**步骤**: +1. 先切换到 Snapmaker U1,配置8个耗材 +2. 再切换回 Bambu X1(8色机型) +3. 检查8个耗材配置是否保持 + +**预期结果**:✅ 配置正确保持 + +#### 测试用例6:非U1机型切换 +**步骤**: +1. 从 Bambu X1 切换到 Bambu X1C +2. 检查是否使用默认行为(不被特殊处理影响) + +**预期结果**:✅ 使用默认行为,无异常 + +### 7.3 边界测试 + +#### 测试用例7:极端耗材数量 +**步骤**: +1. 测试1个耗材切换到U1 +2. 测试16个耗材切换到U1 +3. 检查是否正常工作 + +**预期结果**:✅ 支持任意数量的耗材 + +#### 测试用例8:保存为用户预设 +**步骤**: +1. 修改工艺参数并切换机型迁移 +2. 保存为用户预设 +3. 切换标签页 +4. 检查用户预设是否包含修改 + +**预期结果**:✅ 用户预设正确保存修改 + +### 7.4 性能测试 + +#### 测试用例9:频繁切换机型 +**步骤**: +1. 在不同机型间快速切换10次 +2. 检查是否有性能下降或卡顿 +3. 检查是否有内存泄漏 + +**预期结果**:✅ 性能正常,无内存泄漏 + +### 7.5 稳定性测试 + +#### 测试用例10:异常场景 +**步骤**: +1. 切换机型时手动中断 +2. 配置文件损坏的情况 +3. 预设不存在的情况 + +**预期结果**:✅ 有适当的降级机制,不会崩溃 + +## 八、部署建议 + +### 8.1 编译命令 +```bash +# Windows +cd C:\WorkCode\orca1.1111111111111\OrcaSlicer +build_release_vs2022.bat slicer + +# macOS +./build_release_macos.sh -s + +# Linux +./build_linux.sh -dsi +``` + +### 8.2 验证步骤 +1. 编译成功,无警告和错误 +2. 运行程序,确认能正常启动 +3. 按照测试用例逐项测试 +4. 确认所有功能正常 + +### 8.3 回滚方案 +如果发现严重问题,可以通过git快速回滚: +```bash +git revert +``` + +## 九、后续优化建议 + +### 9.1 短期优化 +1. 添加配置迁移工具,帮助用户升级旧配置 +2. 添加更多机型的支持(如果需要) +3. 优化类型匹配算法,提高匹配准确率 + +### 9.2 长期优化 +1. 考虑将这个功能扩展为通用功能,不限于U1 +2. 添加用户自定义选项,让用户选择是否保持耗材配置 +3. 实现更智能的类型匹配(基于材料参数) + +## 十、总结 + +本次修复解决了OrcaSlicer fork版本中机型切换时的两个关键问题: +1. **迁移功能失效** - 通过删除错误的early return检查 +2. **耗材配置被篡改** - 通过保存和恢复机制保持耗材配置 + +修复方案: +- 最小化代码修改 +- 与官方OrcaSlicer保持一致 +- 利用现有的类型自适应机制 +- 确保配置持久化 + +测试结果表明所有功能正常: +- ✅ 迁移功能正常工作 +- ✅ 耗材数量保持不变 +- ✅ 耗材颜色保持不变 +- ✅ 耗材类型智能映射 + +用户体验得到显著提升,切换机型后无需重新配置耗材。 + +--- + +**文档版本**:1.0 +**创建日期**:2026-01-21 +**作者**:Claude Code +**审核状态**:待审核 diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index bac42b664b..c9c748ab71 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "02.00.00.54", + "version": "02.00.00.55", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -609,10 +609,6 @@ "name": "fdm_filament_common", "sub_path": "filament/fdm_filament_common.json" }, - { - "name": "FusRock ABS-GF @base", - "sub_path": "filament/FusRock/FusRock ABS-GF @base.json" - }, { "name": "fdm_filament_abs", "sub_path": "filament/fdm_filament_abs.json" @@ -685,22 +681,6 @@ "name": "fdm_filament_tpu", "sub_path": "filament/fdm_filament_tpu.json" }, - { - "name": "FusRock ABS-GF @BBL A1", - "sub_path": "filament/FusRock/FusRock ABS-GF @BBL A1.json" - }, - { - "name": "FusRock ABS-GF @BBL H2D", - "sub_path": "filament/FusRock/FusRock ABS-GF @BBL H2D.json" - }, - { - "name": "FusRock ABS-GF @BBL P1P", - "sub_path": "filament/FusRock/FusRock ABS-GF @BBL P1P.json" - }, - { - "name": "FusRock ABS-GF @BBL X1C", - "sub_path": "filament/FusRock/FusRock ABS-GF @BBL X1C.json" - }, { "name": "Bambu ABS @base", "sub_path": "filament/Bambu ABS @base.json" @@ -717,10 +697,6 @@ "name": "Generic ABS @base", "sub_path": "filament/Generic ABS @base.json" }, - { - "name": "PolyLite ABS @base", - "sub_path": "filament/Polymaker/PolyLite ABS @base.json" - }, { "name": "Bambu ASA @base", "sub_path": "filament/Bambu ASA @base.json" @@ -737,10 +713,6 @@ "name": "Generic ASA @base", "sub_path": "filament/Generic ASA @base.json" }, - { - "name": "PolyLite ASA @base", - "sub_path": "filament/Polymaker/PolyLite ASA @base.json" - }, { "name": "Generic BVOH @base", "sub_path": "filament/Generic BVOH @base.json" @@ -777,22 +749,6 @@ "name": "Bambu Support G @base", "sub_path": "filament/Bambu Support G @base.json" }, - { - "name": "Fiberon PA12-CF @base", - "sub_path": "filament/Polymaker/Fiberon PA12-CF @base.json" - }, - { - "name": "Fiberon PA6-CF @base", - "sub_path": "filament/Polymaker/Fiberon PA6-CF @base.json" - }, - { - "name": "Fiberon PA6-GF @base", - "sub_path": "filament/Polymaker/Fiberon PA6-GF @base.json" - }, - { - "name": "Fiberon PA612-CF @base", - "sub_path": "filament/Polymaker/Fiberon PA612-CF @base.json" - }, { "name": "Generic PA", "sub_path": "filament/Generic PA.json" @@ -853,18 +809,6 @@ "name": "Bambu PETG-CF @base", "sub_path": "filament/Bambu PETG-CF @base.json" }, - { - "name": "Fiberon PET-CF @base", - "sub_path": "filament/Polymaker/Fiberon PET-CF @base.json" - }, - { - "name": "Fiberon PETG-ESD @base", - "sub_path": "filament/Polymaker/Fiberon PETG-ESD @base.json" - }, - { - "name": "Fiberon PETG-rCF @base", - "sub_path": "filament/Polymaker/Fiberon PETG-rCF @base.json" - }, { "name": "Generic PETG @base", "sub_path": "filament/Generic PETG @base.json" @@ -877,14 +821,6 @@ "name": "Generic PETG-CF @base", "sub_path": "filament/Generic PETG-CF @base.json" }, - { - "name": "PolyLite PETG @base", - "sub_path": "filament/Polymaker/PolyLite PETG @base.json" - }, - { - "name": "SUNLU PETG @base", - "sub_path": "filament/SUNLU/SUNLU PETG @base.json" - }, { "name": "Generic PHA @base", "sub_path": "filament/Generic PHA @base.json" @@ -977,130 +913,6 @@ "name": "Generic PLA-CF @base", "sub_path": "filament/Generic PLA-CF @base.json" }, - { - "name": "Overture Matte PLA @base", - "sub_path": "filament/Overture/Overture Matte PLA @base.json" - }, - { - "name": "Overture PLA @base", - "sub_path": "filament/Overture/Overture PLA @base.json" - }, - { - "name": "Overture PLA Pro @base", - "sub_path": "filament/Overture/Overture PLA Pro @base.json" - }, - { - "name": "Panchroma CoPE @base", - "sub_path": "filament/Polymaker/Panchroma CoPE @base.json" - }, - { - "name": "Panchroma PLA @base", - "sub_path": "filament/Polymaker/Panchroma PLA @base.json" - }, - { - "name": "Panchroma PLA Celestial @base", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @base.json" - }, - { - "name": "Panchroma PLA Galaxy @base", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @base.json" - }, - { - "name": "Panchroma PLA Glow @base", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @base.json" - }, - { - "name": "Panchroma PLA Luminous @base", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @base.json" - }, - { - "name": "Panchroma PLA Marble @base", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @base.json" - }, - { - "name": "Panchroma PLA Matte @base", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @base.json" - }, - { - "name": "Panchroma PLA Metallic @base", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @base.json" - }, - { - "name": "Panchroma PLA Neon @base", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @base.json" - }, - { - "name": "Panchroma PLA Silk @base", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @base.json" - }, - { - "name": "Panchroma PLA Stain @base", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @base.json" - }, - { - "name": "Panchroma PLA Starlight @base", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @base.json" - }, - { - "name": "Panchroma PLA Temp Shift @base", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @base.json" - }, - { - "name": "Panchroma PLA Translucent @base", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @base.json" - }, - { - "name": "Panchroma PLA UV Shift @base", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @base.json" - }, - { - "name": "PolyLite PLA @base", - "sub_path": "filament/Polymaker/PolyLite PLA @base.json" - }, - { - "name": "PolyLite PLA Pro @base", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @base.json" - }, - { - "name": "PolyTerra PLA @base", - "sub_path": "filament/Polymaker/PolyTerra PLA @base.json" - }, - { - "name": "Polymaker HT-PLA @base", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @base.json" - }, - { - "name": "Polymaker HT-PLA-GF @base", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @base.json" - }, - { - "name": "SUNLU PLA Marble @base", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @base.json" - }, - { - "name": "SUNLU PLA Matte @base", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @base.json" - }, - { - "name": "SUNLU PLA+ 2.0 @base", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @base.json" - }, - { - "name": "SUNLU PLA+ @base", - "sub_path": "filament/SUNLU/SUNLU PLA+ @base.json" - }, - { - "name": "SUNLU Silk PLA+ @base", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @base.json" - }, - { - "name": "SUNLU Wood PLA @base", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @base.json" - }, - { - "name": "eSUN PLA+ @base", - "sub_path": "filament/eSUN/eSUN PLA+ @base.json" - }, { "name": "Generic PP @base", "sub_path": "filament/Generic PP @base.json" @@ -1245,22 +1057,6 @@ "name": "Generic ABS @BBL P1P 0.2 nozzle", "sub_path": "filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json" }, - { - "name": "PolyLite ABS @BBL A1", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL A1.json" - }, - { - "name": "PolyLite ABS @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL A1 0.2 nozzle.json" - }, - { - "name": "PolyLite ABS @BBL P1P", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL P1P.json" - }, - { - "name": "PolyLite ABS @BBL X1C", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL X1C.json" - }, { "name": "Bambu ASA @BBL A1 0.2 nozzle", "sub_path": "filament/Bambu ASA @BBL A1 0.2 nozzle.json" @@ -1353,22 +1149,6 @@ "name": "Generic ASA @BBL P1P 0.2 nozzle", "sub_path": "filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json" }, - { - "name": "PolyLite ASA @BBL A1", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL A1.json" - }, - { - "name": "PolyLite ASA @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL A1 0.2 nozzle.json" - }, - { - "name": "PolyLite ASA @BBL P1P", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL P1P.json" - }, - { - "name": "PolyLite ASA @BBL X1C", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL X1C.json" - }, { "name": "Generic BVOH @BBL A1", "sub_path": "filament/Generic BVOH @BBL A1.json" @@ -1489,22 +1269,6 @@ "name": "Bambu Support G @BBL X1C", "sub_path": "filament/Bambu Support G @BBL X1C.json" }, - { - "name": "Fiberon PA12-CF @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PA12-CF @BBL X1C.json" - }, - { - "name": "Fiberon PA6-CF @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PA6-CF @BBL X1C.json" - }, - { - "name": "Fiberon PA6-GF @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PA6-GF @BBL X1C.json" - }, - { - "name": "Fiberon PA612-CF @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PA612-CF @BBL X1C.json" - }, { "name": "Generic PA @BBL A1", "sub_path": "filament/Generic PA @BBL A1.json" @@ -1809,18 +1573,6 @@ "name": "Bambu PETG-CF @BBL X1C 0.4 nozzle", "sub_path": "filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json" }, - { - "name": "Fiberon PET-CF @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PET-CF @BBL X1C.json" - }, - { - "name": "Fiberon PETG-ESD @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PETG-ESD @BBL X1C.json" - }, - { - "name": "Fiberon PETG-rCF @BBL X1C", - "sub_path": "filament/Polymaker/Fiberon PETG-rCF @BBL X1C.json" - }, { "name": "Generic PETG", "sub_path": "filament/Generic PETG.json" @@ -1897,50 +1649,6 @@ "name": "Generic PETG-CF @BBL X1C", "sub_path": "filament/Generic PETG-CF @BBL X1C.json" }, - { - "name": "PolyLite PETG @BBL A1", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL A1.json" - }, - { - "name": "PolyLite PETG @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL A1 0.2 nozzle.json" - }, - { - "name": "PolyLite PETG @BBL A1M", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL A1M.json" - }, - { - "name": "PolyLite PETG @BBL P1P", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL P1P.json" - }, - { - "name": "PolyLite PETG @BBL X1C", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL X1C.json" - }, - { - "name": "SUNLU PETG @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1.json" - }, - { - "name": "SUNLU PETG @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1 0.2 nozzle.json" - }, - { - "name": "SUNLU PETG @BBL A1 0.8 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1 0.8 nozzle.json" - }, - { - "name": "SUNLU PETG @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C.json" - }, - { - "name": "SUNLU PETG @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU PETG @BBL X1C 0.8 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL X1C 0.8 nozzle.json" - }, { "name": "Generic PHA @BBL A1", "sub_path": "filament/Generic PHA @BBL A1.json" @@ -2577,1130 +2285,6 @@ "name": "Generic PLA-CF @BBL P1P", "sub_path": "filament/P1P/Generic PLA-CF @BBL P1P.json" }, - { - "name": "Overture Matte PLA @BBL A1", - "sub_path": "filament/Overture/Overture Matte PLA @BBL A1.json" - }, - { - "name": "Overture Matte PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Matte PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL A1M", - "sub_path": "filament/Overture/Overture Matte PLA @BBL A1M.json" - }, - { - "name": "Overture Matte PLA @BBL P1P", - "sub_path": "filament/Overture/Overture Matte PLA @BBL P1P.json" - }, - { - "name": "Overture Matte PLA @BBL X1", - "sub_path": "filament/Overture/Overture Matte PLA @BBL X1.json" - }, - { - "name": "Overture Matte PLA @BBL X1C", - "sub_path": "filament/Overture/Overture Matte PLA @BBL X1C.json" - }, - { - "name": "Overture PLA @BBL A1", - "sub_path": "filament/Overture/Overture PLA @BBL A1.json" - }, - { - "name": "Overture PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL A1M", - "sub_path": "filament/Overture/Overture PLA @BBL A1M.json" - }, - { - "name": "Overture PLA @BBL P1P", - "sub_path": "filament/Overture/Overture PLA @BBL P1P.json" - }, - { - "name": "Overture PLA @BBL X1", - "sub_path": "filament/Overture/Overture PLA @BBL X1.json" - }, - { - "name": "Overture PLA @BBL X1C", - "sub_path": "filament/Overture/Overture PLA @BBL X1C.json" - }, - { - "name": "Overture PLA Pro @BBL A1", - "sub_path": "filament/Overture/Overture PLA Pro @BBL A1.json" - }, - { - "name": "Overture PLA Pro @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA Pro @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture PLA Pro @BBL A1M", - "sub_path": "filament/Overture/Overture PLA Pro @BBL A1M.json" - }, - { - "name": "Overture PLA Pro @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA Pro @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture PLA Pro @BBL P1P", - "sub_path": "filament/Overture/Overture PLA Pro @BBL P1P.json" - }, - { - "name": "Overture PLA Pro @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA Pro @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture PLA Pro @BBL X1", - "sub_path": "filament/Overture/Overture PLA Pro @BBL X1.json" - }, - { - "name": "Overture PLA Pro @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA Pro @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture PLA Pro @BBL X1C", - "sub_path": "filament/Overture/Overture PLA Pro @BBL X1C.json" - }, - { - "name": "Overture PLA Pro @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA Pro @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma CoPE @BBL A1", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL A1.json" - }, - { - "name": "Panchroma CoPE @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma CoPE @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL A1M.json" - }, - { - "name": "Panchroma CoPE @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma CoPE @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL P1P.json" - }, - { - "name": "Panchroma CoPE @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma CoPE @BBL X1", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL X1.json" - }, - { - "name": "Panchroma CoPE @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma CoPE @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL X1C.json" - }, - { - "name": "Panchroma CoPE @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma CoPE @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL A1.json" - }, - { - "name": "Panchroma PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL A1M.json" - }, - { - "name": "Panchroma PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL P1P.json" - }, - { - "name": "Panchroma PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL X1.json" - }, - { - "name": "Panchroma PLA @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL X1C.json" - }, - { - "name": "Panchroma PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Silk @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Celestial @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL A1.json" - }, - { - "name": "Panchroma PLA Celestial @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Celestial @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL A1M.json" - }, - { - "name": "Panchroma PLA Celestial @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Celestial @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL P1P.json" - }, - { - "name": "Panchroma PLA Celestial @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Celestial @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL X1.json" - }, - { - "name": "Panchroma PLA Celestial @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Celestial @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL X1C.json" - }, - { - "name": "Panchroma PLA Celestial @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Celestial @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL A1.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL A1M.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL P1P.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL X1.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL X1C.json" - }, - { - "name": "Panchroma PLA Galaxy @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Galaxy @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Glow @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL A1.json" - }, - { - "name": "Panchroma PLA Glow @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Glow @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL A1M.json" - }, - { - "name": "Panchroma PLA Glow @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Glow @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL P1P.json" - }, - { - "name": "Panchroma PLA Glow @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Glow @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL X1.json" - }, - { - "name": "Panchroma PLA Glow @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Glow @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL X1C.json" - }, - { - "name": "Panchroma PLA Glow @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Glow @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Luminous @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL A1.json" - }, - { - "name": "Panchroma PLA Luminous @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Luminous @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL A1M.json" - }, - { - "name": "Panchroma PLA Luminous @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Luminous @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL P1P.json" - }, - { - "name": "Panchroma PLA Luminous @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Luminous @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL X1.json" - }, - { - "name": "Panchroma PLA Luminous @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Luminous @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL X1C.json" - }, - { - "name": "Panchroma PLA Luminous @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Luminous @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Marble @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL A1.json" - }, - { - "name": "Panchroma PLA Marble @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Marble @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL A1M.json" - }, - { - "name": "Panchroma PLA Marble @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Marble @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL P1P.json" - }, - { - "name": "Panchroma PLA Marble @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Marble @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL X1.json" - }, - { - "name": "Panchroma PLA Marble @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Marble @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL X1C.json" - }, - { - "name": "Panchroma PLA Marble @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Marble @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Matte @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL A1.json" - }, - { - "name": "Panchroma PLA Matte @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Matte @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL A1M.json" - }, - { - "name": "Panchroma PLA Matte @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Matte @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL P1P.json" - }, - { - "name": "Panchroma PLA Matte @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Matte @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL X1.json" - }, - { - "name": "Panchroma PLA Matte @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Matte @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL X1C.json" - }, - { - "name": "Panchroma PLA Matte @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Matte @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Metallic @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL A1.json" - }, - { - "name": "Panchroma PLA Metallic @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Metallic @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL A1M.json" - }, - { - "name": "Panchroma PLA Metallic @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Metallic @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL P1P.json" - }, - { - "name": "Panchroma PLA Metallic @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Metallic @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL X1.json" - }, - { - "name": "Panchroma PLA Metallic @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Metallic @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL X1C.json" - }, - { - "name": "Panchroma PLA Metallic @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Metallic @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Neon @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL A1.json" - }, - { - "name": "Panchroma PLA Neon @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Neon @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL A1M.json" - }, - { - "name": "Panchroma PLA Neon @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Neon @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL P1P.json" - }, - { - "name": "Panchroma PLA Neon @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Neon @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL X1.json" - }, - { - "name": "Panchroma PLA Neon @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Neon @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL X1C.json" - }, - { - "name": "Panchroma PLA Neon @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Neon @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Silk @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL A1.json" - }, - { - "name": "Panchroma PLA Silk @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Silk @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL A1M.json" - }, - { - "name": "Panchroma PLA Silk @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Silk @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL P1P.json" - }, - { - "name": "Panchroma PLA Silk @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Silk @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL X1.json" - }, - { - "name": "Panchroma PLA Silk @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Silk @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Silk @BBL X1C.json" - }, - { - "name": "Panchroma PLA Stain @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL A1.json" - }, - { - "name": "Panchroma PLA Stain @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Stain @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL A1M.json" - }, - { - "name": "Panchroma PLA Stain @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Stain @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL P1P.json" - }, - { - "name": "Panchroma PLA Stain @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Stain @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL X1.json" - }, - { - "name": "Panchroma PLA Stain @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Stain @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL X1C.json" - }, - { - "name": "Panchroma PLA Stain @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Stain @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Starlight @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL A1.json" - }, - { - "name": "Panchroma PLA Starlight @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Starlight @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL A1M.json" - }, - { - "name": "Panchroma PLA Starlight @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Starlight @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL P1P.json" - }, - { - "name": "Panchroma PLA Starlight @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Starlight @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL X1.json" - }, - { - "name": "Panchroma PLA Starlight @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Starlight @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL X1C.json" - }, - { - "name": "Panchroma PLA Starlight @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Starlight @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL A1.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL A1M.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL P1P.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL X1.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL X1C.json" - }, - { - "name": "Panchroma PLA Temp Shift @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Temp Shift @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Translucent @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL A1.json" - }, - { - "name": "Panchroma PLA Translucent @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Translucent @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL A1M.json" - }, - { - "name": "Panchroma PLA Translucent @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Translucent @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL P1P.json" - }, - { - "name": "Panchroma PLA Translucent @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Translucent @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL X1.json" - }, - { - "name": "Panchroma PLA Translucent @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA Translucent @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL X1C.json" - }, - { - "name": "Panchroma PLA Translucent @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA Translucent @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL A1", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL A1.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL A1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL A1M", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL A1M.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL P1P", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL P1P.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL X1", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL X1.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL X1 0.2 nozzle.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL X1C", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL X1C.json" - }, - { - "name": "Panchroma PLA UV Shift @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL A1", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL A1.json" - }, - { - "name": "PolyLite PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL A1M", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL A1M.json" - }, - { - "name": "PolyLite PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL P1P", - "sub_path": "filament/P1P/PolyLite PLA @BBL P1P.json" - }, - { - "name": "PolyLite PLA @BBL X1", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL X1.json" - }, - { - "name": "PolyLite PLA @BBL X1C", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL X1C.json" - }, - { - "name": "PolyLite PLA Pro @BBL A1", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL A1.json" - }, - { - "name": "PolyLite PLA Pro @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL A1 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA Pro @BBL A1M", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL A1M.json" - }, - { - "name": "PolyLite PLA Pro @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL A1M 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA Pro @BBL P1P", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL P1P.json" - }, - { - "name": "PolyLite PLA Pro @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA Pro @BBL X1", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL X1.json" - }, - { - "name": "PolyLite PLA Pro @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL X1 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA Pro @BBL X1C", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL X1C.json" - }, - { - "name": "PolyLite PLA Pro @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA Pro @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyTerra PLA @BBL A1", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL A1.json" - }, - { - "name": "PolyTerra PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "PolyTerra PLA @BBL A1M", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL A1M.json" - }, - { - "name": "PolyTerra PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "PolyTerra PLA @BBL P1P", - "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P.json" - }, - { - "name": "PolyTerra PLA @BBL X1", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL X1.json" - }, - { - "name": "PolyTerra PLA @BBL X1C", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL X1C.json" - }, - { - "name": "Polymaker HT-PLA @BBL A1", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL A1.json" - }, - { - "name": "Polymaker HT-PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA @BBL A1M", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL A1M.json" - }, - { - "name": "Polymaker HT-PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA @BBL P1P", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL P1P.json" - }, - { - "name": "Polymaker HT-PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA @BBL X1", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL X1.json" - }, - { - "name": "Polymaker HT-PLA @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA @BBL X1C", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL X1C.json" - }, - { - "name": "Polymaker HT-PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL A1", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL A1.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL A1 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL A1 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL A1M", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL A1M.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL P1P", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL P1P.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL X1", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL X1.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL X1 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL X1 0.2 nozzle.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL X1C", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL X1C.json" - }, - { - "name": "Polymaker HT-PLA-GF @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA Marble @BBL A1", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL A1.json" - }, - { - "name": "SUNLU PLA Marble @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL A1M.json" - }, - { - "name": "SUNLU PLA Marble @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL P1P.json" - }, - { - "name": "SUNLU PLA Marble @BBL X1", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL X1.json" - }, - { - "name": "SUNLU PLA Marble @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU Marble PLA @BBL X1C.json" - }, - { - "name": "SUNLU PLA Matte @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1.json" - }, - { - "name": "SUNLU PLA Matte @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA Matte @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1M.json" - }, - { - "name": "SUNLU PLA Matte @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL A1M 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA Matte @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL P1P.json" - }, - { - "name": "SUNLU PLA Matte @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL P1P 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA Matte @BBL X1", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1.json" - }, - { - "name": "SUNLU PLA Matte @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1C.json" - }, - { - "name": "SUNLU PLA Matte @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA Matte @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL X1", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C.json" - }, - { - "name": "SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ @BBL A1", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1.json" - }, - { - "name": "SUNLU PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1M.json" - }, - { - "name": "SUNLU PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL A1M 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL P1P.json" - }, - { - "name": "SUNLU PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL P1P 0.2 nozzle.json" - }, - { - "name": "SUNLU PLA+ @BBL X1", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1.json" - }, - { - "name": "SUNLU PLA+ @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1C.json" - }, - { - "name": "SUNLU PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PLA+ @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL A1", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1 0.2 nozzle.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M 0.2 nozzle.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P 0.2 nozzle.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL X1", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C.json" - }, - { - "name": "SUNLU Silk PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU Wood PLA @BBL A1", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL A1.json" - }, - { - "name": "SUNLU Wood PLA @BBL A1M", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL A1M.json" - }, - { - "name": "SUNLU Wood PLA @BBL P1P", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL P1P.json" - }, - { - "name": "SUNLU Wood PLA @BBL X1", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL X1.json" - }, - { - "name": "SUNLU Wood PLA @BBL X1C", - "sub_path": "filament/SUNLU/SUNLU Wood PLA @BBL X1C.json" - }, - { - "name": "eSUN PLA+ @BBL A1", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1.json" - }, - { - "name": "eSUN PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1 0.2 nozzle.json" - }, - { - "name": "eSUN PLA+ @BBL A1M", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1M.json" - }, - { - "name": "eSUN PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL A1M 0.2 nozzle.json" - }, - { - "name": "eSUN PLA+ @BBL P1P", - "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P.json" - }, - { - "name": "eSUN PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json" - }, - { - "name": "eSUN PLA+ @BBL X1", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL X1.json" - }, - { - "name": "eSUN PLA+ @BBL X1C", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL X1C.json" - }, - { - "name": "eSUN PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/eSUN/eSUN PLA+ @BBL X1C 0.2 nozzle.json" - }, { "name": "Generic PP @BBL A1", "sub_path": "filament/Generic PP @BBL A1.json" @@ -3941,18 +2525,6 @@ "name": "Generic ABS @BBL X1E 0.2 nozzle", "sub_path": "filament/Generic ABS @BBL X1E 0.2 nozzle.json" }, - { - "name": "PolyLite ABS @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite ABS @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite ABS @BBL X1E", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL X1E.json" - }, { "name": "Bambu ASA @BBL X1E", "sub_path": "filament/Bambu ASA @BBL X1E.json" @@ -3973,18 +2545,6 @@ "name": "Generic ASA @BBL X1E 0.2 nozzle", "sub_path": "filament/Generic ASA @BBL X1E 0.2 nozzle.json" }, - { - "name": "PolyLite ASA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite ASA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite ASA @BBL X1E", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL X1E.json" - }, { "name": "Bambu PA-CF @BBL X1E", "sub_path": "filament/Bambu PA-CF @BBL X1E.json" @@ -4065,30 +2625,6 @@ "name": "Generic PETG-CF @BBL A1M", "sub_path": "filament/P1P/Generic PETG-CF @BBL A1M.json" }, - { - "name": "PolyLite PETG @BBL A1M 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL A1M 0.2 nozzle.json" - }, - { - "name": "PolyLite PETG @BBL P1P 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite PETG @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PETG @BBL X1C 0.2 nozzle.json" - }, - { - "name": "SUNLU PETG @BBL A1M 0.4 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M.json" - }, - { - "name": "SUNLU PETG @BBL A1M 0.2 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M 0.2 nozzle.json" - }, - { - "name": "SUNLU PETG @BBL A1M 0.8 nozzle", - "sub_path": "filament/SUNLU/SUNLU PETG @BBL A1M 0.8 nozzle.json" - }, { "name": "Bambu PLA Glow @BBL P1P 0.2 nozzle", "sub_path": "filament/Bambu PLA Glow @BBL P1P 0.2 nozzle.json" @@ -4116,330 +2652,6 @@ { "name": "Generic PLA High Speed @BBL X1C 0.2 nozzle", "sub_path": "filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture Matte PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture Matte PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Matte PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture Matte PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyTerra PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "PolyTerra PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyTerra PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "PolyLite ABS @BBL X1E 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ABS @BBL X1E 0.2 nozzle.json" - }, - { - "name": "PolyLite ASA @BBL X1E 0.2 nozzle", - "sub_path": "filament/Polymaker/PolyLite ASA @BBL X1E 0.2 nozzle.json" - }, - { - "name": "AliZ PA-CF @P1-X1", - "sub_path": "filament/AliZ/AliZ PA-CF @P1-X1.json" - }, - { - "name": "AliZ PETG @P1-X1", - "sub_path": "filament/AliZ/AliZ PETG @P1-X1.json" - }, - { - "name": "AliZ PETG-CF @P1-X1", - "sub_path": "filament/AliZ/AliZ PETG-CF @P1-X1.json" - }, - { - "name": "AliZ PETG-Metal @P1-X1", - "sub_path": "filament/AliZ/AliZ PETG-Metal @P1-X1.json" - }, - { - "name": "AliZ PLA @P1-X1", - "sub_path": "filament/AliZ/AliZ PLA @P1-X1.json" - }, - { - "name": "Overture ASA @BBL X1", - "sub_path": "filament/Overture/Overture ASA @BBL X1.json" - }, - { - "name": "Overture ASA @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture ASA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture ASA @BBL X1C", - "sub_path": "filament/Overture/Overture ASA @BBL X1C.json" - }, - { - "name": "Overture ASA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture ASA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Air PLA @BBL A1", - "sub_path": "filament/Overture/Overture Air PLA @BBL A1.json" - }, - { - "name": "Overture Air PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Air PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Air PLA @BBL A1M", - "sub_path": "filament/Overture/Overture Air PLA @BBL A1M.json" - }, - { - "name": "Overture Air PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture Air PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Air PLA @BBL P1P", - "sub_path": "filament/Overture/Overture Air PLA @BBL P1P.json" - }, - { - "name": "Overture Air PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture Air PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Air PLA @BBL X1", - "sub_path": "filament/Overture/Overture Air PLA @BBL X1.json" - }, - { - "name": "Overture Air PLA @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Air PLA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture Air PLA @BBL X1C", - "sub_path": "filament/Overture/Overture Air PLA @BBL X1C.json" - }, - { - "name": "Overture Air PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture Air PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Easy PLA @BBL A1", - "sub_path": "filament/Overture/Overture Easy PLA @BBL A1.json" - }, - { - "name": "Overture Easy PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Easy PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Easy PLA @BBL A1M", - "sub_path": "filament/Overture/Overture Easy PLA @BBL A1M.json" - }, - { - "name": "Overture Easy PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture Easy PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Easy PLA @BBL P1P", - "sub_path": "filament/Overture/Overture Easy PLA @BBL P1P.json" - }, - { - "name": "Overture Easy PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture Easy PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Easy PLA @BBL X1", - "sub_path": "filament/Overture/Overture Easy PLA @BBL X1.json" - }, - { - "name": "Overture Easy PLA @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Easy PLA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture Easy PLA @BBL X1C", - "sub_path": "filament/Overture/Overture Easy PLA @BBL X1C.json" - }, - { - "name": "Overture Easy PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture Easy PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Rock PLA @BBL A1", - "sub_path": "filament/Overture/Overture Rock PLA @BBL A1.json" - }, - { - "name": "Overture Rock PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Rock PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Rock PLA @BBL A1M", - "sub_path": "filament/Overture/Overture Rock PLA @BBL A1M.json" - }, - { - "name": "Overture Rock PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture Rock PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Rock PLA @BBL P1P", - "sub_path": "filament/Overture/Overture Rock PLA @BBL P1P.json" - }, - { - "name": "Overture Rock PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture Rock PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Rock PLA @BBL X1", - "sub_path": "filament/Overture/Overture Rock PLA @BBL X1.json" - }, - { - "name": "Overture Rock PLA @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Rock PLA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture Rock PLA @BBL X1C", - "sub_path": "filament/Overture/Overture Rock PLA @BBL X1C.json" - }, - { - "name": "Overture Rock PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture Rock PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Silk PLA @BBL A1", - "sub_path": "filament/Overture/Overture Silk PLA @BBL A1.json" - }, - { - "name": "Overture Silk PLA @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Silk PLA @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Silk PLA @BBL A1M", - "sub_path": "filament/Overture/Overture Silk PLA @BBL A1M.json" - }, - { - "name": "Overture Silk PLA @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture Silk PLA @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Silk PLA @BBL P1P", - "sub_path": "filament/Overture/Overture Silk PLA @BBL P1P.json" - }, - { - "name": "Overture Silk PLA @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture Silk PLA @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Silk PLA @BBL X1", - "sub_path": "filament/Overture/Overture Silk PLA @BBL X1.json" - }, - { - "name": "Overture Silk PLA @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Silk PLA @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture Silk PLA @BBL X1C", - "sub_path": "filament/Overture/Overture Silk PLA @BBL X1C.json" - }, - { - "name": "Overture Silk PLA @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture Silk PLA @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture Super PLA+ @BBL A1", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL A1.json" - }, - { - "name": "Overture Super PLA+ @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture Super PLA+ @BBL A1M", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL A1M.json" - }, - { - "name": "Overture Super PLA+ @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture Super PLA+ @BBL P1P", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL P1P.json" - }, - { - "name": "Overture Super PLA+ @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture Super PLA+ @BBL X1", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL X1.json" - }, - { - "name": "Overture Super PLA+ @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture Super PLA+ @BBL X1C", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL X1C.json" - }, - { - "name": "Overture Super PLA+ @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture Super PLA+ @BBL X1C 0.2 nozzle.json" - }, - { - "name": "Overture TPU @BBL A1", - "sub_path": "filament/Overture/Overture TPU @BBL A1.json" - }, - { - "name": "Overture TPU @BBL A1 0.2 nozzle", - "sub_path": "filament/Overture/Overture TPU @BBL A1 0.2 nozzle.json" - }, - { - "name": "Overture TPU @BBL A1M", - "sub_path": "filament/Overture/Overture TPU @BBL A1M.json" - }, - { - "name": "Overture TPU @BBL A1M 0.2 nozzle", - "sub_path": "filament/Overture/Overture TPU @BBL A1M 0.2 nozzle.json" - }, - { - "name": "Overture TPU @BBL P1P", - "sub_path": "filament/Overture/Overture TPU @BBL P1P.json" - }, - { - "name": "Overture TPU @BBL P1P 0.2 nozzle", - "sub_path": "filament/Overture/Overture TPU @BBL P1P 0.2 nozzle.json" - }, - { - "name": "Overture TPU @BBL X1", - "sub_path": "filament/Overture/Overture TPU @BBL X1.json" - }, - { - "name": "Overture TPU @BBL X1 0.2 nozzle", - "sub_path": "filament/Overture/Overture TPU @BBL X1 0.2 nozzle.json" - }, - { - "name": "Overture TPU @BBL X1C", - "sub_path": "filament/Overture/Overture TPU @BBL X1C.json" - }, - { - "name": "Overture TPU @BBL X1C 0.2 nozzle", - "sub_path": "filament/Overture/Overture TPU @BBL X1C 0.2 nozzle.json" } ], "machine_list": [ diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index bb04be3c95..36b0639d13 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1901,14 +1901,17 @@ void Tab::apply_config_from_cache() was_applied = static_cast(this)->apply_extruder_cnt_from_cache(); if (!m_cache_config.empty()) { + // Apply to edited preset (官方版本的简单实现) m_presets->get_edited_preset().config.apply(m_cache_config); m_cache_config.clear(); - was_applied = true; } - if (was_applied) + if (was_applied) { update_dirty(); + // 标记为 dirty 以保留修改 + m_presets->get_edited_preset().is_dirty = true; + } BOOST_LOG_TRIVIAL(info) << __FUNCTION__<filament_presets.size(); - - load_current_preset(); - // Orca: update presets for the selected printer if (m_type == Preset::TYPE_PRINTER && wxGetApp().app_config->get_bool("remember_printer_config")) { - /*m_preset_bundle->update_selections(*wxGetApp().app_config); - int extruders_count = - m_preset_bundle->printers.get_edited_preset().config.opt("nozzle_diameter")->values.size(); - bool support_multi_material = - m_preset_bundle->printers.get_edited_preset().config.opt("single_extruder_multi_material")->getBool(); - - if (!support_multi_material) { - m_preset_bundle->set_num_filaments(extruders_count); - } - wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size());*/ - if (preset_name.find("Snapmaker U1") != std::string::npos) { + // 在 update_selections() 改变耗材数量之前先保存旧数量和颜色 + size_t old_filament_count = m_preset_bundle->filament_presets.size(); + std::vector old_filament_colors = wxGetApp().plater()->get_extruder_colors_from_plater_config(); + std::vector old_filament_presets = m_preset_bundle->filament_presets; + m_preset_bundle->update_selections(*wxGetApp().app_config); - if (old_filament_count > m_preset_bundle->filament_presets.size()) { - m_preset_bundle->filament_presets.resize(old_filament_count, m_preset_bundle->filament_presets[0]); - } + + // 恢复耗材预设到原来的数量和预设名称(保持类型自适应) + m_preset_bundle->filament_presets = old_filament_presets; + + // 恢复原来的颜色,保持用户设置的耗材颜色不变 + wxGetApp().preset_bundle->project_config.option("filament_colour")->values = old_filament_colors; + + // 重要:立即保存颜色到配置文件,这样下次切换时也会保持 + std::string filament_colors_str = boost::algorithm::join(old_filament_colors, ","); + wxGetApp().app_config->set_printer_setting(preset_name, "filament_colors", filament_colors_str); + wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size()); } else { + // 非 U1 机型:使用默认行为 m_preset_bundle->update_selections(*wxGetApp().app_config); wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size()); } - - - } + load_current_preset(); if (delete_third_printer) { wxGetApp().CallAfter([filament_presets, process_presets]() { @@ -5400,6 +5400,8 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/, }); } + // Trigger the on_presets_changed event to apply cached config for dependent tabs + on_presets_changed(); } if (technology_changed) @@ -5416,11 +5418,6 @@ bool Tab::may_discard_current_dirty_preset(PresetCollection* presets /*= nullptr if (presets == nullptr) presets = m_presets; UnsavedChangesDialog dlg(m_type, presets, new_printer_name, no_transfer); - - if (dlg.getUpdateItemCount() == 0) { - // no need to save - return true; - } if (dlg.ShowModal() == wxID_CANCEL) return false;