Commit Graph
13 Commits
Author SHA1 Message Date
SoftFever 0d31325df0 feat: Filament Track Switch (H2-series O2L-FTS) support
The Filament Track Switch (H2-series accessory, product code O2L-FTS) feeds
every AMS to both extruders through a two-track switch. Port full support
across the device layer, project config, and GUI.

Device / config:
- Model the switch-aware AMS binding (the set of extruders an AMS can feed
  and which input track A/B feeds it), switch readiness, the O2L-FTS firmware
  module, and the fun2 capability bit for checking a slice against installed
  hardware.
- Register has_filament_switcher and enable_filament_dynamic_map as project
  config that persists with the project and restores from a saved 3mf, and
  force both back to false on every project/printer/CLI load path. Live
  device sync is the only thing that sets them true.

GUI:
- Sidebar sync activates the switch from live device state, attributes each
  AMS to the extruder its input track feeds, shows a floating status icon
  (ready / not-calibrated), and surfaces a one-time tip / not-calibrated
  warning.
- Send dialog gains a non-blocking slice-vs-hardware mismatch warning and a
  blocking error when a slice needs dynamic nozzle mapping but the switch is
  missing or not set up.
- AMS load/unload guards, AMS-view routing glyph + un-calibrated banner +
  hidden external-spool road, and mapping-popup external-spool lockout.
- Filament pickers collapse the per-extruder split into a single deduplicated
  "AMS filaments" group with a smart-assign toggle when the switch is ready.
- Firmware-upgrade panel lists the O2L-FTS accessory and its version.
- Device-provided filament-change steps (ams.cfs) drive the change-step
  display when firmware sends them, including the three switch steps.
- "Load current filament" asks which extruder to feed via a
  FeedDirectionDialog when the switch is calibrated.

Inert without the accessory: every path is gated on the switch being
installed (MQTT aux bit 29, default off) or ready, both project flags default
false, and the per-extruder AMS attribution is byte-identical, so AMS state,
the send/load UI, and sliced g-code are unchanged for every printer that does
not report a Filament Track Switch.
2026-07-09 18:57:05 +08:00
80ef058aaa Bambu H2D: Filament group wiki fix (#12880)
Co-authored-by: yw4z <yw4z@outlook.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-04-16 14:38:26 -03:00
Bastien Nocera 22d6e9de2b FIX: Fix missing wxBitmap{,Button} declaration
In file included from /run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.cpp:1:
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:60:17: error: ‘wxBitmapButton’ was not declared in this scope
   60 |     std::vector<wxBitmapButton*> radio_btns;
      |                 ^~~~~~~~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:60:32: error: template argument 2 is invalid
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:65:14: error: field ‘checked_bmp’ has incomplete type ‘wxBitmap’
   65 |     wxBitmap checked_bmp;
      |              ^~~~~~~~~~~

(cherry picked from commit ab345221437f52606c54c76fd9837bd9dad98d1c)
2025-09-18 23:02:15 +08:00
Bastien Nocera 0cc427ec41 FIX: Fix missing wxTimerEvent declaration
In file included from /run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.cpp:1:
/run/build/BambuStudio/src/slic3r/GUI/FilamentGroupPopup.hpp:33:18: error: ‘wxTimerEvent’ has not been declared
   33 |     void OnTimer(wxTimerEvent &event);
      |                  ^~~~~~~~~~~~

(cherry picked from commit b890f0a39fcb48a1f1e1ee01f2aacf5d2fa35ad6)
2025-09-18 23:02:11 +08:00
Bastien Nocera 7ef078c94d fixup! FIX: Fix missing FilamentMapMode declaration
(cherry picked from commit 13624fb941bedd9afd130fe6209db93f2e4236a9)
2025-09-18 23:02:07 +08:00
xun.zhang 5880625b9c FIX: dark mode in filament group pop up
1.Also modify some tips

jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I4e2abfe24afdf7f0d728a486aa248b8e5accbdf4
(cherry picked from commit 98dad923f8ee3001add10837a9b0a6c1507b47e0)
2025-09-18 14:33:04 +08:00
xun.zhang 1384226447 ENH: refine logic with filament group
1. In slice plate mode,force use plate mode
2. In slice all mode, force use global mode

jira:STUDIO-10390

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I3edb559043fdc52339b7f611643b8f5ac116571d
(cherry picked from commit f042c817a7ed21b4b18915e2a649aed733a80f48)
2025-09-17 09:45:59 +08:00
xun.zhang 19b466ccf0 ENH: add global map mode tag for pop up
1. Add tag to mark the global map mode
2. Fix some wrong usage of bmp in code
3. Fix display error in dark mode

jira:STUDIO-9729

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Idb36a5022c403e02c26d7fe23a95dd6877deca90
(cherry picked from commit 5a2abf7e211327cde57717b5ab7b79b63c967bbd)
2025-09-09 15:40:26 +08:00
xun.zhang 897a78ce9a ENH: refine the logic of filament map dialog
1. Always change the map and mode in plate if plate mode is not default
2. Always add pop up before slice
3. Fix the mapping issue in gcode viewer

jira: studio-9523,studio-9519,studio-9513,studio-9479

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I0d7d5daf081951ea2d49e06565762ac24064e77c
(cherry picked from commit afaa48520e16b6808f05e511ac1cfe91acadc84b)
2025-09-09 11:03:56 +08:00
xun.zhang 347cd4aadd ENH: refine some ui logics with filament map
1. Optimize performance with pop up
2. Optimize display in dark mode

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Ic0f72a42e791fb58b84e7a88d7a34ced3a9e8c38
(cherry picked from commit 481ebc4a4b9353d8c9ef9d6bf64cb0006364e839)
2025-09-07 00:46:58 +08:00
xun.zhang b2e587ce47 FIX: fail to translate in filamnet group pop up
1. Initilize the sentences in construct function
2. Fix some ui bugs

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I991df343932bb60d5ba86f41f641661f2159da47
(cherry picked from commit 05383187e02cc0dec6a541859d44237a63d01820)
2025-09-06 23:53:29 +08:00
xun.zhang a378afde0b FIX: unable to select filament map mode in macos
1. add wxPU_CONTAINS_CONTROLS when construct
2. fix some ui bugs

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I413dbaa35f3f79c97e2db3f8b2cdb5ab55739484
(cherry picked from commit cd23329267a1d2c9d28098d73bc007ce4fd58eb2)
2025-09-06 23:53:01 +08:00
xun.zhang 057a1a4f5d ENH: refine ui logic with filament group
1. Add filament group pop up when slice
2. Add more filament modes in filament dialog
3. Add capsule button

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I8bc3a2e08696e406b89e550a0335a1a36728ee65
(cherry picked from commit f1702a5c3604f685a3b35ea0e83d29bdbbd90f70)
2025-09-06 23:52:20 +08:00