mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-11 01:41:03 +00:00
IMEXModesCtrl: - Primary mode is now a non-deletable first row stored as sentinel "primary" in imex_mode_names; older configs load cleanly - New rows default T0 → Primary when no tool assignment is stored - Filter "primary" from plater popup/cycle list to prevent double entry - imex_tools_per_gantry cap raised 2 → 4 Zone sizing: - Zone width/height now based on active tool count only; inactive tools donate their bed share to active neighbors (fixes 4-tool layout) - Active col/row maps (col_to_zone/row_to_zone) applied consistently across zone fills, collision strips, and primary zone box GCodeViewer animation: - Mirror position formula fixed: left-of-copy reflects across copy zone's left edge; right-of-copy reflects across right edge (T3 was rendering on top of T1) - strip_width/row_strip_height use active counts, matching PartPlate Stability: - Early return in calc_imex_zones() when tool_states is empty; prevents OOB crash on new printer with stale process-preset mode name - is_imex toggle in on_config_change calls refresh_imex_icons() so the plate mode icon appears without requiring a new project GCode: - Remove "primary" guard so Primary mode gcode field is emitted at start of print Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>