From 82cfe092a853121b17990eb4c5a322ace76428db Mon Sep 17 00:00:00 2001 From: "jianjia.ma" Date: Wed, 10 Apr 2024 15:14:01 +0800 Subject: [PATCH] FIX: Top surface bridging fail on 3DHC & FL infill Add 45 degree angle offset when processing the bridge. Need to raise infill_direction to invalidate posPrepareInfill jira: 6774 Change-Id: I5e6bef3aa814b01c5f30398ac745937a67e3ef4c (cherry picked from commit 7b12cab10b88f432a11414f8caa1c6427777a1ba) --- src/libslic3r/Fill/FillFlippingLine.cpp | 2 +- src/libslic3r/PrintObject.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Fill/FillFlippingLine.cpp b/src/libslic3r/Fill/FillFlippingLine.cpp index fe6f56759d..4d16215c1e 100644 --- a/src/libslic3r/Fill/FillFlippingLine.cpp +++ b/src/libslic3r/Fill/FillFlippingLine.cpp @@ -196,7 +196,7 @@ void FillFlippingLine ::_fill_surface_single( coord_t line_spacing = coord_t(scale_(this->spacing) / params.density); // reduce density - if (params.density < 0.999) line_spacing *= 1.5; + if (params.density < 0.999) line_spacing *= 1.08; bb.merge(align_to_grid(bb.min, Point(line_spacing * 4, line_spacing * 4))); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index c78e7de4b5..884b8b6e79 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -2333,9 +2333,17 @@ void PrintObject::bridge_over_infill() }; // LAMBDA do determine optimal bridging angle - auto determine_bridging_angle = [](const Polygons &bridged_area, const Lines &anchors, InfillPattern dominant_pattern) { + auto determine_bridging_angle = [](const Polygons &bridged_area, const Lines &anchors, InfillPattern dominant_pattern, double infill_direction) { AABBTreeLines::LinesDistancer lines_tree(anchors); + // Check it the infill that require a fixed infill angle. + switch (dominant_pattern) { + case ip3DHoneycomb: + case ipFlippingLine: + return (infill_direction + 45.0) * 2.0 * M_PI / 360.; + default: break; + } + std::map counted_directions; for (const Polygon &p : bridged_area) { double acc_distance = 0;