From e684f8fcc67464f852f61cb5b7389dfd3491982b Mon Sep 17 00:00:00 2001 From: wintergua Date: Wed, 19 Feb 2025 15:32:58 +0800 Subject: [PATCH] FIX: wipe tpwer should be no_brim_area jira-id: none Change-Id: Ia8b9c1639a62d90421932594b3709eba71b5e723 (cherry picked from commit 68eb40bc74d75fece451ed3b4b4b767b46c238b3) --- src/libslic3r/Brim.cpp | 10 ++++++++++ src/libslic3r/Print.cpp | 5 +++++ src/libslic3r/Print.hpp | 1 + 3 files changed, 16 insertions(+) diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index 76ff92fd3..68fc22c56 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -1057,6 +1057,16 @@ static ExPolygons outer_inner_brim_area(const Print& print, } std::vector filament_map = print.get_filament_maps(); + if (print.has_wipe_tower() && !print.get_fake_wipe_tower().outer_wall.empty()) { + ExPolygons expolyFromLines{}; + for (auto polyline : print.get_fake_wipe_tower().outer_wall.begin()->second) { + polyline.remove_duplicate_points(); + expolyFromLines.emplace_back(polyline.points); + expolyFromLines.back().translate(Point(scale_(print.get_fake_wipe_tower().pos[0]), scale_(print.get_fake_wipe_tower().pos[1]))); + } + expolygons_append(no_brim_area, expolyFromLines); + } + for (const PrintObject* object : print.objects()) { ExPolygons extruder_no_brim_area = no_brim_area; auto iter = std::find_if(objPrintVec.begin(), objPrintVec.end(), [object](const std::pair& item) { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index e826ec065..865cc7097 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1874,6 +1874,11 @@ void Print::process(std::unordered_map* slice_time, bool } this->set_done(psWipeTower); } + + if (this->has_wipe_tower()) { + m_fake_wipe_tower.set_pos({ m_config.wipe_tower_x.get_at(m_plate_index), m_config.wipe_tower_y.get_at(m_plate_index) }); + } + if (this->set_started(psSkirtBrim)) { this->set_status(70, L("Generating skirt & brim")); diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index a8ac93f86..6f55cc922 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -954,6 +954,7 @@ public: float get_wipe_tower_depth() const { return m_wipe_tower_data.depth; } BoundingBoxf get_wipe_tower_bbx() const { return m_wipe_tower_data.bbx; } Vec2f get_rib_offset() const { return m_wipe_tower_data.rib_offset; } + const FakeWipeTower& get_fake_wipe_tower() const { return m_fake_wipe_tower; } void set_check_multi_filaments_compatibility(bool check) { m_need_check_multi_filaments_compatibility = check; } bool need_check_multi_filaments_compatibility() const { return m_need_check_multi_filaments_compatibility; }