[Toolchanger] Preheat is dropped if first layer is shorter than preheat time #271

Open
opened 2026-04-05 16:19:27 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @pm0u on 3/18/2026

Is there an existing issue for this problem?

  • I have searched the existing issues

OrcaSlicer Version

2.3.1

Operating System (OS)

Windows

OS Version

Win 11, CachyOS (Arch) Linux

Additional system information

N/A

Printer

Stealthchanger

How to reproduce

Multi extruder printer
Place a model that could use supports and has short layer time
Enable supports with a separate filament
Enable ooze prevention
Enable preheat time, set to longer than first layer time
Slice

Actual results

No M104 preheat is generated for the support filament

Expected results

M104 preheat would be generated as early as possible, I suppose immediately after print_start.

Project file & Debug log uploads

N/A

Checklist of files to include

  • Log file
  • Project file

Anything else?

4c57492bdb/src/libslic3r/GCode/GCodeProcessor.cpp (L793-L795)

This should be split to consider the cases of previous command vs print_start as different scenarios. In the case of print_start we want to preheat.

Something like

-            // we met the previous evenience of cmd, or the start position, stop inserting lines
-            if (rev_it != m_lines.rend() && (curr_cmd == cmd || is_start_pos(curr_cmd)))
-                break;
+            // we met the previous occurrence of cmd — already handled upstream, stop
+            if (rev_it != m_lines.rend() && curr_cmd == cmd)
+                break;
+
+            // hit print start boundary — insert here rather than dropping the preheat entirely
+            if (rev_it != m_lines.rend() && is_start_pos(curr_cmd)) {
+                // Logic to insert preheat here...
+                break;
+            }
*Originally created by @pm0u on 3/18/2026* ### Is there an existing issue for this problem? - [x] I have searched the existing issues ### OrcaSlicer Version 2.3.1 ### Operating System (OS) Windows ### OS Version Win 11, CachyOS (Arch) Linux ### Additional system information N/A ### Printer Stealthchanger ### How to reproduce Multi extruder printer Place a model that could use supports and has short layer time Enable supports with a separate filament Enable ooze prevention Enable preheat time, set to longer than first layer time Slice ### Actual results No M104 preheat is generated for the support filament ### Expected results M104 preheat would be generated as early as possible, I suppose immediately after print_start. ### Project file & Debug log uploads N/A ### Checklist of files to include - [ ] Log file - [ ] Project file ### Anything else? https://github.com/OrcaSlicer/OrcaSlicer/blob/4c57492bdbdb0ab7289506a62b50a20a8de98fac/src/libslic3r/GCode/GCodeProcessor.cpp#L793-L795 This should be split to consider the cases of previous command vs print_start as different scenarios. In the case of print_start we want to preheat. Something like ```diff - // we met the previous evenience of cmd, or the start position, stop inserting lines - if (rev_it != m_lines.rend() && (curr_cmd == cmd || is_start_pos(curr_cmd))) - break; + // we met the previous occurrence of cmd — already handled upstream, stop + if (rev_it != m_lines.rend() && curr_cmd == cmd) + break; + + // hit print start boundary — insert here rather than dropping the preheat entirely + if (rev_it != m_lines.rend() && is_start_pos(curr_cmd)) { + // Logic to insert preheat here... + break; + } ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#271