Decouple Slicing From Machine Frame Logic (#21)

* minor logic swap

* first attempt, has a race condition

* fixed the offset issue

* found a solution, I think things work now (at least once I quash this race condition)

* still chasing down race conditions

* add manual shear / scale order strategy swap

* tweak manual shear, fix ui uninitialization crash

* fix z height / g-code desync issue

* fix shear then scale cutoff planes

* getting closer

* fix support termination planes

* fix incorrect offsets in shear-then-scale mode

* test - fix overextrusion due to model/layer scale
This commit is contained in:
Joseph Robertson
2026-05-18 19:01:43 -05:00
committed by GitHub
parent 8fa6a4602b
commit 6a2d690f45
19 changed files with 621 additions and 46 deletions
+12
View File
@@ -104,6 +104,15 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
"gcode_remap_x",
"gcode_remap_y",
"gcode_remap_z",
// Machine-frame transforms (only affect G-code output, not slicing).
"gcode_shear_x", "gcode_shear_x_angle", "gcode_shear_x_from",
"gcode_shear_y", "gcode_shear_y_angle", "gcode_shear_y_from",
"gcode_shear_z", "gcode_shear_z_angle", "gcode_shear_z_from",
"gcode_scale_x", "gcode_scale_x_angle",
"gcode_scale_y", "gcode_scale_y_angle",
"gcode_scale_z", "gcode_scale_z_angle",
"belt_gcode_transform_order",
"post_gcode_remap_x", "post_gcode_remap_y", "post_gcode_remap_z",
"belt_origin_snap_x", "belt_origin_offset_x",
"belt_origin_snap_y", "belt_origin_offset_y",
"belt_origin_snap_z", "belt_origin_offset_z",
@@ -310,6 +319,9 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
|| opt_key == "belt_scale_y_angle"
|| opt_key == "belt_scale_z"
|| opt_key == "belt_scale_z_angle"
|| opt_key == "belt_mesh_transform_order"
|| opt_key == "belt_preslice_global"
|| opt_key == "preslice_remap_global"
|| opt_key == "preslice_remap_x"
|| opt_key == "preslice_remap_y"
|| opt_key == "preslice_remap_z") {