From 3752144995e65de48d43f435d4f407613ca4c762 Mon Sep 17 00:00:00 2001 From: harrierpigeon Date: Fri, 2 Oct 2026 01:07:42 -0500 Subject: [PATCH] Belt: do not refuse a brim because the prime tower setting is on enable_prime_tower stays on for any multi-filament project, but a belt printer never prints the classic tower and the belt purge prism is an ordinary object that never takes a brim, so every brim on a multi-filament belt print was refused for nothing. Raised in Hanif Koh's review of #14394. --- src/libslic3r/Print.cpp | 7 +++---- tests/fff_print/test_skirt_brim.cpp | 7 +++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 8f70405307..5bfdfe8eac 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1420,11 +1420,10 @@ StringObjectException Print::validate(std::vector *warnin return { L("Draft shield is not compatible with belt printer mode.") }; // Belt brim spans many layers and owns the layers below the object, which - // neither the prime tower nor spiral vase can share. + // spiral vase cannot share. The prime tower setting is no obstacle: belt + // printers never print the classic tower, and the belt purge prism is an + // ordinary object that never takes a brim. if (this->has_belt_brim()) { - if (m_config.enable_prime_tower.value) - return { L("Brim is not compatible with the prime tower on a belt printer. " - "Disable one of them.") }; if (m_config.spiral_mode.value) return { L("Brim is not compatible with spiral vase mode on a belt printer. " "Disable one of them.") }; diff --git a/tests/fff_print/test_skirt_brim.cpp b/tests/fff_print/test_skirt_brim.cpp index a34d28abae..5fa810106f 100644 --- a/tests/fff_print/test_skirt_brim.cpp +++ b/tests/fff_print/test_skirt_brim.cpp @@ -919,12 +919,15 @@ TEST_CASE("Belt inner-only leading brim does not reject the prime tower or spira CHECK_FALSE(print.objects().front()->has_belt_brim()); CHECK(print.validate().string.empty()); } - SECTION("a real inner brim still rejects the prime tower") { + // enable_prime_tower stays on for any multi-filament project, but a belt printer never + // prints the classic tower, so the setting alone must not cost the print its brim. + SECTION("a real inner brim is accepted with the prime tower setting on") { Print print; Model model; init_inner_leading_with_prime_tower(print, model, 4); CHECK(print.objects().front()->has_belt_brim()); - CHECK_FALSE(print.validate().string.empty()); + CHECK(print.validate().string.empty()); + CHECK_FALSE(gcode(print).empty()); } }