mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-09-30 11:12:35 +02:00
extract_nozzle_mapping_from_3mf has a single-active-extruder shortcut (added in #851 for #827) at threemf_tools.py:354 that runs before the per-filament group_id mapping. It fires whenever extruder_nozzle_stats reports exactly one extruder as active. On multi-nozzle Bambu printers (H2D / H2D Pro / X2D / H2C) the slicer under-reports the second extruder when its nozzle volume-type isn't enumerated in the slice's profile (common with HT-AMS / High-Flow asymmetric setups, e.g. HT-AMS feeding the right nozzle on an H2D): ['Standard#1', 'Standard#0'] even when both extruders are genuinely used. sum(active_extruders) == 1 → every filament was force-assigned to physical_extruder_map[active_idx], the authoritative group_id was discarded, and the Filament Mapping panel showed both filaments badged L with the auto-match hard filter blocking the wrong-nozzle tray as "Type not found". Bug is parser-side and model-agnostic, not gated on AMS hardware — typical dual-AMS H2D slices contain ['Standard#1', 'Standard#1'] (sum==2), never enter the shortcut, and work fine. Physical extrude routing was not affected (gcode + project_file nozzle_mapping path from #1780 is authoritative). User-visible harm: wrong L/R badge and no auto-match for the second nozzle. Gate the shortcut on len(distinct_group_ids) <= 1 from slice_info.config. The slice_info parse is hoisted above the shortcut and reused by Priority 1, so the gate adds zero extra I/O. The gate only narrows the shortcut — it can't widen the bug onto any previously-working slice. Generalizes to H2C and any N-nozzle printer for free (no per-printer branching).