Commit Graph

67 Commits

Author SHA1 Message Date
Noisyfox
dd5b755f60 feat: add drying status JSON parsing and DevAms helper methods
Parse dry_status, dry_sub_status, dry_fan statuses,
dry_settings, and dry_cannot_reasons from printer JSON.
Implement IsSupportRemoteDry, AmsIsDrying, get_ams_drying_preset.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-07 13:09:32 +08:00
Noisyfox
9ee7e9aba4 feat: add DevUtilBackend with GetFilamentDryingPreset
Reads filament_dev_ams_drying_* config keys from filament presets
and returns structured DevFilamentDryingPreset data.
2026-07-07 12:51:12 +08:00
Noisyfox
1adfb5f242 feat: add DevFilamentDryingPreset, ctrl method declarations, tray preset getter 2026-07-07 12:13:26 +08:00
Noisyfox
c88535ce9e feat: add drying enums, structs, getters to DevAms
Adds DryCtrlMode, DryStatus, DrySubStatus, DryFanStatus,
CannotDryReason enums and DrySettings struct for AMS drying control.
2026-07-07 12:00:53 +08:00
Noisyfox
272e88a337 refactor: promote DevAmsType to global enum, rename DUMMY to EXT_SPOOL
Matches BambuStudio's DevAmsType naming convention.
2026-07-07 11:49:55 +08:00
SoftFever
6f6fc6ddfe Fixes a possible null dereference in DeviceManager::check_pushing() when the selected machine is missing or stale during timer refresh. (#13802)
* Fix selected-machine null deref in device pushing check
2026-05-22 23:52:00 +08:00
Kevin J. Lynagh
8dd1dd8921 Fix filament syncing by fixing nozzle diameter guards (#13330)
* Remove unused `get_printer_preset` calls.

* `Plater::check_printer_initialized` should skip nozzle flow type checks if nozzle is unknown.

Also remove unnecessary `is_multi_extruders` check.

* Remove unused `CalibUtils::is_same_nozzle_diameters()` fn.

* Simplify `CalibUtils::check_printable_status_before_cali`.

The single-arity can delegate to the vectorized arity.

* Add `DevExtruderSystem::NozzleDiameterMatchesOrUnknown` to simply checks.

* Update `CalibrationPresetPage::update_sync_button_status()` to use `NozzleDiameterMatchesOrUnknown`.

Simplify logic by iterating over each extruder and checking for diameter and volume type match.

The previous code had several mistakes (from what I could tell):

- `curr_obj->is_multi_extruders()` doesn't imply exactly 2 extruders
- the single/multi branch served no purpose
- the single branch failed to check the volume type

* Specify `std::fabs` and add explicit import.

Ref: https://github.com/OrcaSlicer/OrcaSlicer/pull/13330#discussion_r3133613736

Not sure how idiomatic this is in C++ / OrcaSlicer codebase, but CoPilot suggested it and it seems reasonable.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-16 19:13:40 +08:00
glowstab
9956ad5b48 X2D Support (#13388)
# Description

Adresses #13294 

- Adds the X2D printer definition, machine presets, process presets,
filament presets, BBL profile index entries, CLI config entries,
filament blacklist updates, and printer/load/calibration/cover assets.
- Updates dual-nozzle handling to use configured toolhead labels and
match Bambu X2D hotend placeholders.
- Adds X2D-specific wipe tower cooling placeholder support and 3MF
filament/nozzle change sequence metadata import/export plumbing.

# Note

I own a P2S and an X2D. That's all. I frankly have no idea if my changes
cause regression on other printers, and have no capability to test. I
know that for my X2D, which runs an AMS, .2mm nozzles, SuperTack, and in
LAN mode, this has been working without issue.

# Screenshots/Recordings/Graphs

<img width="606" height="380" alt="Dual nozzle control"
src="https://github.com/user-attachments/assets/0d1c1063-4621-4097-b97c-d739557bf18c"
/>

*Dual nozzle control*

<img width="726" height="260" alt="image"
src="https://github.com/user-attachments/assets/270355b7-ca67-4ca3-ad19-582b8f11411b"
/>

*Multi nozzle filament override*

<img width="416" height="202" alt="X2D Machine config and dual nozzle
support"
src="https://github.com/user-attachments/assets/6a5c07b2-0d20-4819-8f42-d60731313249"
/>

*X2D Machine config and dual nozzle support*

<img width="397" height="142" alt="Filament for Supports test prints"
src="https://github.com/user-attachments/assets/3c7546bd-0e27-4d56-89b7-d9ca18c976f9"
/>

*Filament for Supports has been used in over 20 hours of test prints*

<img width="210" height="263" alt="Left vs Right filament distinction"
src="https://github.com/user-attachments/assets/03322268-b669-4f14-8d77-c4d96843d219"
/>

*Left vs Right filament distinction*

<img width="557" height="327" alt="Custom filament mapping"
src="https://github.com/user-attachments/assets/c1c4396f-7359-474e-80bd-78fec22f9c82"
/>

*Custom filament mapping*

<img width="556" height="314" alt="Auto map"
src="https://github.com/user-attachments/assets/d83e3217-edce-4340-886e-043962003a30"
/>

*Auto map*

<img width="689" height="664" alt="LAN mode send print with X2D preview
and no errors"
src="https://github.com/user-attachments/assets/76009bbf-31d3-4a6c-979c-8643b487c824"
/>

*LAN mode send print with X2D preview and no errors, dual nozzle
selection*


## Tests

- 20 hours of dual-nozzle printing.
- 100% CTest tests passed
- Validated 208 changed JSON files.

<!--
> A guide for users on how to download the artifacts from this PR.
-->

[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
Fix #13294
2026-05-10 02:21:13 +08:00
Noisyfox
fb1f4a7d24 Automatically select external spool if it's the only installed filament (#13356)
* Clean up code

* Filament mapping select ext slot automatically when no AMS filament inserted (OrcaSlicer/OrcaSlicer#13103)

* Show warning if external filament type does not match the one in sliced file
2026-05-09 13:14:27 +08:00
SoftFever
84d896bbd3 fixes an issue that devmgr ping cloud server every second
Co-authored-by: Copilot <copilot@github.com>
2026-05-03 16:59:30 +08:00
SoftFever
c04be9ab37 Introducing Orca Cloud: https://cloud.orcaslicer.com (#13414)
* Add OrcaCloud sync platform and preset bundle sharing system

  Introduce OrcaCloud, a cloud sync platform for user presets, alongside
  a preset bundle system that enables sharing printer/filament/process
  profiles as local exportable bundles or subscribed cloud bundles.

  OrcaCloud platform:
  - Auth to Orca Cloud
  - Encrypted token storage (file-based or system keychain)
  - User preset sync with
  - Profile migration from default/bambu folders on first login
  - Homepage integration with entrance to cloud.orcaslicer.com

  Preset bundles:
  - Local bundle import/export with bundle_structure.json metadata
  - Subscribed cloud bundles with version-based update checking
  - Thread-safe concurrent bundle access with read-write mutex
  - Canonical bundle preset naming (_local/<id>/... and _subscribed/<id>/...)
  - Bundle presets are read-only; grouped under subheaders in combo boxes
  - PresetBundleDialog with auto-sync toggle, refresh, update notifications
  - Hyperlinked bundle names to cloud bundle pages

  Co-authored-by: Sabriel Koh <sabrielkcr@gmail.com>
  Co-authored-by: Derrick <derrick992110@gmail.com>
  Co-authored-by: Mykola Nahirnyi <mnahirnyi@amcbridge.com>
  Co-authored-by: Ian Chua <iancrb00@gmail.com>
  Co-authored-by: Draginraptor <draginraptor@gmail.com>
  Co-authored-by: ExPikaPaka <112851715+ExPikaPaka@users.noreply.github.com>
  Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
  Co-authored-by: Ocraftyone <Ocraftyone@users.noreply.github.com>
  Co-authored-by: yw4z <ywsyildiz@gmail.com>
  Co-authored-by: peterm-m <101202951+peterm-m@users.noreply.github.com>

* Fixed an issue on Windows it failed to login Orca Cloud with Google account
2026-05-01 18:01:29 +08:00
Kevin Lynagh
5ba71e1198 Allow printing even if nozzle info isn't reported by firmware. (#12814)
* Don't assume 0.4mm nozzle; format as "unknown" if not defined.

* Skip nozzle diameter and hardness checks if nozzle info unknown.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-04-06 12:40:36 +08:00
SoftFever
431943408b fix UI block issues 2026-02-02 18:12:19 +08:00
SoftFever
8d22fad30b badge support 2026-01-31 01:04:21 +08:00
SoftFever
978e3b79b5 refactor 2026-01-26 19:34:14 +08:00
Maciej Wilczyński
a4d4bfff27 Allow selecting specific network plugin versions 2025-12-14 14:26:16 +01:00
xin.zhang
dd7d12ed8b FIX: only A series with old protocol display as AMS_LITE
JIRA: [STUDIO-15101]
Change-Id: I340c14e88c57ca81c0bfb2f3087a46ee88ab4f31
(cherry picked from commit fa9181386b0e973785900b21962b40217e9585bd)
2025-10-30 14:39:57 +08:00
Noisyfox
ab7e782809 set_user_selected_machine no longer works for local machines 2025-10-29 21:51:01 +08:00
Bastien Nocera
69ecdeba71 FIX: Fix missing std::optional declaration
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h:16:10: error: ‘optional’ in namespace ‘std’ does not name a template type
   16 |     std::optional<bool> IsDetectOnInsertEnabled() const { return m_enable_detect_on_insert; };
      |          ^~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h:4:1: note: ‘std::optional’ is defined in header ‘<optional>’; this is probably fixable by adding ‘#include <optional>’
    3 | #include "DevCtrl.h"
  +++ |+#include <optional>
    4 |

/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaSystem.h:174:10: error: ‘optional’ in namespace ‘std’ does not name a template type
  174 |     std::optional<bool>  IsDetectOnInsertEnabled() const { return m_ams_system_setting.IsDetectOnInsertEnabled(); };
      |          ^~~~~~~~
/run/build/BambuStudio/src/slic3r/GUI/DeviceCore/DevFilaSystem.h:13:1: note: ‘std::optional’ is defined in header ‘<optional>’; this is probably fixable by adding ‘#include <optional>’
   12 | #include <wx/colour.h>
  +++ |+#include <optional>
   13 |

(cherry picked from commit fa482b1c0dc7faa2ad87c37eb7f1ea2ce87a5084)
2025-10-28 15:30:05 +08:00
hemai
967b7a5050 ENH: support nozzle refresh for H2D Pro
Jira: [STUDIO-13185]
Change-Id: Ib8b5905c32f83b1f849ad4ed327c9d77826d6a18
(cherry picked from commit c603e0f88be71a301ed2fc7f6fff2a34398b6708)
2025-10-28 15:30:04 +08:00
hemai
104cbb7b9b ENH: support E3D print parts display
Jira: [STUDIO-14908]
Change-Id: Ie8273eb6f74a3e7508f440d2092bb48f2e1dbb10
(cherry picked from commit a4218e991e6367e3f1ee3802e785802df2ad6d41)
2025-10-28 15:30:00 +08:00
xin.zhang
c382a8a9c3 ENH: support_clump_position_calibration
jira: [STUDIO-14896]
Change-Id: I2913a1e4022686889aaa94ee31b787930200d02d
(cherry picked from commit 14370c8910878c2182189b42e013c1323615c310)
2025-10-28 15:30:00 +08:00
xin.zhang
8d3da67254 FIX: the sorting of AMS list
JIRA: [STUDIO-14738] [STUDIO-14651]
Change-Id: I6d4b89edc77383be8afacf9823567bc756c8e2ed
(cherry picked from commit 8defa1f50b4b556c6ebaf2ad533ba09ad3f23e38)
2025-10-28 15:29:58 +08:00
xin.zhang
2234b227c4 ENH: the old protocol only support AMS_LITE
JIRA: [STUDIO-14841]
Change-Id: I6040d54490a79b323fcd7000a638e5fc4b45b0b4
(cherry picked from commit b6274332d7dc8077b2612ef4518a9cbaf12123d9)
2025-10-28 15:29:58 +08:00
xin.zhang
fabc681442 ENH: update how to load_ams_list
JIRA: [STUDIO-14255]
Change-Id: I204f881b72185ee16f8ff204feb6469504f9f86b
(cherry picked from commit 4150ff5c178de02dfa67e6bd90765e35c6a64e99)
2025-10-28 15:29:56 +08:00
xin.zhang
491100a9d2 ENH: support AMS switching for A series; clean class AMSSetting
jira: [STUDIO-14068] [STUDIO-14330]
Change-Id: I6281fbf56f3bf406ef28103998790a2a98c3f5c0
(cherry picked from commit 8ee02ec73076691c482ea6d089a49ea1c99ad10c)
2025-10-28 15:29:55 +08:00
hemai
c6db0f0f85 ENH: limit chamber temperature setting in cooling filt mode
Jira: [STUDIO-14035]
Change-Id: I894ecc3f1628bbdaa86fcfd8a4420e59111af7bb
(cherry picked from commit 5e95c6bcc8aa0b89661f27a4f123442857f7fec7)
2025-10-28 15:29:55 +08:00
xin.zhang
ada573a1fd ENH: update fan control mode sequence
jira: [STUDIO-14589]
Change-Id: I40f71ffe0ec65d7ebb945a06753b03c93135fa55
(cherry picked from commit c2d2bdc9349692a12b7cb0198864b6f6c7e88205)
2025-10-28 15:29:54 +08:00
milk
7608195e17 FIX:add idel heating protection
jira:[STUDIO-14359][STUDIO-14431]

Change-Id: I2ecb6c78c4b28d6f14c45dbb1f905b95a9d8c4ab
(cherry picked from commit f6eee61915b47321c1cb44e3ff2306875c32466b)
2025-10-28 15:29:54 +08:00
hemai
833de25b29 FIX: update dev_name when connect mode switch
Jira: [STUDIO-13463]
Change-Id: I3e90d31660ff0d24439584a1e00c15449c425548
(cherry picked from commit 4f4689d7fde21afcf667d35fa62e9f444afed436)
2025-10-28 15:29:53 +08:00
xin.zhang
8863631c92 FIX: filament loading steps
jira: [STUDIO-14428]
Change-Id: I68612346ef9cb50e302323daa47421c22a87be97
(cherry picked from commit 9fb4b9b6a3a16b08d9dc52a4d6dbc15044275dcf)
2025-10-28 15:29:51 +08:00
xin.zhang
55ed67ef23 ENH: support extension fan check
jira: [STUDIO-14122]
Change-Id: I67c2dff7853fb9f8d1098364f2ecec6dee1a18f1
(cherry picked from commit 022fb9d2e27402c51529b477c75af417c43ead17)
2025-10-28 15:29:50 +08:00
milk
299c7c0bac NEW:Add safety button
jira: [STUDIO-14064]

Change-Id: I6a9be69033ea80c2242561c4e1b0ca5626bc7a51
(cherry picked from commit ac4af3aa1de453330fbf2d58988a6e1ea8d5d445)
2025-10-28 15:29:50 +08:00
xin.zhang
299b821c5f ENH: support mix mapping
jira: [STUDIO-13673]
Change-Id: Ic1c89457f5154c108dbab41850ed49561aa34fde
(cherry picked from commit 12942e0545424e2528cc3f3c9aa6947b76469b3d)
2025-10-28 15:29:50 +08:00
xin.zhang
964a35e9b0 ENH: update filaments_blacklist.json
jira: [STUDIO-14159]
Change-Id: Idde4d1c366024b49d474d8802d9f912711ea3991
(cherry picked from commit 5bdf315e6f68e2e27036e348e70402df38f4c49f)
2025-10-28 15:29:50 +08:00
haolin.tian
e6d8339406 FIX: Improve device switching logic for disconnect and reconnect
jira: none
Change-Id: If9b4081581da7bb7c9cdcc44adcb1b9f490afb3f
(cherry picked from commit 725799eec1aad721e74ec956d14b30369d75446a)
2025-10-28 15:29:48 +08:00
xin.zhang
84dd0449b7 ENH: support cold pull for TPU
jira: [STUDIO-13529]
Change-Id: I6a44da3b2774305db179cfed0781d67e9b5a7e2e
(cherry picked from commit 0225c329c8eb8fee332d2cf9732b83ccd0c1dbb3)
2025-10-28 15:29:47 +08:00
xin.zhang
fedcfc4ea5 ENH: support extension tool; support check extension tool
JIRA: [STUDIO-14122] [STUDIO-14162]
Change-Id: I147d335420fcc7c9a190f570863e38e138cdadcf
(cherry picked from commit db83b9fb6c6399d917b27b74cc573d668737c705)
2025-10-28 15:29:47 +08:00
hemai
a397a7378a ENH: refresh nozzle info from studio
Jira: [STUDIO-13650]
Change-Id: I12dc26d5730c761ccc91d3a4a5f120d422d8a0ff
(cherry picked from commit 2bd7cd9a6a4d9c3370491fb4323a1aabe9a45578)
2025-10-28 15:29:47 +08:00
xin.zhang
1494731eab FIX: check with internal filament type
jira: [STUDIO-14216]
Change-Id: I89e0d62b572872d7e2ea8e6e57ac662b64baf92b
(cherry picked from commit 6767c2334bbfcffa41d4d020ee4f2e183a327cee)
2025-10-28 15:29:47 +08:00
xin.zhang
2626a6bc3b FIX: check close chamber temperature
JIRA: [STUDIO-13676]
Change-Id: I5c2712ade24d20d361d00a0b763dd16479aa5fb1
(cherry picked from commit 7ac3c82fbaf0337351d41f5d65c2ae088f755744)
2025-10-28 15:29:47 +08:00
Noisyfox
4ee98b1807 Fix crash due to modify same collection concurrently 2025-10-07 09:56:39 +08:00
noisyfox
551be1c18b Fix build issue with PCH off 2025-10-05 22:53:58 +08:00
xin.zhang
eac358046c FIX: update the implementation of model series
JIRA: [STUDIO-13728]
Change-Id: Ib9091a0b2b253fa4bdad11e07f8910f6045594ad
(cherry picked from commit b250f817f80ea17e7c1cc37e6c98810e8cfc6cd8)
(cherry picked from commit 4d00f9e32541df9817ef131dc2eb7225675e102f)
2025-10-05 00:10:01 +08:00
xin.zhang
d9d2814b24 Fix: load ext filament for A/P series
JIRA: [STUDIO-14047]
Change-Id: I28736dc7c55a842744b2d3f8731e92384c2ea929
(cherry picked from commit 602541e42b0a7ad6faa3ff604435bc36a1cc1f3f)
2025-10-03 23:13:42 +08:00
xin.zhang
db05e4ac64 ENH: update airducts
jira: [STUDIO-13296]
Change-Id: I5cdb34cc254933be9a91313462a6b03b0dca117b
(cherry picked from commit fbf88ce6f226496723344e60f57632eadfaf5ee9)
2025-10-03 22:18:33 +08:00
hemai
bb43e312b3 ENH: support E3D nozzle flow type
Jira: [STUDIO-13934]
Change-Id: I3818c3881e8a926209f2bac321550f3c7a1a9f0d
(cherry picked from commit 5bb1c2e66ad5bddfcba6898d9bc330217e912e48)
2025-10-03 22:18:20 +08:00
xin.zhang
a12330f4e7 ENH: add some log for traverse
jira: [STUDIO-13728]
Change-Id: Ie4419ecd809bd4392035ad063849f271e687b0f0
(cherry picked from commit 7aa1916fe8491ca1653acc55ee3ac527415b6113)
2025-10-03 22:02:51 +08:00
xin.zhang
eb1eb7e81a ENH: add new part: extinguish
JIRA: [STUDIO-11578]
Change-Id: I39dc15fe022f38d8c775c2675120bbbce05f95f3
(cherry picked from commit 25dc4e37e3681a840df9af7d98bbb134082492ab)
2025-10-03 21:45:14 +08:00
noisyfox
4943c31bd0 Fix friend class 2025-10-02 19:17:44 +08:00