mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-11 01:41:03 +00:00
Read IMEX geometry defaults from print_config_def instead of literals
Five sites carried a hardcoded fallback for imex_tools_per_gantry that had to match the value registered in print_config_def, with nothing enforcing the agreement, and several explanatory comments miscounted the sites they described or cited stale line numbers. Add imex_cfg_int/_float/_bool/_enum<T> to IMEXHelpers, which return the value registered for the key when it is absent from the config, so the registration is the single source and there is nothing left to keep in sync. Route every read of the IMEX geometry keys through them: 32 call sites across IMEXZones, PartPlate, GCodeViewer and Tab. The only direct lookup left is the bail in PartPlate::imex_multicolor_block_reason, which must not default because it reports a routing conflict and a defaulted grid would produce a false warning. imex_cfg_enum uses dynamic_cast on both halves rather than the type() comparison the others use: every ConfigOptionEnum<T> reports coEnum, so a type() check cannot tell one enum type from another and would cast a ConfigOptionEnum<OtherEnum> to the requested T. The ConfigOptionPercent : ConfigOptionFloat inheritance that rules dynamic_cast out for the float accessor has no analogue for enums. Correct the comments that prompted this: the cache-key input list in PartPlate named five inputs for a nine-part key, the ImexMarkerKey note in GCodeViewer called imex_tool_layout an input only the preview reads when the plate keys it too, and four file:line citations pointed at the wrong lines. Values are unchanged at every converted site; cache key strings keep their existing representation. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e45c241466
commit
6c67fcfe07
@@ -3408,7 +3408,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
||||
// pollute is_extruder_used with the *first* slot routed to the primary's
|
||||
// physical extruder, which is generally not the slot the user assigned to
|
||||
// the printing object. Same skip-primary pattern as the IMEX PA emission
|
||||
// path (GCode.cpp ~3265).
|
||||
// path (GCode.cpp:3917).
|
||||
//
|
||||
// For secondaries: translate physical -> logical via the per-plate
|
||||
// imex_head_filament_map (set by the IMEX ghost picker), with
|
||||
|
||||
Reference in New Issue
Block a user