From 69a08915d10044d1ceae00fa0d1d59be64b08837 Mon Sep 17 00:00:00 2001 From: harrierpigeon Date: Wed, 30 Sep 2026 17:29:33 -0500 Subject: [PATCH] Belt: do not fail the G-code height check against belt travel check_multi_extruder_gcode_valid() compares each object's max Z with printable_height. On a belt printer machine Z is belt travel (a 3DBenchy on the BabyBelt Pro runs from Z=197 to Z=309 on a 69 mm printable_height), so every belt export set the over-height error bit and the CLI refused the plate with -102 "G-code in unprintable area". The preview already skips its ToolHeightOutside warning for the same reason; the export check now does too. The XY printable-area check is unchanged. --- src/libslic3r/GCode/GCodeProcessor.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 88ce95195f..c2aedd8262 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -2860,7 +2860,11 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const int valid = false; } } - if ( iter->second.max_print_z > plate_printable_height ) { //over height + // Belt printers: machine Z is belt travel, which grows without bound over a + // print, while printable_height is the clearance above the belt; the two are + // not comparable, so the over-height check is skipped, as the preview's + // ToolHeightOutside warning already is. + if ( !machine_frame_active && iter->second.max_print_z > plate_printable_height ) { //over height m_result.gcode_check_result.error_code |= (1 << 3); std::pair filament_to_object_id; filament_to_object_id.first = iter->first; @@ -2901,7 +2905,7 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const int } // check printable height - if ((extruder_id < printable_heights.size()) && (iter->second.max_print_z > printable_heights[extruder_id])) { + if (!machine_frame_active && (extruder_id < printable_heights.size()) && (iter->second.max_print_z > printable_heights[extruder_id])) { m_result.gcode_check_result.error_code |= (1 << 1); std::pair filament_to_object_id; filament_to_object_id.first = iter->first;