From 05e37d838c8a23d9fa18a47f2b86a9969e15e3b1 Mon Sep 17 00:00:00 2001 From: harrierpigeon Date: Wed, 7 Oct 2026 16:09:25 -0500 Subject: [PATCH] Belt G-code: the mixed-filament sub-layer pass rotates its origin too process_layer()'s sub-layer pass (several filaments in one layer without a purge tower) calls set_origin() per instance like the main instance loop, but not on_set_origin(), which on a belt printer runs the origin through the belt transform. Add the call so both passes place the instance the same way. Co-Authored-By: Claude Fable 5.1 --- src/libslic3r/GCode.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 6f4c15561f..a2d2ea80af 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -7321,6 +7321,9 @@ LayerResult GCode::process_layer( m_avoid_crossing_perimeters.use_external_mp_once(); m_last_obj_copy = this_object_copy; this->set_origin(unscale(offset)); + // Same as the main instance loop: a belt printer rotates the origin through + // the belt transform (BeltGCode::on_set_origin). + this->on_set_origin(&instance_to_print.print_object, offset); // --- Build emission plan --- // Each entry represents one travel_to_z + extrude pass. Per-object mode produces