# Description
This commit adds the enhancement of https://github.com/OrcaSlicer/OrcaSlicer/issues/13116
- Adds checkboxes to enable or disable the fan speed override during print or after printing is completed. This allows users to, for example, only override the fan speed during printing whilst leaving the fan speed as is set in the machine gcode at the end.
- Two new flags are added for this: `activate_air_filtration_during_print[extruder]` and `activate_air_filtration_on_completion[extruder]`. These can be used to more finely control machine gcode
- Current filament settings remain as they are: `activate_air_filtration[extruder]` settings are unaffected and by default both new flags are set to true, ensuring the same set behavior as before.
# Screenshots/Recordings/Graphs
<img width="856" height="208" alt="Screenshot From 2026-04-09 18-57-14" src="https://github.com/user-attachments/assets/e71e7de3-2def-4046-b5dc-55bf3b516ce5" />
As you can see there are now checkboxes left of the fan speeds. They have their own tooltip too, which also helps identify the correct flags for users who want to adjust their machine gcode.
## Tests
I have thoroughly tested this on my own computer (CachyOS) and on my printer. I have also carefully checked the gcode in every possible state this is in and ensured that the unsaved changes dialog properly displays the labels for these settings. Flags are set properly, sliced files properly use the flags if you check for them in machine gcode and default behavior is unaffected for those who have already changed settings for air filtration. From what I can see, this does exactly what it should be doing without any issues.
* make initial layer travel move acceleration and jerk configurable
* Update spelling to match UI pattern
* Update min integer and re-order to match patterns
---------
Co-authored-by: Thomas Scheiblauer <tom@sharkbay.at>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Reduce the size of current and new JSONs by standardising them with 1 tab indentation instead of 4 spaces.
This effectively reduces the size by almost 20 MB.
| Current | New |
|---|---|
| 85.2 Mib | 67 Mib |
Used [JQ](https://jqlang.org/) `--tab` to automatically format every current JSON.
> [!NOTE]
> Some profiles had the arrays on the same line, but those created by Orca were in the standard format (each object below the previous one). In some cases, this increases the number of tabs due to the new lines, but the increase is negligible, and this way both the base profiles and those created by Orca maintain the same style.
Previously, wipe tower behavior was determined by checking if the printer
was a QIDI vendor. This introduces a configurable enum (Type 1 / Type 2)
so any printer can select its wipe tower implementation. BBL printers
remain hardcoded to Type 1. Qidi profiles default to Type 1.
The WipeTower2 code path never called construct_mesh(), leaving
wipe_tower_mesh_data as std::nullopt. GCode export then dereferenced
it unconditionally, triggering an assertion failure / crash.
Wipe tower interface features and preheat fixes
Fresh PR branch rebuilt on upstream/main (squash of origin/BBL-studio-wipe-tower-merge) to avoid merge-history issues.
Sorry had to re-create the PR as I did some chaos in my repo with CLI. xD
Fixes issue https://github.com/OrcaSlicer/OrcaSlicer/issues/10971
Description:
Fix wipe tower filament selection and clean up tool ordering. Added wipe_tower_filament handling to WipeTower2 (store config, mark non-selected tools as “soluble,” and use it in toolchange selection) and ensured the configured wipe‑tower extruder is included in the extruder list for ordering. Removed duplicated/merged tool‑ordering code (extra insert_wipe_tower_extruder definition, duplicate declaration, and redundant reorder block) so the tool order logic runs only once.
<img width="1819" height="799" alt="image" src="https://github.com/user-attachments/assets/cef39026-cf6a-46da-a87a-ef895774699f" />
### What was the issue?
The check that validates whether a filament is compatible with the selected build plate type was only executed for Bambu Lab printers.
Other printers skipped this entirely, even though they can also use multiple plate types with different temperature requirements.
This caused cases where:
- incompatible filament/plate combinations went unnoticed,
- users received no warning even when the bed type clearly couldn’t support the selected filament.
### What’s changed?
- The validation block extends beyond BambuLab printers.
- Now all printers get the same compatibility check:
- if a filament requires a bed temperature not supported by the chosen plate,
- Orca shows the same clear error message as it does for BBL printers.
- Show the selected filament preset name (alias if present) in bed/filament mismatch warnings instead of substituting the parent preset.
### Why this helps
- Consistent behavior across all printer brands.
- Prevents invalid filament/plate setups that could cause print failures.
- Makes plate presets more robust and predictable for custom and community printers.
### Notes
- No behavior changes for BBL printers — they keep the existing checks.
- Other printers now benefit from them too.
* 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.
* New materials
* Temps
* Full filament type list
* Improve nozzle temperature range validation messages
Separates minimum and maximum recommended temperature warnings for nozzle configuration + generig °c usage.
Co-Authored-By: Alexandre Folle de Menezes <afmenez@gmail.com>
* Material Updates
Co-Authored-By: Rodrigo <162915171+RF47@users.noreply.github.com>
* petg-cf10 should be petg-cf
options.
* Pla reduced range
* Adjust some temps
* FilamentTempType Temperature-based logic
* chamber temps
* Fromatting
* Filament chamber temperature range support
Introduces get_filament_chamber_temp_range to retrieve safe chamber temperature limits for filament types. Updates ConfigManipulation to use these limits instead of hardcoded values.
* add adhesion coefficient and yield strength
Replaces hardcoded material checks for adhesion coefficient and yield strength with lookup functions using extended FilamentType struct.
* Thermal length
* Fix
* Refactor filament type data to MaterialType class
Moved filament type properties and related lookup functions from PrintConfig.cpp into a new MaterialType class.
* Fix adhesion_coefficient
Co-Authored-By: SoftFever <softfeverever@gmail.com>
---------
Co-authored-by: Alexandre Folle de Menezes <afmenez@gmail.com>
Co-authored-by: Rodrigo <162915171+RF47@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
The translated strings cannot match the correct config, delete the translation of these two opt_key
jira: STUDIO-13989, STUDIO-13988
Change-Id: I5e8ebf342b5bb18c1ca6a88a3916197941c0cb03
(cherry picked from commit a84d9ab466b1f6b1ccb727d4f34cdb7c2eb8e30a)
Added option information to the error prompt to facilitate users to jump to the corresponding option
jira: none
Change-Id: I3f13acac08a1e84625dc22363822989f1eab7ec7
(cherry picked from commit 96b4e6610fa532b74247abe925d8c8d19869bf93)
Add warning about enable_wrapping_detection without prime tower. Note: Only one of this warning, check_multi_filament_valid, and support_enforcer without support can be displayed at the same time.
jira: none
Change-Id: Ic8f0fc7ab62b63af1604e32b7380642741669462
(cherry picked from commit 698c0d16c99e13244101c06d7a3a8ff66ae2e4d0)
Because the function in print.cpp mistakenly considers models with different variable layer height configurations to be the same, the layer height configurations of the copied objects are optimized and overwritten. Fixed function: auto is_print_object_the_same = [this](const PrintObject* object1, const PrintObject* object2)
jira: STUDIO-13507
Change-Id: Ic4b3a479e8984b46a2f9557f65826951b8979646
(cherry picked from commit 2d5137914e9699c4fe9ddbbc76f13b85dbc3a1a9)
In print.cpp, logic was added to skip checking for mixed prints when using the byobject mode. This prevented false positives for single-filament objects, but it also failed to detect mixed prints. This detection has been restored, but separate logic for byobject mode has been added to the detection function: StringObjectException Print::check_multi_filament_valid(const Print& print). This will only prompt a warning when a single object contains high- and low-temperature filaments.
jira: STUDIO-13667
Change-Id: I37622e49b76581ea4a2d78c97ebcd655bb7199e6
(cherry picked from commit 7128758056f1fe11bdd953e7f3d91284b15535a9)