From 412564cae3e72caae3d626962e9065df99dd9621 Mon Sep 17 00:00:00 2001 From: harrierpigeon Date: Fri, 2 Oct 2026 01:11:59 -0500 Subject: [PATCH] Belt: document the frame of the exclude-object outlines EXCLUDE_OBJECT_DEFINE keeps plate coordinates on a belt printer: the frame after the slicing rotation is undone and before the G-code axis remap and machine-frame shear, which is where the object stands on the belt. Raised in Hanif Koh's review of #14394. --- src/libslic3r/GCode.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 151efbf6b2..360e35cae2 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -10289,6 +10289,10 @@ std::string GCode::set_object_info(Print *print) { for (PrintInstance& inst : object->instances()) { inst.unique_id = unique_id++; inst.id = inst_id++; + // Outlines are in plate coordinates. On a belt printer that is the frame after + // the slicing rotation has been undone and before the G-code axis remap and + // machine-frame shear: where the object stands on the belt, which is what an + // object picker shows. Klipper cancels by name, so nothing depends on more. auto bbox = inst.get_bounding_box(); auto center = print->translate_to_print_space(Vec2d(bbox.center().x(), bbox.center().y())); auto inst_name = get_instance_name(object, inst);