* Linux: prefer discrete GPU on dual-GPU systems via PRIME environment variables
Set DRI_PRIME=1 for AMD/nouveau PRIME setups and __NV_PRIME_RENDER_OFFLOAD/__GLX_VENDOR_LIBRARY_NAME for NVIDIA proprietary driver, only when the NVIDIA kernel module is detected. Uses replace=false to respect user overrides.
* Improves usability on Linux. No more double title bar (#12600)
* Fix double title bar on Linux by removing WM decorations for GTK
* wip
* fix
* finish
* address review comment
Fix crash in PA calibration pattern generation
Reset current extruder ID and clear pointers in set_extruders to prevent dangling pointers when extruders are recreated. Also fixed undefined behavior by checking if the vector is empty before taking max_element.
Co-authored-by: SoftFever <softfeverever@gmail.com>
## Summary
- Change default bed temperature type from "By First filament" to "By Highest Temp"
- Move `bed_temperature_formula` option from develop mode to advanced mode for better accessibility
- Relocate UI control from "Basic Information - Advanced" to "Multimaterial Setup" section where it's more relevant for multi-filament printing
Using the highest temperature of all printed filaments is generally safer for bed adhesion than using the first filament's temperature, especially in multi-material prints where different filaments may require different bed temperatures.
<img width="390" height="239" alt="Screenshot 2026-02-26 at 18 44 56" src="https://github.com/user-attachments/assets/0fe9f8c7-062a-4a7a-8ab3-c52df7e74b26" />
# Description
This PR enhances the GCodeProcessor's time estimation by incorporating Junction Deviation (JD) into the jerk calculations, providing more accurate print time predictions for firmwares that use JD (like modern Marlin).
Key Changes:
- Added JD support to time estimation
- Reads machine_max_junction_deviation (machine limits) and default_junction_deviation (print profile)
- When JD is enabled (>0), replaces traditional X/Y jerk values with JD-based calculation:
$Jerk = \sqrt{2.5\cdot JD \cdot acceleration }$
- Falls back to traditional jerk when JD is not used
# Test:
JD:0.0256mm Accel.: 1000 mm/s²
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/f0e95294-bfca-400e-bffc-8d615d051b70" />
Jerk: 8mm/s (equivalent)
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/8508727e-70f6-49ed-ac19-002db73e957b" />
JD:0.0128mm (4mm/s jerk)
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/91b04d3b-1b9e-48f4-b4b4-5addda2eff57" />
* Add Elegoo filament profiles to OrcaFilamentLibrary
Add 7 Elegoo filament profiles based on manufacturer specifications:
- Elegoo Rapid PETG (high-speed PETG, 240-270°C, 30-600mm/s)
- Elegoo PETG Pro (standard PETG, 230-260°C, 30-270mm/s)
- Elegoo PETG-CF (carbon fiber PETG, 240-270°C, 30-220mm/s)
- Elegoo PLA (standard PLA, 190-230°C, 30-280mm/s)
- Elegoo Rapid PLA+ (high-speed PLA, 190-230°C, 30-600mm/s)
- Elegoo ASA (ASA, 250-280°C, 30-270mm/s)
- Elegoo TPU 95A (flexible TPU, 220-240°C, 30-60mm/s)
All settings sourced from Elegoo's official product specifications.
* Fix dual seam fuzzy painted rev 2 (#11923)
* 2 seam fuzzy 2nd attempt
* Update FuzzySkin.cpp
* Fix debug SVG
* solve bump artifact in extrusion junction joint
* minor fixes
* cleaning
Update FuzzySkin.cpp
* Fix filament override changes not appearing in Unsaved Changes and showing as “Undef category” in preset comparison (#12298)
* Fix an issue that on Windows the Bambu legacy plugin is 01.10.01.09 (#12380)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin (#12400)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin
* Add Pressure Advance visualization support (#11673)
* Add Pressure Advance visualization support
Signed-off-by: minicx <minicx@disroot.org>
* Port Pressure Advance visualization to libvgcode architecture
Adapt PA visualization (originally in commit e3a77259) to work with
the new libvgcode library introduced by upstream PR #10735.
Changes across the libvgcode stack:
- PathVertex: add pressure_advance field
- Types.hpp: add PressureAdvance to EViewType enum
- ViewerImpl: add ColorRange, color mapping, range updates for PA
- LibVGCodeWrapper: pass pressure_advance from MoveVertex to PathVertex
GCodeViewer UI integration:
- Add "Pressure Advance" to view type dropdown
- Add PA color range in legend (3 decimal places)
- Add PA value display in sequential view marker tooltip
- Add PA row in position properties table
The GCodeProcessor PA parsing (M900, M572, SET_PRESSURE_ADVANCE)
is preserved from the original implementation.
* Tag Pressure Advance visualization changes with ORCA comments
Signed-off-by: minicx <minicx@disroot.org>
---------
Signed-off-by: minicx <minicx@disroot.org>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Fix time estimation using wrong machine limits due to broken extruder_id indexing (#12411)
The extruder_id*2 offset in get_axis_max_feedrate/get_axis_max_acceleration
was cherry-picked from BambuStudio's per-nozzle limit system, which OrcaSlicer
never ported. Without that system the limit arrays only have 2 values
([0]=Normal, [1]=Stealth), so any extruder_id > 0 or the uninitialized
value (255) would overshoot the array and fall back to values.back(),
always returning stealth-mode limits and producing incorrect time estimates.
Revert to indexing by time mode only (matching v2.3.1 behavior) and simplify
the M201/M203 handlers to write only the two mode slots they actually use.
* Fix machine envelope G-code emitting wrong limits due to broken extruder_id indexing (#12414)
print_machine_envelope() used get_extruder_id(extruder_id)*2 to index
machine limit arrays that only hold [Normal, Stealth] (2 entries).
For multi-extruder setups this went out-of-bounds, causing wrong M201/M203
values in the G-code which then override the estimator's correct limits.
Same class of bug as c6d1c11ebb but on the G-code writer side.
Changes:
- Remove unused extruder_id param from print_machine_envelope()
- Use .values.front() for M201/M203, matching M204/M205 in same function
- Change get_option_value() fallback from .back() to .front() so any
future out-of-bounds index returns Normal mode instead of Stealth
* update error message when plugin upgrade failed
* Add and update pt-BR translations (#12409)
* Add preference for filament area height to reduce scrolling while using 16+ filaments (#12317)
Fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12284
Adds a preference for filaments area height since every user has different amount of MM units and external filaments
so users can set a value that fits their setups this way
we might see 3 or 6 filaments for each unit on future. thats why i set value as int
used 10 as default value. its good for 2 multimaterial units ( 8 filaments ) and 1 external filament
min value is 8. might be good when no external filaments in use
max value is 99. UI works same as 2.3.1 version
<img width="562" height="122" alt="Screenshot-20260215194149" src="https://github.com/user-attachments/assets/309cec36-8b83-48f3-875f-d5f22a9631e7" />
**BEFORE**
Scrollable area fixed for 10 items. that causes a lot of scrolling whe user has 3 or 4 ams units
<img width="411" height="237" alt="Screenshot-20260215194816" src="https://github.com/user-attachments/assets/fc7823c0-d82a-4d1f-bb5b-56e8dd47abd2" />
**AFTER**
value 10. - 2 multimaterial units ( 8 filaments ) and 1 external filament
<img width="1002" height="250" alt="Screenshot-20260215195243" src="https://github.com/user-attachments/assets/e3238cd1-788e-4ed2-b048-89c63bd323db" />
value 18 - 4 multimaterial units ( 16 filaments ) and 1 external filament
<img width="1001" height="355" alt="Screenshot-20260215195127" src="https://github.com/user-attachments/assets/afe0305e-fcb4-4a51-b8dc-e70a063aa391" />
* Fix: Correct range checking for int and float Config Options + QoL changes in tooltips (#11915)
* Fix float number not working properly for option min/max (#11211)
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Fix: Range check added for coInt options; Ranges and defaults added in tooltips
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Update machine profile for OpenEYE Peacock V2 (#12333)
* OpenEYE Peacock V2 machine profile: Add printer_agent key to enable AMS filament synchronization (Klipper/Moonraker)
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
* Optimize retraction settings in printer profiles to reduce stringing and improve print quality
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
---------
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
* Fix preheat regression bugs (#12438)
Fix preheat regression bugs
revert 769fc137c7
* Fix the issue where `resources/profiles/OrcaFilamentLibrary.json` is not updated accordingly.
---------
Signed-off-by: minicx <minicx@disroot.org>
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Kiss Lorand <50251547+kisslorand@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: minicx <39405619+loss-and-quick@users.noreply.github.com>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Alexandre Folle de Menezes <afmenez@terra.com.br>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
Added checks in ByLayer print sequence to handle ordering for Intra-layer ordering option. Prevents new ordering setup when "As object list" is enabled.
* Fix float number not working properly for option min/max (#11211)
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Fix: Range check added for coInt options; Ranges and defaults added in tooltips
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
print_machine_envelope() used get_extruder_id(extruder_id)*2 to index
machine limit arrays that only hold [Normal, Stealth] (2 entries).
For multi-extruder setups this went out-of-bounds, causing wrong M201/M203
values in the G-code which then override the estimator's correct limits.
Same class of bug as c6d1c11ebb but on the G-code writer side.
Changes:
- Remove unused extruder_id param from print_machine_envelope()
- Use .values.front() for M201/M203, matching M204/M205 in same function
- Change get_option_value() fallback from .back() to .front() so any
future out-of-bounds index returns Normal mode instead of Stealth
The extruder_id*2 offset in get_axis_max_feedrate/get_axis_max_acceleration
was cherry-picked from BambuStudio's per-nozzle limit system, which OrcaSlicer
never ported. Without that system the limit arrays only have 2 values
([0]=Normal, [1]=Stealth), so any extruder_id > 0 or the uninitialized
value (255) would overshoot the array and fall back to values.back(),
always returning stealth-mode limits and producing incorrect time estimates.
Revert to indexing by time mode only (matching v2.3.1 behavior) and simplify
the M201/M203 handlers to write only the two mode slots they actually use.
* Add Pressure Advance visualization support
Signed-off-by: minicx <minicx@disroot.org>
* Port Pressure Advance visualization to libvgcode architecture
Adapt PA visualization (originally in commit e3a77259) to work with
the new libvgcode library introduced by upstream PR #10735.
Changes across the libvgcode stack:
- PathVertex: add pressure_advance field
- Types.hpp: add PressureAdvance to EViewType enum
- ViewerImpl: add ColorRange, color mapping, range updates for PA
- LibVGCodeWrapper: pass pressure_advance from MoveVertex to PathVertex
GCodeViewer UI integration:
- Add "Pressure Advance" to view type dropdown
- Add PA color range in legend (3 decimal places)
- Add PA value display in sequential view marker tooltip
- Add PA row in position properties table
The GCodeProcessor PA parsing (M900, M572, SET_PRESSURE_ADVANCE)
is preserved from the original implementation.
* Tag Pressure Advance visualization changes with ORCA comments
Signed-off-by: minicx <minicx@disroot.org>
---------
Signed-off-by: minicx <minicx@disroot.org>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Reapply "Switch to self hosted mac runner (#12024)" with proper fix
This reverts commit 783f9926e3.
* use conditional logic for self-hosted runners
* improve readbility
Fix crash in PA calibration pattern generation
Reset current extruder ID and clear pointers in set_extruders to prevent dangling pointers when extruders are recreated. Also fixed undefined behavior by checking if the vector is empty before taking max_element.
Co-authored-by: SoftFever <softfeverever@gmail.com>
## Summary
- Change default bed temperature type from "By First filament" to "By Highest Temp"
- Move `bed_temperature_formula` option from develop mode to advanced mode for better accessibility
- Relocate UI control from "Basic Information - Advanced" to "Multimaterial Setup" section where it's more relevant for multi-filament printing
Using the highest temperature of all printed filaments is generally safer for bed adhesion than using the first filament's temperature, especially in multi-material prints where different filaments may require different bed temperatures.
<img width="390" height="239" alt="Screenshot 2026-02-26 at 18 44 56" src="https://github.com/user-attachments/assets/0fe9f8c7-062a-4a7a-8ab3-c52df7e74b26" />
# Description
This PR enhances the GCodeProcessor's time estimation by incorporating Junction Deviation (JD) into the jerk calculations, providing more accurate print time predictions for firmwares that use JD (like modern Marlin).
Key Changes:
- Added JD support to time estimation
- Reads machine_max_junction_deviation (machine limits) and default_junction_deviation (print profile)
- When JD is enabled (>0), replaces traditional X/Y jerk values with JD-based calculation:
$Jerk = \sqrt{2.5\cdot JD \cdot acceleration }$
- Falls back to traditional jerk when JD is not used
# Test:
JD:0.0256mm Accel.: 1000 mm/s²
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/f0e95294-bfca-400e-bffc-8d615d051b70" />
Jerk: 8mm/s (equivalent)
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/8508727e-70f6-49ed-ac19-002db73e957b" />
JD:0.0128mm (4mm/s jerk)
<img width="2560" height="1392" alt="image" src="https://github.com/user-attachments/assets/91b04d3b-1b9e-48f4-b4b4-5addda2eff57" />
* Add Elegoo filament profiles to OrcaFilamentLibrary
Add 7 Elegoo filament profiles based on manufacturer specifications:
- Elegoo Rapid PETG (high-speed PETG, 240-270°C, 30-600mm/s)
- Elegoo PETG Pro (standard PETG, 230-260°C, 30-270mm/s)
- Elegoo PETG-CF (carbon fiber PETG, 240-270°C, 30-220mm/s)
- Elegoo PLA (standard PLA, 190-230°C, 30-280mm/s)
- Elegoo Rapid PLA+ (high-speed PLA, 190-230°C, 30-600mm/s)
- Elegoo ASA (ASA, 250-280°C, 30-270mm/s)
- Elegoo TPU 95A (flexible TPU, 220-240°C, 30-60mm/s)
All settings sourced from Elegoo's official product specifications.
* Fix dual seam fuzzy painted rev 2 (#11923)
* 2 seam fuzzy 2nd attempt
* Update FuzzySkin.cpp
* Fix debug SVG
* solve bump artifact in extrusion junction joint
* minor fixes
* cleaning
Update FuzzySkin.cpp
* Fix filament override changes not appearing in Unsaved Changes and showing as “Undef category” in preset comparison (#12298)
* Fix an issue that on Windows the Bambu legacy plugin is 01.10.01.09 (#12380)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin (#12400)
* tweak legacy library migration from rename to copy in BBLNetworkPlugin
* Add Pressure Advance visualization support (#11673)
* Add Pressure Advance visualization support
Signed-off-by: minicx <minicx@disroot.org>
* Port Pressure Advance visualization to libvgcode architecture
Adapt PA visualization (originally in commit e3a77259) to work with
the new libvgcode library introduced by upstream PR #10735.
Changes across the libvgcode stack:
- PathVertex: add pressure_advance field
- Types.hpp: add PressureAdvance to EViewType enum
- ViewerImpl: add ColorRange, color mapping, range updates for PA
- LibVGCodeWrapper: pass pressure_advance from MoveVertex to PathVertex
GCodeViewer UI integration:
- Add "Pressure Advance" to view type dropdown
- Add PA color range in legend (3 decimal places)
- Add PA value display in sequential view marker tooltip
- Add PA row in position properties table
The GCodeProcessor PA parsing (M900, M572, SET_PRESSURE_ADVANCE)
is preserved from the original implementation.
* Tag Pressure Advance visualization changes with ORCA comments
Signed-off-by: minicx <minicx@disroot.org>
---------
Signed-off-by: minicx <minicx@disroot.org>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Fix time estimation using wrong machine limits due to broken extruder_id indexing (#12411)
The extruder_id*2 offset in get_axis_max_feedrate/get_axis_max_acceleration
was cherry-picked from BambuStudio's per-nozzle limit system, which OrcaSlicer
never ported. Without that system the limit arrays only have 2 values
([0]=Normal, [1]=Stealth), so any extruder_id > 0 or the uninitialized
value (255) would overshoot the array and fall back to values.back(),
always returning stealth-mode limits and producing incorrect time estimates.
Revert to indexing by time mode only (matching v2.3.1 behavior) and simplify
the M201/M203 handlers to write only the two mode slots they actually use.
* Fix machine envelope G-code emitting wrong limits due to broken extruder_id indexing (#12414)
print_machine_envelope() used get_extruder_id(extruder_id)*2 to index
machine limit arrays that only hold [Normal, Stealth] (2 entries).
For multi-extruder setups this went out-of-bounds, causing wrong M201/M203
values in the G-code which then override the estimator's correct limits.
Same class of bug as c6d1c11ebb but on the G-code writer side.
Changes:
- Remove unused extruder_id param from print_machine_envelope()
- Use .values.front() for M201/M203, matching M204/M205 in same function
- Change get_option_value() fallback from .back() to .front() so any
future out-of-bounds index returns Normal mode instead of Stealth
* update error message when plugin upgrade failed
* Add and update pt-BR translations (#12409)
* Add preference for filament area height to reduce scrolling while using 16+ filaments (#12317)
Fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12284
Adds a preference for filaments area height since every user has different amount of MM units and external filaments
so users can set a value that fits their setups this way
we might see 3 or 6 filaments for each unit on future. thats why i set value as int
used 10 as default value. its good for 2 multimaterial units ( 8 filaments ) and 1 external filament
min value is 8. might be good when no external filaments in use
max value is 99. UI works same as 2.3.1 version
<img width="562" height="122" alt="Screenshot-20260215194149" src="https://github.com/user-attachments/assets/309cec36-8b83-48f3-875f-d5f22a9631e7" />
**BEFORE**
Scrollable area fixed for 10 items. that causes a lot of scrolling whe user has 3 or 4 ams units
<img width="411" height="237" alt="Screenshot-20260215194816" src="https://github.com/user-attachments/assets/fc7823c0-d82a-4d1f-bb5b-56e8dd47abd2" />
**AFTER**
value 10. - 2 multimaterial units ( 8 filaments ) and 1 external filament
<img width="1002" height="250" alt="Screenshot-20260215195243" src="https://github.com/user-attachments/assets/e3238cd1-788e-4ed2-b048-89c63bd323db" />
value 18 - 4 multimaterial units ( 16 filaments ) and 1 external filament
<img width="1001" height="355" alt="Screenshot-20260215195127" src="https://github.com/user-attachments/assets/afe0305e-fcb4-4a51-b8dc-e70a063aa391" />
* Fix: Correct range checking for int and float Config Options + QoL changes in tooltips (#11915)
* Fix float number not working properly for option min/max (#11211)
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Fix: Range check added for coInt options; Ranges and defaults added in tooltips
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Update machine profile for OpenEYE Peacock V2 (#12333)
* OpenEYE Peacock V2 machine profile: Add printer_agent key to enable AMS filament synchronization (Klipper/Moonraker)
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
* Optimize retraction settings in printer profiles to reduce stringing and improve print quality
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
---------
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
* Fix preheat regression bugs (#12438)
Fix preheat regression bugs
revert 769fc137c7
* Fix the issue where `resources/profiles/OrcaFilamentLibrary.json` is not updated accordingly.
---------
Signed-off-by: minicx <minicx@disroot.org>
Signed-off-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
Co-authored-by: Kiss Lorand <50251547+kisslorand@users.noreply.github.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: minicx <39405619+loss-and-quick@users.noreply.github.com>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Alexandre Folle de Menezes <afmenez@terra.com.br>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
Co-authored-by: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Sezgin AÇIKGÖZ <sezginacikgoz@mail.com>
Added checks in ByLayer print sequence to handle ordering for Intra-layer ordering option. Prevents new ordering setup when "As object list" is enabled.
* Fix float number not working properly for option min/max (#11211)
* ConfigOptionDef: min/max values type are changed from INT to FLOAT.
(cherry picked from commit f277bc80c22e0c9a067481a4301922e2c96aed47)
* Fix infinite loop and crash when `fuzzy_skin_point_distance` = 0 (SoftFever/OrcaSlicer#11069)
* Fix Linux build issue
* Fix float comparison due to precision loss
* Fix: Range check added for coInt options; Ranges and defaults added in tooltips
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
print_machine_envelope() used get_extruder_id(extruder_id)*2 to index
machine limit arrays that only hold [Normal, Stealth] (2 entries).
For multi-extruder setups this went out-of-bounds, causing wrong M201/M203
values in the G-code which then override the estimator's correct limits.
Same class of bug as c6d1c11ebb but on the G-code writer side.
Changes:
- Remove unused extruder_id param from print_machine_envelope()
- Use .values.front() for M201/M203, matching M204/M205 in same function
- Change get_option_value() fallback from .back() to .front() so any
future out-of-bounds index returns Normal mode instead of Stealth
The extruder_id*2 offset in get_axis_max_feedrate/get_axis_max_acceleration
was cherry-picked from BambuStudio's per-nozzle limit system, which OrcaSlicer
never ported. Without that system the limit arrays only have 2 values
([0]=Normal, [1]=Stealth), so any extruder_id > 0 or the uninitialized
value (255) would overshoot the array and fall back to values.back(),
always returning stealth-mode limits and producing incorrect time estimates.
Revert to indexing by time mode only (matching v2.3.1 behavior) and simplify
the M201/M203 handlers to write only the two mode slots they actually use.
* Add Pressure Advance visualization support
Signed-off-by: minicx <minicx@disroot.org>
* Port Pressure Advance visualization to libvgcode architecture
Adapt PA visualization (originally in commit e3a77259) to work with
the new libvgcode library introduced by upstream PR #10735.
Changes across the libvgcode stack:
- PathVertex: add pressure_advance field
- Types.hpp: add PressureAdvance to EViewType enum
- ViewerImpl: add ColorRange, color mapping, range updates for PA
- LibVGCodeWrapper: pass pressure_advance from MoveVertex to PathVertex
GCodeViewer UI integration:
- Add "Pressure Advance" to view type dropdown
- Add PA color range in legend (3 decimal places)
- Add PA value display in sequential view marker tooltip
- Add PA row in position properties table
The GCodeProcessor PA parsing (M900, M572, SET_PRESSURE_ADVANCE)
is preserved from the original implementation.
* Tag Pressure Advance visualization changes with ORCA comments
Signed-off-by: minicx <minicx@disroot.org>
---------
Signed-off-by: minicx <minicx@disroot.org>
Co-authored-by: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
* Reapply "Switch to self hosted mac runner (#12024)" with proper fix
This reverts commit 783f9926e3.
* use conditional logic for self-hosted runners
* improve readbility
- Add configurable GLEW_USE_EGL option (default OFF) to match wxWidgets
- Explicitly set wxUSE_GLCANVAS_EGL=OFF for vendored wxWidgets build
- Add compile-time check to detect EGL/GLX backend mismatch between
GLEW and wxWidgets, preventing silent rendering failures
The bug occurred when GLEW was compiled with EGL support (using
eglGetProcAddress) but wxWidgets created GLX contexts. This mismatch
caused OpenGL function pointers to fail loading, resulting in blank
3D model preview.
Co-authored-by: SoftFever <softfeverever@gmail.com>
- Add configurable GLEW_USE_EGL option (default OFF) to match wxWidgets
- Explicitly set wxUSE_GLCANVAS_EGL=OFF for vendored wxWidgets build
- Add compile-time check to detect EGL/GLX backend mismatch between
GLEW and wxWidgets, preventing silent rendering failures
The bug occurred when GLEW was compiled with EGL support (using
eglGetProcAddress) but wxWidgets created GLX contexts. This mismatch
caused OpenGL function pointers to fail loading, resulting in blank
3D model preview.
Co-authored-by: SoftFever <softfeverever@gmail.com>
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.
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.
* Add Rectilinear Support for Normal support type. Fix issue #9508.
* Remove duplicate the rotation logic, use raft_interface_angle function.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Fix extruder_id out-of-bounds in switch_excluder
Added a check to reset extruder_id to 0 if it exceeds the size of nozzle_volumes or extruders, preventing potential out-of-bounds access.
Co-Authored-By: Christopher R. Palmer <1305033+crpalmer@users.noreply.github.com>
* Add custom nozzle diameter option in sidebar
Ensures that if the actual nozzle diameter is not present in the list, it is added as a custom option. This improves user experience by allowing selection of non-standard nozzle diameters.
Refactor nozzle diameter selection logic in Sidebar
Simplified the logic for updating the extruder nozzle diameter combo box by removing redundant checks and streamlining the addition of custom nozzle diameters. This improves code clarity and ensures the actual nozzle diameter from the printer config is always considered.
Co-Authored-By: yw4z <yw4z@outlook.com>
* Prevent profile switch if selected diameter matches nozzle
Adds a check in Sidebar::priv::switch_diameter to avoid switching printer profiles when the selected diameter matches the current nozzle diameter in the configuration. This prevents unnecessary profile changes and improves user experience.
---------
Co-authored-by: Christopher R. Palmer <1305033+crpalmer@users.noreply.github.com>
Co-authored-by: yw4z <yw4z@outlook.com>
New translation OrcaSlicer
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
* fixes: keys_map is initialized with itself [-Winit-self]
* fixes: operation on repeats may be undefined [-Wsequence-point]
* fixes: warning: suggest parentheses around && within || [-Wparentheses]
* fixes: moving brim_points to itself [-Wself-move]
* fixes: operation on unprintability may be undefined [-Wsequence-point]
* fixes: extra tokens at end of #endif directive [-Wendif-labels]
* fixes: converting to non-pointer type int from NULL [-Wconversion-null]
* review result: simplifies fix 'operation on repeats may be undefined'
# Description
The current bounding box selection display loses all usefulness once the furthest apart objects are selected.
This is especially noticeable on grid patterns, where nested unselected elements become indistinguishable after selecting all.
This PR implements a highlighting method that visually brightens individually selected objects.
# Screenshots/Recordings/Graphs
<img width="1845" height="829" alt="image" src="https://github.com/user-attachments/assets/a92a7176-182c-41e2-869e-badb220dfee2" />
Current 2.3.1: All but some objects are selected. Can you tell which ones?
<img width="2169" height="1042" alt="image" src="https://github.com/user-attachments/assets/c6c721d5-4f03-4c23-beff-b0acc0601568" />
Proposed PR: Slight lightening of selected objects
## Tests
Built on windows, tested with various colors and non-printable
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" />
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" />
* Add checks to snap wipe tower back to origin when it was loaded outside the plate boundary
* Fix Wipe Tower preview outside plate boundary and warning notification
- snaps wipe tower preview to nearest edge if it was loaded outside of plate boundary.
- Added warning notification to notify position change
# Description
Transforming internal 3D Files to DRC to reduce orca size
## Calibs
(Not counting temperature_tower)
Original 6,01 MB
Converted 1,57 MB
- Mesh (STL/3MF) to LossLess DRC
- SCV-V2 116kb -> 15kb
- fast_tower_test 66kb -> 9kb
- ringing_tower 172kb -> 22kb
- pressure_advance_test 124kb -> 16kb
- tower_with_seam 2kb -> 1kb
- retraction_tower 1.726kb -> 97kb (done at 25, if 0 = 212kb)
- ~~temperature_tower~~ Updated, fixed, wider range and Draco in: #12103 5.075kb -> 485kb
- vfa 1.453kb -> 179kb
- Step
- SpeedTestStructure 1.312kb -> 86kb
- Imported:
- Linear Deflection: 0.002
- Angle Deflection: 0.25
- Exported as LossLess DRC
## Handy Models
Original 4,66 MB
Converted 1,53 MB
- STL/3MF to LossLess DRC (Maybe reduce the bit depth???)
- 3DBenchy 2.417kb -> 570kb (done at 25, if 0 = 1.340kb)
- calicat 43kb -> 6kb
- ksr_fdmtest_v4 128kb -> 74kb
- Orca_stringhell 63kb -> 37kb
- OrcaToleranceTest 758kb -> 94kb
- Stanford_Bunny 755kb -> 187kb (done at 25, if 0 = 316kb)
- Voron_Design_Cube_v7 34kb -> 21kb
## Bit used
After some test with a lot of models and all possible combinations it's safe to say that >20 is BondingBox and mm3 volume the best it can.
So i used 25 just as a safe value in:
- Stanford_Bunny
- 3DBenchy
- retraction_tower
<img width="324" height="499" alt="imagen" src="https://github.com/user-attachments/assets/bb5000cf-c1fa-4153-af2f-691ea59bc254" />
<img width="324" height="499" alt="imagen" src="https://github.com/user-attachments/assets/f38e3528-0d05-4621-984e-f107a0eec91e" />
## MultiPart 3MF
Didint change them, too much trouble for small changes.
## Problem
Some Creality printers (e.g. Ender-3 V3 SE) rely on metadata comments in the first lines of G-code files to display print info on the screen (estimated time, filament usage, layer height). This follows a format originally used by Cura/Creality Print:
```
;FLAVOR:Marlin
;TIME:3708.97
;Filament used:6.21m
;Layer height:0.2
```
OrcaSlicer currently has no way to write content before the `HEADER_BLOCK` in the G-code output, and does not expose `print_time_sec` or `filament_length_m` as usable placeholders. As a result, these printers show zeroed-out print info on screen.
## Changes
### 1. New placeholders (post-processing)
Added two new G-code placeholders resolved during post-processing:
- `{print_time_sec}` — total estimated print time in seconds (double)
- `{filament_length_m}` — total filament length in meters (double)
These values are only available after G-code generation, so they use inline marker replacement (`@PRINT_TIME_SEC@`, `@FILAMENT_LENGTH_M@`) that `GCodeProcessor::run_post_process()` substitutes with actual computed values — the same pattern used by existing M73 and layer count placeholders.
### 2. New "File header G-code" option (`machine_top_gcode`)
Added a new G-code field in **Printer Settings > Machine G-code** that writes content at the very top of the output file, before `HEADER_BLOCK_START`. This allows users to add firmware-specific metadata that must appear in the first lines.
### 3. Creality Ender-3 V3 SE profile update
Pre-configured the Ender-3 V3 SE profiles (all 4 nozzle variants) with a default `machine_top_gcode` value matching the Cura-compatible header format, so print info displays correctly out of the box.
# Screenshots
| Before (current OrcaSlicer) | After (this PR) |
|---|---|
|  |  |
## Tests
- Sliced test model with Ender-3 V3 SE profile
- Verified G-code output contains correct values in first lines:
- `;TIME:` with actual print time in seconds
- `;Filament used:` with filament length in meters
- `;Layer height:` with correct layer height
- Verified `{print_time_sec}` and `{filament_length_m}` work in both Machine Start G-code and File header G-code fields
- Verified empty `machine_top_gcode` produces no extra output
- Built and tested on macOS (arm64)
The IDEX profiles for Ratrig v-core 4.0 printers where only working for the 0.4 mm nozzle. I suppose these changes should fix it. I only asked copilot about it, so not tested if that is the reason why I cannot select a second filament with the bigger nozzle profiles.
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix? Add new models
> * What new features or enhancements does this PR introduce? no
> * Are there any breaking changes or dependencies that need to be considered? no
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
* added option to save a profile as detached(no inheritance)
* Revert "added option to save a profile as detached(no inheritance)"
This reverts commit c1326c6dec.
* re-commiting the changes
* fixed conflicts with upstream
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Add read support for Google's Draco (.drc) format.
* Fix build on Linux
* Use boost instead of fstat.
* Switch to boost memory-mapped file to save RAM and potentially improve performance.
* Trim trailing whitespace.
* Initial Draco write support.
Currently always exports with 16-bit precision and speed 0 (best compression).
The back-end function does have arguments to specify them, it's just not hooked into the GUI.
* Add Draco to the About dialogue.
* Fix Linux compile (hopefully)
* Add an option to associate DRC files on Windows.
* Implement a Preferences option to set Draco position quantization bits
* Update src/slic3r/GUI/Preferences.cpp
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
* Some slight changes to ianalexis's suggestion.
* Implement a create_item_spinctrl() function for numeric inputs, and use that instead of create_item_input().
* Move "bits" to inside the spinctrl box.
* Refactor following yw4z's feedback
* Update src/slic3r/GUI/Preferences.cpp
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
* Change to 0 bits as the default setting for Draco export precision.
* Change to a lossy checkbox and a bits field with a range of 8-30.
* Proper SpinInput code from yw4z
* Revert "Proper SpinInput code from yw4z"
This reverts commit 7e9c85f31a.
* Revert "Change to a lossy checkbox and a bits field with a range of 8-30."
This reverts commit d642c9bcc0.
* Redo preferences based on SoftFever's feedback
* Refactor to minimize code duplication
* Fix padding
* Improve Draco export quality level tooltip clarity
Clarify that 0 means lossless compression (not uncompressed),
document the valid lossy range (8-30), and better explain the
tradeoff between file size and geometric detail.
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Closes#11726
# Description
Removed hardcoded 0.2mm layer height.
Now it will stay in with the user process.
Also corrected several config assignments to use print_config instead of obj->config for consistency.
## Note
Didn't change PA PATTERN because i don't know if it may impact the calibration results for this specific test.
Toolchanger printers with 4 tools were incorrectly treated as dual-nozzle (IDEX-style) printers in AMS Sync. So I was locked to just tool 1/2.
Adjusted AMS Sync to use dual-nozzle logic only for true 2-nozzle setups (nozzle_nums == 2 and filament_map in {1,2}), and route 3+ tool toolchangers through the generic mapping flow so all tool IDs are handled correctly.
Before:
<img width="2276" height="1738" alt="image" src="https://github.com/user-attachments/assets/ccebc020-37cf-4af6-8568-a9f331f6c08c" />
After:
<img width="2236" height="1662" alt="image" src="https://github.com/user-attachments/assets/030f49c3-463d-4355-95ba-ba8f95a01ecd" />
Tested on / with:
- Snamaker U1
- ARM macOS
# Description
Fixes the Setup Wizard getting stuck on the "Loading......" screen when
running on Wayland sessions.
**Root Cause:** When OrcaSlicer runs under XWayland (Wayland sessions
with `GDK_BACKEND=x11`), WebKit2GTK's compositing mode can fail
silently, causing the Setup Wizard WebView to freeze or render blank.
The JavaScript signal from C++ (`userguide_profile_load_finish`) either
fails to execute or its rendering result never displays, leaving users
permanently stuck.
**Solution:**
1. Set `WEBKIT_DISABLE_COMPOSITING_MODE=1` environment variable to force
software rendering for WebKit2GTK - this is the same fix used by
BambuStudio
2. Enable the 20-second timeout fallback in `load.js` so the wizard
proceeds automatically even if the C++ → JavaScript communication fails
**Files changed:**
- `src/OrcaSlicer.cpp` - Added `WEBKIT_DISABLE_COMPOSITING_MODE` env var
(4 lines)
- `resources/web/guide/0/load.js` - Enabled timeout fallback (2 lines)
# Screenshots/Recordings/Graphs
N/A - This is a Linux/Wayland-specific fix that addresses a rendering
issue. The visual result is simply that the Setup Wizard proceeds past
"Loading......" as expected.
## Tests
1. **On Wayland session (e.g., GNOME on Wayland):**
- Remove existing config (`~/.config/OrcaSlicer/`) to simulate first
launch
- Launch OrcaSlicer
- Verify Setup Wizard proceeds past "Loading......" to the actual wizard
page
2. **On X11 session:**
- Same test as above to verify no regression
3. **Verify env var is set:**
- Check that `WEBKIT_DISABLE_COMPOSITING_MODE=1` is in the process
environment on Linux builds
# Description
This PR lays the groundwork for future OrcaSlicer ↔ printer connectivity
enhancements by modularizing the network agent architecture. It also
adds experimental filament info sync from printers that have a material
station or multi-tool system.
## Architecture Changes
- **Introduce `IPrinterAgent` interface** — an abstraction layer that
allows per-machine printer agent switching at runtime, decoupling
printer communication from the monolithic `NetworkAgent`
- **Introduce `ICloudServiceAgent` interface** — separates cloud service
logic from printer-level communication
- **Extract `OrcaCloudServiceAgent`** — moves Orca cloud service logic
into its own implementation behind `ICloudServiceAgent`
- **Extract `OrcaPrinterAgent`** — wraps the existing BBL printer
communication behind `IPrinterAgent`
- **Add `NetworkAgentFactory`** — factory for creating the appropriate
printer agent per machine
- **Refactor `NetworkAgent`** — slimmed down from monolithic class to a
thinner coordination layer
## New Printer Agents
- **`MoonrakerPrinterAgent`** — Klipper/Moonraker-based printers
- **`QidiPrinterAgent`** — Qidi printers (with Qidi filament box
support)
- **`SnapmakerPrinterAgent`** — Snapmaker printers with filament sync
## Filament Sync (Experimental)
Syncs filament information from printers equipped with AMS-style
material systems or multi-tool changers:
- Qidi printers with Qidi box
- Armored Turtle (AFC) box via Moonraker
- Snapmaker material station
For Qidi printers with Qidi box:
<img width="1200" height="762" alt="Screenshot 2026-01-27 at 20 30 55"
src="https://github.com/user-attachments/assets/155a164f-cd08-40b0-b62b-c3ab7378224e"
/>
Armored Turtle box:
<img width="1135" height="805" alt="Screenshot 2026-01-27 at 20 32 58"
src="https://github.com/user-attachments/assets/50f6618e-eb54-46db-8e01-1197a005fbf0"
/>
# Screenshots/Recordings/Graphs
[filasync.webm](https://github.com/user-attachments/assets/e6bb7f04-8312-4014-b237-6bd3ef792215)
## Tests
<!-- Please describe the tests that you have conducted to verify the
changes made in this PR. -->
When running under XWayland (Wayland sessions with GDK_BACKEND=x11),
WebKit2GTK's compositing mode can fail silently, causing the Setup
Wizard WebView to freeze or render blank. This leaves users stuck on
the "Loading......" screen indefinitely.
Changes:
- Set WEBKIT_DISABLE_COMPOSITING_MODE=1 to force software rendering,
matching the fix used by BambuStudio
- Enable the 20-second timeout fallback in load.js so the wizard
proceeds even if the C++ -> JavaScript signal fails
* 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.
layer_height_profile_adaptive() was using object_print_z_height()
(shrinkage-compensated) to bound the profile, but
update_layer_height_profile() validates against
object_print_z_uncompensated_max. When shrinkage compensation is
active, the mismatch causes the adaptive profile to be silently
cleared every frame and replaced with flat layers.
Use object_print_z_uncompensated_height() instead, matching both
the validator and the existing layer_height_profile_from_ranges()
implementation which already uses the uncompensated value.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Replaced GitHub wiki URLs with new orcaslicer.com documentation links for several hints to provide more accurate and up-to-date references.
Co-authored-by: yw4z <yw4z@outlook.com>
* Add overhang_reverse config to calibration routines
Set the 'overhang_reverse' configuration option to false in both calib_temp and calib_retraction functions to ensure consistent calibration behavior.
* Disable overhang_reverse in calib_pa function
Adds a line to set the 'overhang_reverse' configuration option to false when running the calib_pa function, ensuring this feature is disabled during calibration.
* Disable reverse on even for PA Tower
* Remove unncesary overhang_reverse disablers
* Update Plater.cpp
Update Plater.cpp
* Update Plater.cpp
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
Changed the help link for the 'symmetric_infill_y_axis' option from 'strength_settings_patterns#zig-zag' to 'strength_settings_infill#symmetric-infill-y-axis' to provide more accurate documentation.
* Fix aligned back seam positioning for mirrored objects
This change makes “Aligned back” seams behave the same on mirrored models as on normal models.
Mirroring flips the model’s surface directions, so the slicer treated the back as the front.
Now it corrects those directions when calculating seam visibility, so seams still line up on the back after mirroring.
* Comments
Add comments to the changes
# Description
When creating a new filament preset and setting the Printer Dependencies to "All", the preset does not save this setting. This issue only occurs on creation due to code that is meant to validate the data to prevent a case where the filament is compatible with none of the printers.
EDIT: While I considered redoing the data validation for this tab overall, I have now preserved the original purpose of the code, which is to add the current printer as a compatible printer only if:
- the base preset is a System preset
- the user has not specified any compatible printers
Notably, this seems to be the cause of #11959
Moving the data validation from `Preset::save_current_preset` to `Tab::save_preset` allows the Preset function to be simplified through removal of the current printer parameter.
# Screenshots/Recordings/Graphs
There is no visible change on the UI.
## Tests
Tested the following combinations of filament presets:
- System->new User
- User->new User
- User->same User
Tried to set them to All, where the System->new User should be the only case where this is replaced by a default.
In any case where there are printers already set, those settings should be kept.
* Fix: GCodeViewer displaying inconsistent data in title and body
* Fix: remove actual flow info from GCodeViewer title
* Refactor: reduce repetition of N/A and headers
* Fix: Add missing categories to print settings (Seam, Wipe, Accel, Scarf)
- Assigns categories (Quality, Speed) to various print settings in PrintConfig.cpp.
- Ensures these settings are correctly tracked in the UI override list (GUI_ObjectList).
- Fixes issue where overriding these settings per-object did not trigger the 'modified' icon.
* Fix: Add missing categories to additional per-object settings
- Assigns categories (Speed, Quality, Strength, Support) to relevant settings.
- Cleans up duplicate definition of 'outer_wall_acceleration' in PrintConfig.cpp.
- Ensures the 'modified' icon (orange arrow) appears correctly in the Object List.
* Fix: Restore original default values for acceleration and skirt angle
- Reverted 'default_acceleration' back to 500.
- Reverted 'skirt_start_angle' back to -135.
* Style: Remove trailing whitespace in print_flow_ratio tooltip
* Fix: Mark skirt_start_angle as advanced setting
* fix values
* Fix dark color rendering in G-code preview by using additive specular lighting
* Revert "Fix dark color rendering in G-code preview by using additive specular lighting"
This reverts commit 2a65bc9060.
* Fix dark color rendering in G-code preview (Standard & ES shaders) by using additive specular lighting
* Fix dark color preview: Increase minimum brightness to 48/255 (~19%)
* Refactor: Revert to combined lighting calculation in shaders
Fix layer/time display in Preview legend for pause/custom G-code
The Preview legend showed incorrect layer numbers and elapsed time for pause/custom G-code entries. The issue was caused by:
• get_layer_id_at() performing a strict upper_bound search on float Z values, while custom G-code stores Z positions as doubles. Minor precision differences often pushed the lookup to return layer 0 or the last layer.
• The legend displayed the raw zero-based layer index.
Fixes included:
• Fetch layer Z values as doubles and use an epsilon-based closest-layer search.
• Display layers as 1-based values for user-facing UI.
• Accumulate time up to the beginning of the identified layer.
This aligns the legend with the vertical slider marker and provides consistent pause/custom G-code reporting.
# Description
### `src/libslic3r/PrintApply.cpp` changes (line 318)
Change `const auto` to `const auto&` for loops (simple optimization) .
### `src/slic3r/Utils/CalibUtils.cpp` changes (lines 762, 766, 779, 783/784, 814, 816, 831, 835, 837, 1001)
Define config_pattern
`const auto& config_pattern = SuggestedConfigCalibPAPattern();` (line 762 and 814)
Replace calls of `SuggestedConfigCalibPAPattern()` with `config_pattern` (lines 766, 775, 779, 783, 784, 816, 831, 835, 837)
Change `const auto` to `const auto&` for loops (simple optimization) (lines 816, 835, 837, 1001)
*Also gets rid of the five compiler warnings out of the few hundred/thousand (when building the entire project) that warn about copying loop variables*
i.e.
```/home/neo/git/OrcaSlicer-EDIT-TEMP/src/slic3r/Utils/CalibUtils.cpp:828: note: use reference type to prevent copying
/home/neo/git/OrcaSlicer-EDIT-TEMP/src/slic3r/Utils/CalibUtils.cpp:832: warning: loop variable ‘opt’ creates a copy from type ‘const std::pair<std::__cxx11::basic_string<char>, int>’ [-Wrange-loop-construct]
832 | for (const auto opt : SuggestedConfigCalibPAPattern().int_pairs) { print_config.set_key_value(opt.first, new ConfigOptionInt(opt.second)); }
```
## Tests
Should have no functional difference. Contains optimizations, calibrations appear to still function well.
### 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.
# Description
This PR introduces a new material type called **CoPE** to the system.
**Changes:**
* **New Material:** Implemented `CoPE` as a selectable material type.
* **Configuration:** Added necessary material properties and parameters specific to CoPE.
**Breaking Changes:**
* None.
# Screenshots/Recordings/Graphs
<img width="1793" height="618" alt="image" src="https://github.com/user-attachments/assets/8577be4d-9f5f-4bda-b0de-c0842857625d" />
<img width="978" height="937" alt="image" src="https://github.com/user-attachments/assets/ec2ba1a3-41d5-4792-8fea-41c282136ff2" />
## Tests
I have verified the changes with the following tests:
* **UI Validation:** Verified that `CoPE` correctly appears in the software's material selection list.
* **Preset Management:**
* Successfully **exported** a preset containing the CoPE material.
* Successfully **imported** the CoPE preset back into the software.
v3.0.0 of takanome-dev/assign-issue-action is broken:
- action.yml references dist/index.js
- But the release only contains dist/index.mjs
- This causes immediate failure: "File not found: dist/index.js"
This PR:
1. Reverts to v2.2 which works correctly
2. Reverts reminder_days to 7 (v2.2 behavior: days before unassignment)
3. Adds comment with link to upstream bug report
Bug report: https://github.com/takanome-dev/assign-issue-action/issues/426Fixes#11873
Co-authored-by: Hanan <okets78@hotmail.com>
* Fix Gtk-Critical assertion in PresetComboBoxes
Resolve the `gtk_cell_layout_get_cells: assertion GTK_IS_CELL_LAYOUT
failed` error by switching from `gtk_cell_layout_get_cells()` to
`gtk_container_get_children()` with direct PangoLayout ellipsization
on GtkEntry widgets.
Picked from PrusaSlicer:
https://github.com/prusa3d/PrusaSlicer/commit/e855ab5d
* Add defensive guards for GTK widget sizing
Fix Gtk-CRITICAL assertions in TextInput and DropDown widgets that
occur when the widget attempt relative sizing against window size
before GTK completes the window layout.
Changes include:
- TextInput.cpp: Clamp textSize.x >= -1 to prevent
`gtk_widget_set_size_request` failures.
- Picked from Prusa Slicer:
https://github.com/prusa3d/PrusaSlicer/commit/e855ab5d
- DropDown.cpp: Guard against zero/negative dimensions during early
initialization:
- Prevent szContent.x = 0 when parent size is unavailable.
- Unique to OrcaSlicer
- Triggers during initializing DesignerPanel --> BasicInfo -->
License DropDown before a parent size is available.
- Latent bug exists in Bambu Studio, but Bambu does not have
License field enabled on this panel.
- Created global guard for future resilience.
- Clamp szContent.y >= 1 for dropdowns before content initialized.
- Bug exists in BambuStudio
- Prusa did not implement the "ENH: ComboBox Second DropDown"
* Added proper tool‑change handling for Geeetech multi‑color
* Better variables used for initial bed/nozzle temp for Geeetech multicolor printers
* Wrong colon symbol (U+FF1A) replaced with regular U+003A
During the slicing those symbols are not recognized by the printers and come out with artifacts
* Enhance backward compatibility for filament extruder variants in 3MF project files
Fix crashes when loading old 3MF project
* QoL: add handy models directory to ignore list
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
This PR adds support for two new Wemake3D printer models to OrcaSlicer: the `Phoenix Pro V1` and `TinyBot V1`.
Changes Made:
Added new printer definitions for:
`WEMAKE3D Phoenix Pro V1`
`WEMAKE3D TinyBot V1`
Includes standard printer profiles (machines and process settings).
Implements device-specific start/end G-code.
Adds recommended slicing parameters for optimal print quality.
**Dependencies & Considerations:**
This PR adds new configuration files only and does not modify any existing core functionality.
No breaking changes are introduced.
The profiles are based on standard Marlin-compatible G-code and should work with the stock firmware on these devices.
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
Printer Selection Menu
The new printers "Wemake3D Phoenix Pro V1" and "Wemake3D TinyBot V1" now appear in the printer selection list.
<img width="806" height="656" alt="image" src="https://github.com/user-attachments/assets/39c4e2fb-c1cc-4bdd-b6c6-ee432fbc198f" />
Printer Settings Preview
Example printer settings panel for the Phoenix Pro V1.
<img width="1180" height="785" alt="image" src="https://github.com/user-attachments/assets/44f0c820-6c70-4daa-86a2-94a7792d1216" />
## Tests
Verification Steps:
**Profile Validation:** Validated with `orca_extra_profile_check.py`
**Installation & Discovery:** Successfully installed the configuration files and verified both printers appear in the "Add Printer" wizard.
**Profile Loading:** Tested loading each printer profile and confirmed all default settings (print, filament, process) are applied correctly.
**G-code Validation:** Manually reviewed the start and end G-code for each model to ensure compatibility and safety.
**Slice Simulation:** Performed test slices on sample models (benchy, calibration cube) for both printers to verify parameter application and generate error-free G-code.
**Basic Compatibility:** Confirmed generated G-code follows standard Marlin syntax and should be compatible with the printers' expected firmware.
**Test Environment:**
OrcaSlicer Version : `2.3.2-dev` & `2.3.1`
OS :` Windows 10` & `Windows 11`
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
This PR fixes an issue where certain characters (for example the degree symbol ° used in °C) became corrupted after opening and saving the Custom G-code editor multiple times.
#### What was the problem?
When users added symbols like ° inside Start/End G-code, the editor would show them correctly the first time, but after reopening the dialog a few times the text would slowly change into strange characters.
#### How to reproduce
- Open any Custom G-code field
- Add a line containing °C
- Save the dialog
- Reopen it several times
- The text begins to change into unreadable characters
#### What this PR changes
The Custom G-code editor now properly loads and saves text that contains symbols such as °, so these characters stay exactly as the user typed them. This keeps Custom G-code stable across editing sessions and prevents slow corruption of Unicode characters.
#### Result
- °C and similar symbols remain correct
- No more “weird characters” appearing after multiple reopen/save cycles
- Custom G-code is preserved accurately
Fixes#11502
There's still a bug where it will expire too soon when idle *after* a reminder has been sent.
Fixes#11873
@SoftFever Every person who pushes a commit will get a dumb email until this merges (uhm, provided it actually works).
# Description
<!--
> Please provide a summary of the changes made in this PR. Include details such as:
> * What issue does this PR address or fix?
> * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be considered?
-->
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
# Description
Fixes#6813Fixes#7782Fixes#6367
This is a port of libvgcode, OpenGL Core Profile (libvgcode requires OpenGL 3.2+), and probably other stuff I forgot from PrusaSlicer. libvgcode is also known as "Improved G-code Viewer" which was introduced in [PrusaSlicer 2.8.0](https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.8.0-alpha5). It significantly improves performance of the G-code preview and allows displaying the actual speed and volumetric flow rate.
## TODO
- [x] Make the sliders work properly again
- [x] Make view type selection work
- [x] Fix toggling of feature type visibility
- [x] Expose actual speed/actual flow view types
- [x] Fix display of G2/G3 arcs
- [x] Wire up actual speed graph widgets
- [x] Fix painter gizmos
- [x] Fix crash when selecting filament view type on Windows
- [ ] Figure out display color management (#10827)
- [x] Fix incorrect rendering of small area flow compensation (or any extrusions with varying flow)
- [ ] Localization
- [ ] Testing
- [ ] Code cleanup, performance optimization
## Removed functionality
Some functionality is not supported by libvgcode:
- Toggling visibility of tools
- Toggling visibility of colors in color print view
- Support for systems with OpenGL <3.2
- Bambu's implementation of G2/G3 arcs was replaced with PrusaSlicer's implementation
# Screenshots/Recordings/Graphs
https://github.com/user-attachments/assets/c1413a82-3058-4541-b96c-3d5f7cdef174
<details>
<summary>Outdated Stuff</summary>
https://github.com/user-attachments/assets/ca172ef4-0828-4d21-8768-b08a4132c9ab
<img width="1611" height="1145" alt="image" src="https://github.com/user-attachments/assets/5e0d04ff-8046-4636-a08a-cdedc60303bc" />
</details>
## Tests
- [x] Normally sliced G-code
- [ ] G-code viewer mode
- [x] Arc fitting enabled
- [x] Spiral Z-hops
- [x] Multi-extruder/multi-color
- [x] Vase mode
- [x] Skirt/brim
- [x] Supports
- [ ] Support transition (whatever this is)
- [x] Painter gizmos
- [x] Measurement gizmo
- [x] Move/rotate/scale gizmos
- [x] H2D/H2S support (oh no)
- [ ] Windows
- [x] macOS
- [ ] Linux
Lowered hot_plate_temp from 5705 to a reasonable 70 degrees.
(should be 60-90 degrees according to sources, made it the same as the first layer bed temp)
# Description
This PR adds support for the new printer model **Cubicon xCeler-Plus**.
It includes:
- Machine configuration (JSON)
- Process profiles (Speed, Quality settings)
- Filament settings
- Bed texture and model resources
# Screenshots/Recordings/Graphs
# Tests
I have successfully tested the sliced G-code on the actual machine (Cubicon xCeler-Plus).
- [x] Slicing test passed
- [x] Printing test passed with Klipper firmware
# Description
This PR introduces most features and capabilities needed for future network plugin-related changes, as discussed on Discord. In short bullet points:
- it allows users to select a specific version of the Bambu network library to use,
- improves hot reloading (in most cases, version changes don't require restarting Orca),
- introduces possibility to add _custom_ variants of supported plugin versions by placing them in the plugin directory with a suffix of `-<name>`,
- adds an button in the "Developer" section of Preferences to hot-reload the network plugin from disk,
- ports plugin error messages from Bambu Studio, including the questionable unsigned app one (rephrased), to make it clear to users why their printer commands don't really execute.
Also introduces CMake 4.x compatibility on macOS, because I was too lazy to install CMake 3 on my computer 😶
# Screenshots/Recordings/Graphs
<img width="494" height="225" alt="image" src="https://github.com/user-attachments/assets/366e8c0f-8b12-4c75-a2db-ba08e7544ecd" />
<img width="223" height="276" alt="image" src="https://github.com/user-attachments/assets/dffec726-b6d5-44d3-a2b3-dd56d2590356" />
<img width="521" height="182" alt="image" src="https://github.com/user-attachments/assets/934ba963-f299-4d20-a107-8375f1f99571" />
<img width="644" height="640" alt="image" src="https://github.com/user-attachments/assets/00385657-04f2-4f36-896e-58265df58ebc" />
## Tests
Tested manually, also added some basic tests to make sure config management behaves correctly.
# Description
This PR addresses the issue that WipeTower's start z position didn't consider the z_offset.
fixes#11611
# Screenshots/Recordings/Graphs
<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
## Tests
<!--
> Please describe the tests that you have conducted to verify the changes made in this PR.
-->
# Description
Fix application freeze when Prime Tower brim is set to Auto
This PR fixes an issue where enabling Auto brim width for the Prime Tower caused the application to freeze and consume unbounded amounts of memory.
Root cause
0c5f6c9865/src/libslic3r/GCode/WipeTower2.cpp (L2036-L2039)
When Auto brim is selected, the brim width was not being computed and the raw configuration value (-1) was used directly.
This resulted in an effectively infinite loop during Prime Tower brim generation, leading to runaway memory allocation instead of a controlled failure or a crash.
Solution
The Auto brim width is now properly computed based on the Prime Tower height, matching the intended behavior and existing logic used in other slicer implementations.
# Description
* What issue does this PR address or fix?
1. Refactor Polymaker folder within Snapmaker profile directory, so that the structure is more clear.
2. Add more Polymaker filament presets for Snapmaker printers.
* What new features or enhancements does this PR introduce?
1. None
* Are there any breaking changes or dependencies that need to be considered?
1. None
* Bugfixes
* Reduce size of diff
to avoid merge conflicts when we cherry-pick from upstream :)
* remove extraneous space
---------
Co-authored-by: Andrew Sun <as-com@users.noreply.github.com>
Because total print time is typically a big floating point number and the time of trapezoid is typically a small number, summing those numbers leads to a loss in precision. Switching to doubles reduces the loss of precision.
(cherry picked from commit c5982f40196c178bd824c556ac11e8c6f67d5e7a)
Includes (but is not limited to) the following commits:
SPE-2218 - libvgcode - Fixed color of wipe moves for speed range view
SPE-2218 - libvgcode - Fixed detection of fan speed range
SPE-2218 - libvgcode - Fixed detection of temperature range
SPE-2218 - libvgcode - Fixed colors for Actual volumetric flow rate view
SPE-2214 - Fixed detection of toolpaths bounding box in GCodeViewer
SPE-2206 - Modified LibBGCode.cmake to get latest version of libbgcode which fixed parsing of gcode lines G4
libvgcode - Fixed potential out of bound access in ViewerImpl::update_view_full_range()
Tech ENABLE_GL_CORE_PROFILE set as default
Tech ENABLE_OPENGL_ES replaced by build option SLIC3R_OPENGL_ES
libvgcode - Precompiler definition of ENABLE_OPENGL_ES moved into CMakeLists.txt
Added missing include
libvgcode - Textures setup modified to work when building using emscripten
libvgcode - small optimization
libvgcode - fixed OpenGLWrapper::unload_opengl()
libvgcode - CMakeLists.txt modified to work with emscripten
libvgcode - Replace 'glVertexAttribIPointer()' with 'glVertexAttribPointer()' in SegmentTemplate::init() for OpenGL ES
libvgcode - Replace 'xor' with '^' Bitset.hpp
libvgcode - Newer glad library for OpenGL 4.6 and OpenGL ES 3.0
libvgcode - Alternate fix in method ViewerImpl::update_heights_widths() for OpenGL ES
libvgcode - Fixes in glAssertRecentCallImpl()
libvgcode - Fixes in method ViewerImpl::update_heights_widths() for OpenGL ES
Fixed ES shaders so they work with OpenGL ES 3.0
libvgcode - Use multiple plain textures in place of texture buffers for OpenGL ES
libvgcode - Use plain textures in place of texture buffers for OpenGL ES (partial implementation using one texture per buffer)
libvgcode - refactoring of class OpenGLWrapper
libvgcode - small refactoring in shaders
libvgcode - replacement of glMapBuffer() call for OpenGL ES
Fixed warning
libvgcode - Changes into CMakeLists.txt
Fixed debug export of gcode data to be configuration indipendent
Disabled tech ENABLE_NEW_GCODE_VIEWER_DEBUG
Removed obsolete tech ENABLE_GCODE_VIEWER_DATA_CHECKING
Code cleanup and techs removal - completed
Code cleanup and techs removal - step 1
SPE-1872: Implemented G2/G3 lines discretization for gcfMarlinFirmware firmware flavour
SPE-1872: Corrections into GCodeProcessor::process_G2_G3() to match firmware code
SPE-1872: Actual speed profile - Further enhancements of imgui debug window
SPE-1872: Actual speed profile - Rework in its calculation + enhanced imgui debug window
SPE-1872: New imgui widget to show actual speed profile
SPE-1872: Fixed actual speed for seam moves and at extrusion/travel/wipe start
SPE-1872: Fixed rendering of wipe moves when actual speed view is selected
SPE-1872: Actual speed profile extended to travel and wipe moves
SPE-1872: Fixes in function recalculate_trapezoids() and method GCodeProcessor::TimeMachine::calculate_time() to smooth actual speed profile
SPE-1872: Added debug graphic to show move actual speed profile
SPE-1872: libvgcode library: replace volumetric flow rate data with mm3_per_mm to reduce memory usage
SPE-1872: Added visualization of actual volumetric flow rate
SPE-1872: Fixes in calculating actual speed
SPE-1872: Added visualization of actual speed in gcode preview
SPE-2124: Added command line option 'opengl-aa' to allow the user to turn on the automatic selection of max number of supported samples for OpenGL antialising
#12117: Reduced moire patterns by using the highest number of samples available for multisampling
New gcode visualization integration - Partially enabled imgui debug window
New gcode visualization integration - Fixed center of gravity calculation and rendering
New gcode visualization library - Interface for estimated times
New gcode visualization library - Tool marker rendering
New gcode visualization library - Axes aligned bounding boxes calculation
Removed obsolete debug code
New gcode visualization library - Added statistic of used memory
New gcode visualization library - Separation of tool colors and color changes colors to simplify client code
Added missing include
New gcode visualization library - Added print color changes detection
New gcode visualization library - Modified OpenGL ES context detection
New gcode visualization library - Another makefile cleanup
New gcode visualization library - Makefiles cleanup
New gcode visualization library - Added suppression of error 'This function or variable may be unsafe' in VS2022
New gcode visualization library - Compatibility with OpenGL ES
New gcode visualization library - Interface cleanup and documentation
New gcode visualization library - Extended interface to give access to estimated times
New gcode visualization integration - Toggling of top layer only view state
New gcode visualization integration - Removed imperial units from tool position data
Small refactoring
New gcode visualization library - Custom values for travel and wipe moves radius
New gcode visualization library - Allow customization of range colors
New gcode visualization library - Partial update of interface comments/documentation
New gcode visualization integration - Follow-up of 35ee55e29bb231fd01a2eb71ae293832a37ca65d - Better fix for toolpaths visible range when toggling options' visibility
New gcode visualization integration - Fixed toolpaths reset
New gcode visualization library - Fixed method set_option_color()
New gcode visualization library - Fixed method ViewerImpl::set_extrusion_role_color()
New gcode visualization library - Added methods to release gpu resources on demand.
New gcode visualization library - Travel and wipe moves as options
New gcode visualization integration - Fixed toolpaths visible range when toggling options' visibility
New gcode visualization integration - Fixed management of gcode preview view type
New gcode visualization - Fixed wrong include
New gcode visualization - Added missing headers
New gcode visualization - Refactoring + added missing headers
New gcode visualization - New code set as standalone library + embed glad library to load OpenGL functions
New gcode visualization - Fixed errors and warnings when building the new code as a standalone library
New gcode visualization integration - Fixed layers ordering in pre-gcode preview
New gcode visualization integration - Fixed objects' tool colors in pre-gcode preview
Code cleanup
New gcode visualization integration - Tool position properties data window
New gcode visualization integration - Fixed in export toolpaths to obj
New gcode visualization - Inlining in source code
Refactoring
New gcode visualization integration - Export toolpaths to obj
Some refactoring and warning fix
New gcode visualization integration - Customizable travel moves colors
New gcode visualization integration - Customizable options colors
New gcode visualization integration - Customizable extrusion roles colors
New gcode visualization integration - Fixed pre-gcode preview layers times
New gcode visualization integration - Modify pre-gcode preview to use the new toolpaths renderer, objects WIP
New gcode visualization - Modify pre-gcode preview to use the new toolpaths renderer, WIP (brim/skirt/wipe tower)
New gcode visualization integration - Do not reset visible range when toggling options/roles visibility
New gcode visualization - Fixed color of first vertex of top layer (when top layer only option is enabled)
New gcode visualization - Customizable travels and wipes segment radius
New gcode visualization integration - Removed tech ENABLE_GCODE_VIEWER_STATISTICS
New gcode visualization integration - Added check of OpenGL version
New gcode visualization integration - Removed GCodeProcessorResult::spiral_vase_layers
Another bunch of warnings fixes
Fixed warnings
New gcode visualization integration - Removal of old visualization
Fixed includes
New gcode visualization integration - File structure of new code separated in api + src
New gcode visualization integration - View ranges management moved to new visualizer
New gcode visualization integration - Fixed top layer only visualization for MMU printers
New gcode visualization integration - Removed dependency on imgui from new visualizer
Some refactoring
New gcode visualization integration - Removed dependency on Slic3r::GCodeProcessorResult from new visualizer
New gcode visualization integration - Moves' data conversion moved to client side
New gcode visualization: layers times refactoring
A bunch of fixes for the new gcode visualization
New gcode visualization: render in gray color layers containing pause print or custom gcode options when in Color Print view
New gcode visualization integration - Tool colors
New gcode visualization integration - Layers times
New gcode visualization integration - Travels and Extrusion roles times
Fixed detection of start/end of contiguous extrusion paths
New gcode visualization integration - Extrusion roles
New gcode visualization integration - Colors
New gcode visualization integration - Tool position
Center of gravity and tool marker may both be rendered with fixed screen size and a scaling factor
Fixed rendering of options in new gcode visualization
Tool marker NOT rendered by the new visualization code
Center of gravity marker NOT rendered by the new visualization code
Fixed toolpaths_cog shaders
Tool position window for new gcode visualization
Top layer only coloring for neww gcode visualization
Refactoring in preview's new visualization
Hidden imgui debug dialog for new visualization in preview
Synchronization of moves between old and new visualization
Fixed missing gcode window in new visualization
Rendering of debug imgui dialog moved from class libvgcode::Viewer to class libvgcode::Toolpaths + warnings fixing
Some functionality moved from class libvgcode::Viewer to class libvgcode::Toolpaths
Some refactoring and cleanup
Refatoring of PathVertex and Toolpaths::load()
SPE-1982: Tech ENABLE_NEW_GCODE_VIEWER - 1st installment of new toolpaths rendering code (WIP)
text=Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?
[hint:Chamber temperature]
text=Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.