From 427f197ca98c5939e2d590130d7b201a5ff46c04 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Fri, 16 Dec 2022 23:07:05 +0800 Subject: [PATCH] fix sandwich mode for Arachene engine --- src/libslic3r/PerimeterGenerator.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 97fb33b576..b4feae31ad 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1310,6 +1310,22 @@ void PerimeterGenerator::process_arachne() } } + + if (this->print_config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) { + if (ordered_extrusions.size() > 1) { + std::vector extPs; + for (int i = 0; i < ordered_extrusions.size(); ++i) { + if (ordered_extrusions[i].extrusion->inset_idx == 0) + extPs.push_back(i); + } + for (int i = 0; i < extPs.size(); ++i) { + if (extPs[i] == 0 || (i > 0 && extPs[i] - 1 == extPs[i - 1])) + continue; + std::swap(ordered_extrusions[extPs[i]], ordered_extrusions[extPs[i] - 1]); + } + } + } + if (ExtrusionEntityCollection extrusion_coll = traverse_extrusions(*this, ordered_extrusions); !extrusion_coll.empty()) this->loops->append(extrusion_coll);