fix+feat: Snapmaker U1 — 5 bug fixes and 0.6mm / mixed-nozzle profiles (#12244 #12390 #12652 #12073 #12797 #11424) #273

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

Originally created by @kbaker827 on 3/18/2026

Summary

This PR addresses five open bugs and implements one enhancement request for the Snapmaker U1 toolchanger printer.


Bug fixes

#12244 – Machine acceleration limits ignored on Klipper

GCodeWriter::apply_print_config used only machine_max_acceleration_extruding as the cap when emitting SET_VELOCITY_LIMIT ACCEL=. On Klipper this command applies to every motion type, so the cap must be min(extruding_limit, machine_max_acceleration_x, machine_max_acceleration_y). Previously a user could set Motion Ability limits to 8700 mm/s² and sliced G-code would still contain ACCEL=10000.

#12652 – Resonance avoidance speed range not configured for U1

Add resonance_avoidance, min_resonance_avoidance_speed (40 mm/s) and max_resonance_avoidance_speed (90 mm/s) to the U1 machine profile, matching the printer's input-shaper characterisation (MZV, X≈54 Hz / Y≈47.5 Hz).

#12797 – Printhead crashes into tall printed part with 'by object' sequence

The U1 profile under-reported the toolhead envelope. Increased extruder_clearance_radius (65→80 mm), extruder_clearance_height_to_rod (27.5→60 mm), and added missing extruder_clearance_height_to_lid (130 mm) so OrcaSlicer's collision-avoidance geometry matches the real toolhead.

On toolchanger printers (machine_tool_change_time > 0) only one nozzle is active at a time — no cross-nozzle contamination risk. Skip check_mixture_of_pla_and_petg for these printers. Also fix the wiki hyperlink, which previously hard-coded the Bambu H2D article path.

#12390 – FilamentMapDialog shown on every slice for U1

try_pop_up_before_slice() fired for any printer with >1 extruder. The Filament Grouping dialog is specific to BBL dual-nozzle printers (H2D). Add an early-return for non-BBL printers and printers with ≠2 nozzles.


Enhancement

#11424 – Mixed nozzle sizes in one print (toolchanger)

OrcaSlicer already stores nozzle_diameter as a per-extruder array and resolves percentage-based line-width settings against the active extruder's nozzle size at slice time. This commit exposes that capability with two new machine variants:

Snapmaker U1 (0.6 nozzle) — all four tools at 0.6 mm

  • Layer height range 0.12–0.48 mm
  • Process profiles: 0.20 Standard, 0.30 Draft, 0.40 Extra Draft
  • Line widths tuned at 0.62 mm (105% of nozzle diameter)

Snapmaker U1 (0.4+0.6 nozzle) — T0/T1 = 0.4 mm, T2/T3 = 0.6 mm

  • 0.20 Standard profile uses percentage-based line widths (105% outer, 112% inner, 125% first layer) so every setting resolves to the correct nozzle diameter for whichever tool is active
  • Intended workflow: assign detail/outer-wall work to T0/T1, fast infill or large structural features to T2/T3

Files changed

File Change
src/libslic3r/GCodeWriter.cpp Cap Klipper accel using min(extruding, X, Y) limits
src/slic3r/GUI/PartPlate.cpp Skip PLA+PETG warning for toolchanger printers
src/slic3r/GUI/GLCanvas3D.cpp Fix wiki URL (remove H2D-specific path)
src/slic3r/GUI/FilamentMapDialog.cpp Guard pre-slice dialog to BBL dual-nozzle only
resources/profiles/Snapmaker/machine/Snapmaker U1 (0.4 nozzle).json Correct accel limits, resonance avoidance, extruder clearance
resources/profiles/Snapmaker/machine/Snapmaker U1 (0.6 nozzle).json NEW — all-0.6mm variant
resources/profiles/Snapmaker/machine/Snapmaker U1 (0.4+0.6 nozzle).json NEW — mixed nozzle variant
resources/profiles/Snapmaker/process/fdm_process_U1_0.6_common.json NEW — 0.6mm base process
resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json NEW
resources/profiles/Snapmaker/process/0.30 Draft @Snapmaker U1 (0.6 nozzle).json NEW
resources/profiles/Snapmaker/process/0.40 Extra Draft @Snapmaker U1 (0.6 nozzle).json NEW
resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4+0.6 nozzle).json NEW
resources/profiles/Snapmaker.json Register all new machine and process entries

Test plan

  • Slice a single-colour U1 print → FilamentMapDialog no longer appears
  • Set machine_max_acceleration_x/y below default_acceleration on Klipper → G-code respects the cap
  • PLA + PETG on U1 → no warning; same combo on H2D → warning + correct wiki link
  • Two-object 'by object' job on U1 → correct clearance check or warning
  • Load U1 (0.6 nozzle) profile → 0.20/0.30/0.40 process presets available, line widths ~0.62mm
  • Load U1 (0.4+0.6 nozzle) profile → assign T2/T3 (0.6mm) to infill, slice → line widths scale correctly per tool

🤖 Generated with Claude Code

*Originally created by @kbaker827 on 3/18/2026* ## Summary This PR addresses **five open bugs** and implements **one enhancement request** for the Snapmaker U1 toolchanger printer. --- ## Bug fixes ### #12244 – Machine acceleration limits ignored on Klipper `GCodeWriter::apply_print_config` used only `machine_max_acceleration_extruding` as the cap when emitting `SET_VELOCITY_LIMIT ACCEL=`. On Klipper this command applies to every motion type, so the cap must be `min(extruding_limit, machine_max_acceleration_x, machine_max_acceleration_y)`. Previously a user could set Motion Ability limits to 8700 mm/s² and sliced G-code would still contain `ACCEL=10000`. ### #12652 – Resonance avoidance speed range not configured for U1 Add `resonance_avoidance`, `min_resonance_avoidance_speed` (40 mm/s) and `max_resonance_avoidance_speed` (90 mm/s) to the U1 machine profile, matching the printer's input-shaper characterisation (MZV, X≈54 Hz / Y≈47.5 Hz). ### #12797 – Printhead crashes into tall printed part with 'by object' sequence The U1 profile under-reported the toolhead envelope. Increased `extruder_clearance_radius` (65→80 mm), `extruder_clearance_height_to_rod` (27.5→60 mm), and added missing `extruder_clearance_height_to_lid` (130 mm) so OrcaSlicer's collision-avoidance geometry matches the real toolhead. ### #12073 – PLA + PETG mixture warning / H2D wiki link shown for U1 On toolchanger printers (`machine_tool_change_time > 0`) only one nozzle is active at a time — no cross-nozzle contamination risk. Skip `check_mixture_of_pla_and_petg` for these printers. Also fix the wiki hyperlink, which previously hard-coded the Bambu H2D article path. ### #12390 – FilamentMapDialog shown on every slice for U1 `try_pop_up_before_slice()` fired for any printer with >1 extruder. The Filament Grouping dialog is specific to BBL dual-nozzle printers (H2D). Add an early-return for non-BBL printers and printers with ≠2 nozzles. --- ## Enhancement ### #11424 – Mixed nozzle sizes in one print (toolchanger) OrcaSlicer already stores `nozzle_diameter` as a per-extruder array and resolves percentage-based line-width settings against the active extruder's nozzle size at slice time. This commit exposes that capability with two new machine variants: **Snapmaker U1 (0.6 nozzle)** — all four tools at 0.6 mm - Layer height range 0.12–0.48 mm - Process profiles: 0.20 Standard, 0.30 Draft, 0.40 Extra Draft - Line widths tuned at 0.62 mm (105% of nozzle diameter) **Snapmaker U1 (0.4+0.6 nozzle)** — T0/T1 = 0.4 mm, T2/T3 = 0.6 mm - 0.20 Standard profile uses percentage-based line widths (105% outer, 112% inner, 125% first layer) so every setting resolves to the correct nozzle diameter for whichever tool is active - Intended workflow: assign detail/outer-wall work to T0/T1, fast infill or large structural features to T2/T3 --- ## Files changed | File | Change | |---|---| | `src/libslic3r/GCodeWriter.cpp` | Cap Klipper accel using min(extruding, X, Y) limits | | `src/slic3r/GUI/PartPlate.cpp` | Skip PLA+PETG warning for toolchanger printers | | `src/slic3r/GUI/GLCanvas3D.cpp` | Fix wiki URL (remove H2D-specific path) | | `src/slic3r/GUI/FilamentMapDialog.cpp` | Guard pre-slice dialog to BBL dual-nozzle only | | `resources/profiles/Snapmaker/machine/Snapmaker U1 (0.4 nozzle).json` | Correct accel limits, resonance avoidance, extruder clearance | | `resources/profiles/Snapmaker/machine/Snapmaker U1 (0.6 nozzle).json` | **NEW** — all-0.6mm variant | | `resources/profiles/Snapmaker/machine/Snapmaker U1 (0.4+0.6 nozzle).json` | **NEW** — mixed nozzle variant | | `resources/profiles/Snapmaker/process/fdm_process_U1_0.6_common.json` | **NEW** — 0.6mm base process | | `resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json` | **NEW** | | `resources/profiles/Snapmaker/process/0.30 Draft @Snapmaker U1 (0.6 nozzle).json` | **NEW** | | `resources/profiles/Snapmaker/process/0.40 Extra Draft @Snapmaker U1 (0.6 nozzle).json` | **NEW** | | `resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4+0.6 nozzle).json` | **NEW** | | `resources/profiles/Snapmaker.json` | Register all new machine and process entries | ## Test plan - [ ] Slice a single-colour U1 print → FilamentMapDialog no longer appears - [ ] Set `machine_max_acceleration_x/y` below `default_acceleration` on Klipper → G-code respects the cap - [ ] PLA + PETG on U1 → no warning; same combo on H2D → warning + correct wiki link - [ ] Two-object 'by object' job on U1 → correct clearance check or warning - [ ] Load U1 (0.6 nozzle) profile → 0.20/0.30/0.40 process presets available, line widths ~0.62mm - [ ] Load U1 (0.4+0.6 nozzle) profile → assign T2/T3 (0.6mm) to infill, slice → line widths scale correctly per tool 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#273