Commit Graph

179 Commits

Author SHA1 Message Date
Ian Bassi
3db37d004a Fix + Support 'Default' filament option (index 0) (#13887)
* Support 'Default' filament option (index 0)

Treat filament index 0 as the new "Default" (use active object/part filament) instead of using 1. Update config defaults and tooltips for wall/sparse/solid infill filament options (min/default -> 0, tooltip explains "Default"). Adjust normalization and propagation logic to respect explicit feature overrides and only apply base extruder when feature values are zero; only copy sparse->solid infill when sparse > 0. Introduce FeatureFilamentOverrideMask and clamp_feature_filament_to_valid to resolve and clamp feature filaments. Update UI lists and selection behavior to expose a "Default" entry and handle zero-based indices in PartPlate and Plater.

* enable_filament_for_features option

Co-Authored-By: LixNix <105106115+lixnix@users.noreply.github.com>

* \n

* Allow wipe_tower_filament to equal nozzle count

Relax the assertion in Print::extruders to permit wipe_tower_filament == config().nozzle_diameter.size(). The configuration value is 1-based and the code subtracts 1 when pushing the extruder index, so equality should be valid and selecting the last nozzle should not trigger an assertion.

* Revert "Allow wipe_tower_filament to equal nozzle count"

This reverts commit 2c97657432.

* Revert "enable_filament_for_features option"

This reverts commit 01c13baedd.

* Migrate legacy feature filament defaults

Add migration logic to convert legacy feature filament selections from 1 to 0 for older 3mf files. Introduces a local migrate_legacy_feature_filament_defaults lambda in src/OrcaSlicer.cpp and src/slic3r/GUI/Plater.cpp that scans keys (wall_filament, sparse_infill_filament, solid_infill_filament, support_filament, support_interface_filament) on configs/objects/volumes, updates values, counts conversions and logs the result. Also adds a Semver check for "2.4.0-dev" in OrcaSlicer to trigger the migration for files older than that version. This preserves expected default filament selections when loading older project files.

* Update OrcaSlicer.cpp

* Extract migration helper to ConfigMigrations

Centralize legacy feature-filament default migration by moving the duplicated lambda into ConfigMigrations::migrate_legacy_feature_filament_defaults (src/libslic3r/Config.cpp) and declaring it in Config.hpp. Update OrcaSlicer.cpp and slic3r/GUI/Plater.cpp to call the new function instead of inline lambdas. The helper converts specific feature filament keys (wall_filament, sparse_infill_filament, solid_infill_filament, support_filament, support_interface_filament) from int 1 to 0 and returns the count of conversions to avoid duplicated migration logic.

* Remove DynamicFilamentList1Based and consolidate lists

Delete the specialized DynamicFilamentList1Based struct and its global instance. Update Choice registrations to use the single dynamic_filament_list for wall, sparse_infill and solid_infill filaments, and remove the extra update call for the removed instance. This consolidates filament choice handling and removes duplicated logic in Plater.cpp.

* move it

* fix objects

* Update Config.hpp

* Update profiles
2026-05-29 10:54:26 +08:00
Noisyfox
ba4d2eeae4 Fix crash when you have custom profile set to multi-extruder but the base printer is semm (#13896) 2026-05-28 18:11:36 +08:00
SoftFever
3d250dc52c Fix crash for preset sync during startup (#13797) 2026-05-22 19:02:49 +08:00
SoftFever
484ce81e38 Fix sidebar filament count for multi-extruder printers (#13706)
load_selections() and update_selections() size the parallel project_config
arrays (filament_colour, filament_colour_type, filament_map) off
filament_presets.size(). When the saved list is shorter than the printer's
nozzle count — never-used printer, hand-trimmed conf, or fewer filament_NN
entries than nozzles — the loaded colors get truncated and the sidebar
starts up one combo short.
2026-05-18 01:18:09 +08:00
gedanke
5a136a25d1 perf: speed up startup and show progress in splash screen (#13667)
* perf: speed up startup and show progress in splash screen

Cold-start was ~15 s. Profiled in GUI_App::on_init_inner: 5 s in
preset_bundle->load_presets (sequential vendor loading of ~3000 JSON
profile files), 3.7 s in new MainFrame(), and a 1.5 s splash screen
that closed long before init finished — so the user stared at a
frozen blank screen for several seconds with no feedback.

Changes:

- PresetBundle::load_system_presets_from_json: parallelize vendor
  loading with TBB. ORCA_FILAMENT_LIBRARY is loaded first
  synchronously (it is the inheritance base for filaments); the
  remaining vendors are loaded in parallel into separate PresetBundle
  instances, then sequentially merged. On a typical setup this drops
  load_presets from ~5 s to ~3.5 s; the saving scales with vendor
  count and CPU cores.

- SplashScreen: remove the wxSPLASH_TIMEOUT flag so the splash stays
  visible until the main window is shown explicitly, and add status
  updates at each slow init phase ("Loading printer and filament
  profiles", "Creating main window", "Loading current preset",
  "Showing main window"). The splash is destroyed right after
  mainframe->Show(true).

- MainFrame: FileHistory::LoadThumbnails moved to a detached
  background thread. The previous synchronous call opened every recent
  3MF file at startup — on macOS that triggered the TCC permission
  dialog for ~/Downloads mid-launch, freezing the whole app until the
  user clicked. Letting it run in the background means the UI is
  responsive from the start and thumbnails populate when ready.

* revert: keep LoadThumbnails on the main thread (review feedback)

SoftFever pointed out the detached thread introduces race conditions
(e.g. MainFrame::open_recent_project() reading while the thread writes
m_thumbnails) and that thumbnails may not appear if the homepage shows
before it finishes. LoadThumbnails already uses tbb::parallel_for
internally, so the call-site offload gave no real speedup. Reverted to
the original synchronous call. The macOS TCC-dialog concern that
motivated this will be handled properly in the lazy-init refactor.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-16 14:42:25 +08:00
SoftFever
2cc865f2aa Fixed a crash occurs when switching between multi tool printers 2026-05-11 22:14:21 +08:00
SoftFever
107c2dfbbd The "Default Filament" may saved in the OrcaSlicer.conf which caused … (#13570)
The "Default Filament" may saved in the OrcaSlicer.conf which caused misleading confusions. Ignore it so Orca won't select it on next loading.
2026-05-11 22:11:26 +08:00
SoftFever
02c9ab6a02 update profile validator (#13494) 2026-05-06 18:43:23 +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
Noisyfox
6e30443c62 Fix issue that filament combobox not working after adding extruder (#13194) 2026-04-24 22:29:26 +08:00
Sabriel-Koh
b79d3e1701 Fix: generic filaments not showing on list (#13037) 2026-04-06 14:27:49 +08:00
Argo
ffc8a3e307 Adds (AMS) filament sync options: Only sync color / sync all (#12169)
This PR adds a new filament sync mode setting for device-based filament synchronization.
Users can now choose between syncing both filament preset + color (current behavior) or syncing color only, so calibrated local filament profiles are preserved while still updating slot colors from the printer.
It also includes small UI improvements for the new preference entry and sync status messaging.

<img width="665" height="671" alt="image" src="https://github.com/user-attachments/assets/23980846-0113-48ab-84aa-adf5cdab8ab6" />
2026-02-10 09:12:30 +08:00
SoftFever
cf3d9118ab Merge branch 'main' into feature/orca_network_refactor 2026-02-02 23:51:39 +08:00
SoftFever
977a66be39 Fix active filament preset not matching wizard selection on first run (#12132)
* Fix active filament preset not matching wizard selection on first run

After completing the setup wizard with only a non-PLA filament selected
(e.g. Generic ABS), the active filament preset defaulted to Generic PLA
instead of the user's selection. This happened because load_presets()
falls back to Generic PLA when the initial printer differs from the
preferred printer, and the first_added_filament override was disabled.

Add post-load correction in apply_config() that switches the active
filament to the first compatible wizard-selected filament when the
current active filament is not in the wizard selection. Also fix the
guide JS (22.js, 23.js) to use the filalist attribute for building
the filament array, and add platform-specific build test commands to
CLAUDE.md.

* Replace @System filaments with vendor-specific overrides in wizard

When the wizard selects a generic filament like "Generic ABS @System",
check if a vendor-specific override exists (e.g. BBL "Generic ABS")
and use that instead. This ensures printer-tuned profiles are preferred,
preventing load_installed_filaments from adding unwanted BBL defaults.

When printers from the default bundle are also selected, both variants
are kept since those printers need the @System version.

Also adds diagnostic logging for filament loading in LoadProfileFamily.

* Guard against persisting presets for Default Printer and fix filament override logic

Prevent export_selections from saving stale preset settings for the
built-in "Default Printer" placeholder, which is only the initial state
before a real printer is loaded. Also require a non-default vendor printer
to be selected before replacing @System filaments with vendor-specific
overrides in the wizard, avoiding incorrect filament substitution when
only the default bundle is present.
2026-02-01 21:34:14 +08:00
SoftFever
d782141ca5 Add handling for unknown filament IDs and improve filament type resolution 2026-01-31 19:32:35 +08:00
SoftFever
8d22fad30b badge support 2026-01-31 01:04:21 +08:00
SoftFever
7494c6da7d fix a crash bug when trying to add a filament after sync ams list 2026-01-29 19:10:44 +08:00
SoftFever
ccb7416a6d Fix crashes when loading old 3MF project (#11933)
Enhance backward compatibility for filament extruder variants in 3MF project files
Fix crashes when loading old 3MF project
2026-01-13 09:40:42 +08:00
yw4z
7fa6175b4f Compact Printer Selection UI - part 3 (#11676)
* init

* Update ImageDPIFrame.cpp

* Update Plater.cpp

* update

* update

* Update PresetBundle.cpp

* ensure 0.25 returned as 0.25 instead 0.2

* Merge branch 'main' into compact-printer-selection-UI-part-3

* Merge branch 'main' into compact-printer-selection-UI-part-3

* Merge branch 'main' into compact-printer-selection-UI-part-3
2025-12-23 01:30:03 +08:00
Noisyfox
4c1b6445d3 Validate invalid fields for hidden system profiles (#11455)
* Fix issue that for invisible system profiles, invalid fields are not removed

* Fix wrong note field
2025-11-24 20:11:42 +08:00
Noisyfox
61931d23a4 Fix filament profile import if inherit from vendor generic (#11398)
* Why log user id when importing profile?

* Use `find_preset2` when importing profiles
to properly handle renamed system profiles
2025-11-22 15:38:12 +08:00
Noisyfox
4efaee4c98 Merge branch 'main' into dev/p2s-pr 2025-11-04 10:26:47 +08:00
HYzd766
a351aa8cb0 Multi-color code compatible with QIDI models (#11185)
* The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed

* Merge branch 'main' into main

* Merge branch 'SoftFever:main' into main

* Revert "The 0.30mm layer height configuration for the 0.4 nozzle of the QIDI model has been removed"

This reverts commit 8d296720b8.

* Update Qidi Q2 0.4 nozzle.json

修改Q2打印高度

* Merge branch 'SoftFever:main' into main

* Merge branch 'SoftFever:main' into main

* change machine_gcode

* Merge branch 'main' of https://github.com/HYzd766/OrcaSlicer

* Merge branch 'SoftFever:main' into main

* Multi-color code compatible with QIDI models

* Merge branch 'main' into main

* toggle axis visibility on canvas (#9666)

* toggle axis visibility on canvas

* set show_axes config on toggle

* fix: Add pause and filament change to machine gcodes for Sovol SV08 MAX (#11214)

* Add fixed Ironing Angle setting for uniform surface finish (#11195)

* Initial working fixed ironing angle implemented with new Fixed ironing angle setting

* update documentation

* Combine Fill.is_using_template_angle and Fill.alternate_fill_direction into Fill.fixed_angle

* Rename SurfaceFillParams.is_using_template_angle to SurfaceFillParam.fixed_angle.
2025-11-03 21:34:11 +08:00
xin.zhang
934f32bd8c FIX: remove some warnings
jira: [none]
Change-Id: I0e74b7316d0efe38c65e1f695b2a09eb09103552
(cherry picked from commit 766c6e004145325bcc7a6addfce27842ee9504de)
2025-10-28 15:29:56 +08:00
zhou.xu
59c2e222d8 FIX:Fix the image error of the hot bed
jira: STUDIO-14278
Change-Id: I3d0ee519b7ab057480cfde88be6b52d4f902b522
(cherry picked from commit af66ccee4e63074d4242f05792c1bc927c9ea2f8)
2025-10-28 15:29:49 +08:00
zhou.xu
e4418731eb FIX:Fix the issue of incorrect support material index in override mode
jira: github 7997
Change-Id: I1963a69b34037f41efe2e044361c9ca1cd581977
(cherry picked from commit 3f8af5c858b455c734f72dae601456a7b98a5f97)
2025-10-28 15:29:49 +08:00
Noisyfox
9e889afb53 Fix issues with non-bbl multi-head printers 2025-10-19 22:54:48 +08:00
Noisyfox
56d8bd8fbe Fix option nullable 2025-10-10 16:57:16 +08:00
Noisyfox
4897fd5ea2 Apply extend_default_config_length to system profiles too
so we don't need to worry about default values for different variants
2025-10-08 15:19:25 +08:00
Noisyfox
a8482a1138 Fix AMS and filament list load when switching printer profiles 2025-10-05 21:24:41 +08:00
zhimin.zeng
337d987ec8 ENH: support new auto cali method
jira: STUDIO-10798
Change-Id: I9490b050e93cd556e1d34b1e69e0508eaecec2cd
(cherry picked from commit 7a8b34525ef77d49b6549ecb290e2b1f89c69419)
2025-10-03 23:08:47 +08:00
chunmao.guo
942d023a1e FIX: select printer preset with same printer_variant as old
Change-Id: Iccf72ed34da620f8ca728dfc56585f2ab2a496b9
Jira: STUDIO-11210
(cherry picked from commit 4a270ee6d3b1c1b6bb90cdf6933cae94f59e3a2a)
2025-10-02 17:07:21 +08:00
chunmao.guo
e56774ad71 FIX: get_similar_printer_preset only visit system preset
Change-Id: Ib219e76cba37ace7b81f69e63f4edd1edb25ddc4
Jira: STUDIO-10338
(cherry picked from commit 0b4795fd10a9d8fd4fd2fe32d03cd7efec9236e9)
2025-10-02 17:07:21 +08:00
maosheng.wei
e05d81c797 FIX: Fix the issue where the 'get_imilar_printer_preset' method returns a null pointer
Jira: 9935

Change-Id: I4b001721780162d656b73df316387a33967e4a2c
(cherry picked from commit 2ec50f771f07d7ca6dafde77b7683eb18ee7c554)
2025-10-02 17:07:21 +08:00
maosheng.wei
0581fac6e6 FIX: Update the alias of imported presets
Jira: STUDIO-12801

Change-Id: I7583a2022a0f565103953ee0ca742593769da81f
(cherry picked from commit cb470ae21279a555c7f4718673d83e3818b46bf0)
2025-10-02 09:54:18 +08:00
songwei.li
86a828afd2 FIX: Incorrect flush matrix update condition judgment
Due to the decimal portion of floating-point numbers generated during square root extraction, mismatched matrix sizes were mistakenly considered consistent, resulting in the flush matrix size not being corrected. Now we compare the square value to avoid errors.

jira: STUDIO-13727
Change-Id: I1f3768dab186b25c9ac4e85d4eff24913f15b3dc
(cherry picked from commit d0e9a8c3f3086b4ad2bc14bbfebd3d6ceff9eefc)
2025-10-02 09:39:17 +08:00
zhimin.zeng
1ccdf7b43b ENH: add wrapping detection
jira: STUDIO-13192
Change-Id: I0fb5692b18cdb3b7af624a831dcfb0f635b165f0
(cherry picked from commit 89a8b6ea5e34340cba3750416ce3100dcc39f5c2)
(cherry picked from commit 50bc8c10a7b4ddc0b2dfe9cbab438b9d307b7fc0)
2025-09-30 15:32:44 +08:00
fei2.fang
27943f7047 FIX: Correct virtual tray loading and multi-color material display
- Fixed incorrect is_array() check on vtray["cols"], causing virtual tray init failure.
- Rewrote AMS grouping logic using iterators and set<int> for cleaner and safer traversal.

jira: STUDIO-12955

Change-Id: I09a68e259b56864260abb6c59ff9b1bf7ec2823c
(cherry picked from commit 60c47473047a3fba20d59cd974179537c116524d)
2025-09-28 14:19:10 +08:00
fei2.fang
9ee76e4775 NEW: Official filament color selection approved
- Add a filament picker dialog for official color selection
- Enable displaying multiple filament colors in the picker dialog and preview sidebar
- Introduce two new config options:
  - `filament_multi_colors`
  - `filament_color_types`
  to both the application config and the 3MF config

jira: STUDIO-12346

Change-Id: I66f8c1ec9147df4f5948c8a329c1737551280e63
(cherry picked from commit 522dc0bbca49033a1ba9725ca7f6c3ea729691a6)
2025-09-28 14:17:52 +08:00
lane.wei
bb08bb0e6d ENH: presets: add logic to process filament preset splits
jira: STUDIO-12952
Change-Id: I232434fb4b1d53a7379be2f745457a83bf923677
(cherry picked from commit b9f584281ae801a3ee542c1ebd81c6cb7dd35cde)
(cherry picked from commit 9b1f5496aef411218d538a07386fccb2a085435b)
2025-09-28 13:07:55 +08:00
zhimin.zeng
0431ae4e17 FIX: update edited preset when delete filament
jira: STUDIO-12198
Change-Id: Ie1eedf1a8b0acda8fb4292eb970f4aa416fa9181
(cherry picked from commit 9c8530946d888030061cc87b8a35c24ed583506e)
2025-09-25 17:21:54 +08:00
zhou.xu
2ba649d7ef FIX:add bottom texture
jira: STUDIO-11342
Change-Id: I69fd573b4d7b05135d5f280cf42d367421664cff
(cherry picked from commit 645f93fac732b8794aa1e99301bfe179a74915a7)
(cherry picked from commit 803a1dffde0f66c3076ae4fc80d4b821f34b03fc)
2025-09-25 14:42:57 +08:00
xun.zhang
e1626c26b1 FIX: add protection when sync presets from other printers
jira:STUDIO-12575

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I5a22129fe12a3600dcc4e3f387374122e349e38c
(cherry picked from commit 21863f925db1eeb1db79ba5859840aa23f852180)
2025-09-25 09:03:58 +08:00
xun.zhang
3c051f4180 FIX: invalid params in user preset load
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I7e9cdabb2d9c285db841c810f32aee5943b4db82
(cherry picked from commit ff8d764e7256cec1e7cd1d4d3d034590eb846f45)
(cherry picked from commit fb0461f3459afcfc80165442277ba8c54e232a39)
2025-09-24 14:37:18 +08:00
lane.wei
ae72d3345f ENH: config: add nill load/save logic for user config
Change-Id: I8da6c5b345cc088862f2c720aeb742b9617ff3e7
(cherry picked from commit 603f93d97f0ad70e01e120854887142ab05ee089)
2025-09-24 14:17:53 +08:00
xin.zhang
e758b77ab7 ENH: add some check job
jira: [STUDIO-11883]
Change-Id: I9a112b10b18d4c4f4bee5c8076b22f46fb63b13f
(cherry picked from commit 15c7bb729085ec65fee8cc36a5058ac5e883ceb8)
2025-09-21 16:25:57 +08:00
chunmao.guo
d31c4427aa ENH: printer nozzle diameter select
Change-Id: Ibf8b74e1f93a7c387db3f0fb5e6e733165322322
Jira: STUDIO-9140
(cherry picked from commit c990314567383d3bfff72ac11df6471e0a10f315)
2025-09-21 14:37:37 +08:00
zhimin.zeng
119f16c565 ENH: add filament_printable and delete unprintable and printable list
jira: none

Change-Id: I643ab11831ceac1fe0793510f64b288cbd16415a
(cherry picked from commit 3dd5a601547485bfcc4188727343a52c30bb6a73)
2025-09-21 13:48:08 +08:00
zhou.xu
59e211a4e1 FIX:add exist_multi_color_filment logic
jira: STUDIO-11477
Change-Id: If30e0289096b6d465eace503fbe706fb31742f0c
(cherry picked from commit 1ace58b950de660bf7eac64bab77b0091d95a0c0)
2025-09-21 13:47:57 +08:00
xun.zhang
69be743c68 FIX: incorrect flush volume after sync ams
jira: NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I44d031b1fdcc02adbfc4346314f5001c56a941b8
(cherry picked from commit e854174bc0d2f9965f11da9860f67ce5996e99b0)
2025-09-21 13:47:57 +08:00