Adaptive Manufacturing Planner for U1: bead widths first, mixed nozzles later

I’ve started an open-source Snapmaker U1 slicer project called Adaptive Manufacturing Planner.

Project branch:

The goal is to explore a safer, staged way to balance detail, strength, and print time on the U1.

Stage 1: Adaptive bead-width planning

Software-only. The first focus is using existing slicer mechanisms, including role-specific line widths and Arachne-style wall generation, to preserve visible exterior detail while allowing wider internal walls or infill where appropriate.

Stage 2: Adaptive nozzle selection

U1 hardware-backed. This would test workflows where different U1 toolheads use different physical nozzle diameters, such as a smaller nozzle for exterior detail and a larger nozzle for inner shells, infill, or support.

This stage is intentionally blocked until real U1 hardware validation is available. I do not intend to bypass nozzle mismatch checks, calibration paths, firmware safety behavior, or Snapmaker validation logic.

Stage 3: Manufacturing optimization

Longer-term, the planner could consider region detail, structural importance, cosmetic visibility, tool-change cost, and predicted time savings.

Current branch status:

  • Hidden developer config flag exists.
  • Stock fallback planner value types exist.
  • No-op planner facade exists.
  • Sidecar cache value types exist.
  • Debug artifact value types, serializer, and standalone writer exist.
  • Observation summary and observation-to-debug mapping scaffolds exist.
  • Focused AMP tests pass.
  • No production slicer path consumes AMP yet.
  • No G-code, Arachne, Flow, LayerRegion, PerimeterGenerator, profile, UI, or Snapmaker validation behavior has been changed.

I’m looking for feedback from U1 users and Snapmaker maintainers:

  • Which models would make good test cases?
  • Which failure modes should this planner avoid first?
  • Would mixed physical nozzle sizes be useful on U1 if toolchange and purge overhead are controlled?
  • What nozzle combinations would actually be useful: 0.2/0.4, 0.4/0.8, 0.2/0.8, or something else?
  • Are there U1-specific calibration or nozzle-state constraints this project should account for early?

The goal is a reproducible, open project that can eventually be reviewed for Snapmaker Orca compatibility.

Interesting.

Hi, just one quick note—if you’d like direct advice from our engineering team, please also submit a support ticket here:https://snapmaker.formcrafts.com/general-inquiry

And some details about our Innovation Fund project in case you’re interested:

Introducing the Snapmaker U1 Innovation Fund

Yes, I think it could pair really well with FullSpectrum-style surface color work too.

My first goal is still bead-width and manufacturing planning, but the same “where does detail actually matter?” layer could eventually help with visible-surface color planning: skins, logos, text, trim faces, speaker rings, badges, that kind of thing.

So instead of applying color-mixing logic to the whole model, AMP could eventually help limit it to the visible/cosmetic regions where it is actually useful.

Thank you, Zoe. That helps.

I’ll use the support-ticket path for the direct engineering-feedback request so it is routed through the right channel.

Current public branch:

The current AMP branch is still behavior-neutral: no production slicer path consumes the planner, no G-code output changes, and no Snapmaker nozzle validation or safety paths are bypassed.

The main feedback I’m looking for early is around U1-specific constraints:

  • nozzle-state validation
  • toolhead/nozzle calibration assumptions
  • toolchange and purge cost
  • whether mixed physical nozzle sizes are realistic on U1
  • what test models would expose failure modes before this ever affects toolpaths

Stage 2 mixed physical nozzle behavior remains blocked until U1 hardware validation is possible.

Thanks again for pointing me in the right direction.

I’d be interested in understanding your sequencing strategy here. Starting with bead width optimization before introducing multiple nozzle types makes sense from a process control perspective, but I’d push back slightly on the timeline.

Have you already characterized your base nozzle performance across different extrusion rates and temperatures. That baseline is critical before you layer in complexity. I’ve seen teams optimize bead widths in isolation only to find their assumptions break down once they introduce a second nozzle with different flow dynamics.

A few specific things to consider:

For the bead width phase: Document your findings at 3-4 different line speeds and material temperatures. Single-condition optimization tends to be brittle. If you’re using standard extrusion math, validate it against actual print samples—tolerances often run ±0.15mm even in controlled conditions.

For the mixed nozzle phase: I’d actually recommend running some parallel characterization work now rather than waiting. You don’t need full manufacturing planning, but understanding viscosity differences between nozzle sizes takes time. Starting that discovery now could compress your timeline later.

What’s driving the sequencing decision—is it resource constraints, or are you genuinely seeing manufacturing complexity that requires phased approach. There’s a real difference, and it changes whether this roadmap makes sense.

Also curious what platform you’re targeting. The adaptive planning layer will have very different complexity depending on whether you’re working with FDM, material jetting, or something else entirely.

I appreciate your thoughts, really do. That’s a fair critique.

The sequencing is not because I think bead width alone solves the whole problem. It’s because I see AMP as a resolution-allocation problem first, not a U1-only mixed-nozzle feature.

From my end-user perspective, the goal is getting the smallest controlled, repeatable detail I can in X, Y, and Z where it matters, without forcing the entire part to pay that fine-detail penalty.

So for a single-nozzle printer, AMP can still be useful through line width, layer height, visible-surface preservation, and internal/bulk region planning. For toolchangers or mixed-nozzle machines, the same planning layer can eventually choose between physical tools or nozzle sizes once the hardware behavior is understood.

U1 is my first concrete target because it sits in a really good price/options sweet spot for this kind of work, and I plan on using one as the validation platform. But I don’t want the architecture to be U1-only. There are already multiple toolchanger-style machines out there, with more coming, so the planner should stay general where possible and only make hardware-specific decisions behind a validated platform layer.

I agree that bead-width assumptions need real process characterization. We can start that now on available FDM hardware, including Bambu, as a proxy lane: speed vs actual bead width, temperature vs bead stability, dimensional error, and where slicer preview diverges from real extrusion.

That still won’t validate U1-specific mixed-nozzle behavior. U1-specific testing is still needed for nozzle-state validation, calibration, Z/tool offsets, purge/wipe behavior, toolchange cost, and bonding between different bead/nozzle regimes.

So the current roadmap is really:

  1. Profile-only slicer comparison.
  2. Single-nozzle FDM process characterization.
  3. Proxy testing on available hardware.
  4. U1-specific characterization when hardware is available.
  5. Only then allow planner output to influence bead-width or physical tool/nozzle decisions.

The target is FDM/FFF first. The bigger goal is not “speed first”; it’s spending resolution only where it earns its keep.

Mixed nozzles sounds amazing.

I’ve been playing with .28 layer height and adaptive layer height where needed, If you put some thought into this stuff you can shave hours with no compromise in quality.

Exactly — that’s the direction I’m trying to push this.

I’ve done the same kind of thing with larger layer heights and adaptive layer height, where you can save a surprising amount of time without giving up visible quality if you’re intentional about where the detail is actually needed.

That is really the core idea behind AMP for me: not “speed first,” but resolution allocation.

For single-nozzle printers, that can mean line width, layer height, outer wall/top surface protection, and wider internal/bulk regions where it makes sense. For toolchangers or mixed-nozzle machines, the same idea could eventually extend to physical nozzle/tool selection.

So mixed nozzles are the exciting long-term version, but I think the useful first step is proving the same idea with bead width, layer height, and profile-level experiments first.

If you have any examples of parts where adaptive layer height saved time without hurting quality, I’d be interested. Those would make good test cases for the benchmark set.

Wow you know your stuff. So glad to have you on the case. I’m all in on 3D printing. I’ve retired from my engineering and music careers.

"I don’t wanna work. I just wanna 3D print all day. "

Quick update: Benchmark Run 001 now has real Snapmaker Orca CLI-generated results using a local CLI-hardened Snapmaker Orca build.

The benchmark compares stock U1 0.4 profile slicing against the experimental effective-width/Arachne profile across six synthetic models.

Current result:

  • all 6 models produced stock-only G-code
  • all 6 models produced experimental-only G-code
  • all 6 same-plate stock-vs-experimental visual comparisons generated on the local CLI-hardened branch

Important caveats:

  • this is still profile-only slicing behavior
  • it does not prove print strength
  • it does not prove surface quality
  • it does not validate physical mixed-nozzle behavior

While setting up the benchmark, I found and opened three small Snapmaker Orca CLI hardening PRs:

These are separate from AMP planner behavior. They just make CLI slicing and benchmark automation more reliable.