Commit Graph

17194 Commits

Author SHA1 Message Date
Matthias Nott
285d040e4a fix: Exclude external spool from 16-material AMS limit
External spools (virtual trays) are not AMS slots and should not count
toward the firmware's 16-material limit. Fixes blocking error when using
4 AMS units (16 slots) plus an external spool (17 total).

Fixes #12135
2026-02-09 23:09:25 +01:00
Matthias Nott
d5b4d266c7 fix: Eliminate redundant Z coordinates in ZAA gcode output
extrude_to_xyz() unconditionally emitted Z on every extrusion move
via emit_xyz(), even when Z hadn't changed. With ZAA enabled, this
produced ~987K redundant Z coordinates (98.2% of all Z emissions),
causing 10-20% file bloat.

Now compares quantized Z values before and after, and only emits Z
when it actually differs at export precision (0.001mm). Reduces
ZAA gcode Z emissions from 1,038,468 to 50,022 while preserving
all legitimate contouring Z changes.
2026-02-09 22:19:39 +01:00
Matthias Nott
90cf80a1f8 fix: Correct Polyline3::split_at point insertion order
The split point was being prepended (append_before) to p1 instead of
appended, causing it to be placed at the start of the segment rather
than the end. This resulted in rogue extrusion jumps (stringing)
across the model during ZAA sloped extrusions.

Also adds missing append/append_before calls in the exact-point
(index != -1) branch, which previously lost the split point entirely.
2026-02-09 22:19:31 +01:00
Matthias Nott
963f8d86b7 feat: Add Z Anti-Aliasing (ZAA) contouring support
Port Z Anti-Aliasing from BambuStudio-ZAA (https://github.com/adob/BambuStudio-ZAA)
to OrcaSlicer. ZAA eliminates stair-stepping on curved and sloped top surfaces
by raycasting each extrusion point against the original 3D mesh and micro-adjusting
Z height to follow the actual surface geometry.

Key changes:
- Add ContourZ.cpp raycasting algorithm (~330 lines)
- Extend geometry with 3D support (Point3, Line3, Polyline3, MultiPoint3)
- Template arc fitting for 2D/3D compatibility
- Change ExtrusionPath::polyline from Polyline to Polyline3
- Add 5 ZAA config options (zaa_enabled, zaa_min_z, etc.)
- Add posContouring pipeline step in PrintObject
- Update GCode writer for 3D coordinate output
- Add ZAA settings UI in Print Settings > Quality
- Add docs/ZAA.md with usage and implementation details

ZAA is opt-in and disabled by default. When disabled, the slicing pipeline
is unchanged.
2026-02-09 20:42:26 +01:00
Sabriel-Koh
cae1567726 fix: Show Labels and Show Overhang toggles not being saved (#12218)
* fix: Show Labels and Show Overhang toggles not being saved

* refactor: use get_bool and add comments
2026-02-09 22:27:03 +08:00
Derrick
e14e186bb7 Fix wipe tower loaded outside of plate boundaries (#12191)
* 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
2026-02-09 22:25:41 +08:00
yw4z
9604b01656 Fix: tool position window glitch on Linux (#12195)
fill buffer
2026-02-09 11:07:51 -03:00
Rodrigo Faselli
084c58f365 500C temp tower Calib (#12103)
* 500C temp tower

* better model

* draco temp tower

Co-Authored-By: Ian Bassi <ian.bassi@outlook.com>

---------

Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-02-09 10:03:32 -03:00
Ian Bassi
ed1b03fe6d Reduce Orca weight: Resources to Draco (#12194)
# 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.
2026-02-09 10:48:29 +08:00
davyd
2f2f0df6af feat: Add File header G-code option and print_time_sec/filament_length_m placeholders (#12186)
## 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) |
|---|---|
| ![IMG_5285](https://github.com/user-attachments/assets/fdd2cc96-6593-4108-83f4-e272d5547467) | ![IMG_5286](https://github.com/user-attachments/assets/6cb4091a-4560-4596-93d9-49f2ff8f0a2b) |

## 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)
2026-02-08 23:56:28 +08:00
Noisyfox
d46cd65d7c Add Elegoo CC 2 profiles (#11240)
### NOTE: NOT TESTED

<img width="789" height="601" alt="image" src="https://github.com/user-attachments/assets/f0057c21-d169-4269-8bf1-ab9cb2f5d10d" />
<img width="1567" height="1065" alt="image" src="https://github.com/user-attachments/assets/5f4e3fcf-b294-4b56-810e-59d85caff4ef" />
2026-02-08 17:00:52 +08:00
Azi
e025860b2c feature:added option to save a profile as detached(no inheritance) (#7071)
* 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>
2026-02-06 23:02:48 +08:00
Maeyanie
bb30999673 Add support for Draco (.drc) format (#10681)
* 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>
2026-02-06 18:27:17 +08:00
Ian Bassi
dffaa5c0a9 Calibs: Process layer height (#11835)
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.
2026-02-06 17:37:24 +08:00
Derrick
78a5caf83b remove duplicate of warning notification for wipe tower and precise z (#12192)
Fix duplicate of confirmation window for prime tower and precise z warning notification

JIRA-23
2026-02-06 17:22:37 +08:00
Derrick
e6e6210120 Fix extruder name >2 extruder printers (#12190)
Fix for memory access violation when using printers other than bbl printers with >2 extruders.

JIRA-24
2026-02-06 16:55:35 +08:00
SoftFever
9e2cf00f0c Fix Bambu Lab camera feed / Add IsShown() check (#12156) (#12173) 2026-02-06 09:21:26 +08:00
SoftFever
5d121b12ee Fix a regression where the login panel is displayed even when the plugin is disabled (#12185)
Update GUI_App to show or hide the login panel based on the "installed_networking" setting.
2026-02-06 09:18:52 +08:00
Valerii Bokhan
98cb91110e Fix: Free camera panning/rotating fixed (#12174)
Fixes #10266
2026-02-05 19:57:23 +00:00
Ioannis Giannakas
1a156e419c Update Reduce infill retraction tooltip to include effect on Z-hop (#12184) 2026-02-05 15:10:42 +00:00
Argo
1aee0cf526 AMS Filament sync fix for locked Tool 1 & 2 (#12180)
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
2026-02-05 18:18:59 +08:00
SoftFever
bab3c72e4f Fix compare dialog alternate background color on windows (#10781)
**PROBLEM**
• Row colors not updating after switching dark mode and opening dialog again
• Fixes https://github.com/SoftFever/OrcaSlicer/issues/9902 and https://github.com/SoftFever/OrcaSlicer/issues/966

**IMPORTANT NOTE**
• Main source of problem: dialog not destroyed after closing

**BEFORE**
<img width="769" height="682" alt="Screenshot-20250918134833" src="https://github.com/user-attachments/assets/dd77696c-ad2d-4de7-aaab-f85dd558dbbe" />

**AFTER**
<img width="757" height="677" alt="Screenshot-20250918134857" src="https://github.com/user-attachments/assets/fd28941d-996d-410f-ab04-b13f1dd0170f" />
2026-02-05 18:04:15 +08:00
yw4z
d608d7dffe UI Fixes / Improvements (#12069)
* clone dialog - spin input stuck on selected

* fix advanced toggle label

* fix scrollbar appearing on project page welcome screen

* create slicing section on preferences

* reduce margins on tabs

* bbl part skip dialog

* Update filament_not_mactch.svg

* Update icon_qusetion.svg

* match hyperlink color on notifications

* fix position of notifications on slicing errors

* match background color of BBL > Calibration tab > Sidebar

* match look of BBL sidebars

* match bbl monitor icons

* match multi-device page margins

* bbl > monitor > print control buttons

* fix flush dialog showing text selection on buttons

* Printer network dialog > match combo box width
2026-02-04 11:40:02 +00:00
yw4z
ea3685aacb Tool position window Fixes / Improvements (#12068)
* init

* fix fold/unfold button direction

* remove window border

* remove unused icons

* add scaling support

* match libvgcode roles with orca terms

* fix expanding table window

* Update GCodeViewer.cpp

* fix translation support

* fix translations

* fix imgui styles
2026-02-04 11:38:05 +00:00
Rodrigo Faselli
72a2eaf82e Small memory optimization for some infills (#12063) 2026-02-03 12:46:31 -03:00
Ian Bassi
b954749310 Fix instance preview movement speed (#12154) 2026-02-03 12:46:02 -03:00
Ian Bassi
7c598841b8 AutoSlice Only on preview Tab (#12153) 2026-02-03 12:45:43 -03:00
Kiss Lorand
c302355467 Isolate narrow regions in internal solid surfaces for non-line infill patterns (#12107) 2026-02-03 12:44:56 -03:00
SoftFever
c12912e0df Fix Setup Wizard stuck on "Loading..." on Wayland (#12159)
# 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
2026-02-03 23:10:17 +08:00
SoftFever
9b4af7ca1a Fix hangs when trying to edit printer on Linux (#11714) (#11854)
On linux, some users report that attempting to edit the printer caused
OrcaSlicer to hang.
Fixes #11714
2026-02-03 23:10:02 +08:00
SoftFever
56f1f05f12 Fix Setup Wizard stuck on "Loading..." on Wayland
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
2026-02-03 14:47:08 +08:00
SoftFever
86d54863f7 rename agent 2026-02-03 12:01:19 +08:00
SoftFever
cf3d9118ab Merge branch 'main' into feature/orca_network_refactor 2026-02-02 23:51:39 +08:00
Noisyfox
b9d4b782c2 Fix crash when open AMS 2 humidity popup (#12123) 2026-02-02 23:50:12 +08:00
SoftFever
84faac2dd4 fix an issue the bbl printer not working 2026-02-02 23:48:22 +08:00
SoftFever
431943408b fix UI block issues 2026-02-02 18:12:19 +08:00
SoftFever
d817a4d5d4 Fix an issue that sync ams btn is not show/hide after printer agent changes 2026-02-02 12:21:41 +08:00
SoftFever
86421c6378 Use visible preset lookup for AMS filament fallback to ensure persistence across restarts 2026-02-01 23:54:21 +08:00
SoftFever
3da6f3bf77 Add SnapmakerPrinterAgent with filament sync support
Introduce SnapmakerPrinterAgent as a MoonrakerPrinterAgent subclass
that handles Snapmaker UI -specific filament detection
2026-02-01 21:51:36 +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
1e1ffe72f6 Merge branch 'main' into feature/orca_network_refactor 2026-02-01 00:08:11 +08:00
SoftFever
c37132768a Make the generic filament the default fallback instead of using filaments sorted alphabetically by name. (#12124) 2026-02-01 00:06:39 +08:00
SoftFever
d782141ca5 Add handling for unknown filament IDs and improve filament type resolution 2026-01-31 19:32:35 +08:00
SoftFever
5935832143 clean up 2026-01-31 01:04:27 +08:00
SoftFever
8d22fad30b badge support 2026-01-31 01:04:21 +08:00
SoftFever
7059789578 fix badge mark 2026-01-30 16:14:41 +08:00
SoftFever
01eed59ee2 try to fix flatpak 2 2026-01-29 22:28:25 +08:00
SoftFever
a6719041a5 try to fix flatpak 2026-01-29 19:19:37 +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
95ea712f3c fix issues with AFC 2026-01-29 15:35:52 +08:00