From f141425feea0e5735aa174521748dee030d2d7d6 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Mon, 3 Mar 2025 17:39:42 +0800 Subject: [PATCH] FIX: fix the customize compensation bug jira: none Change-Id: I2165bbecb7cf03888dad00d1fc76ee74bd2b0fc0 --- src/libslic3r/LayerRegion.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index 98bee6d6b..0ce0b2c2d 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -91,12 +91,13 @@ void LayerRegion::auto_circle_compensation(SurfaceCollection& slices, const Auto Point center; double diameter = 0; if (surface.expolygon.contour.is_approx_circle(max_deviation, max_variance, center, diameter)) { - double offset_value = scale_(counter_speed_coef * limited_speed) + counter_diameter_coef * diameter + counter_compensate_coef + manual_offset; + double offset_value = scale_(counter_speed_coef * limited_speed) + counter_diameter_coef * diameter + counter_compensate_coef; if (offset_value < counter_limit_min_value) { offset_value = counter_limit_min_value; } else if (offset_value > counter_limit_max_value) { offset_value = counter_limit_max_value; } + offset_value += manual_offset / 2; Polygons offseted_polys = offset(surface.expolygon.contour, offset_value); if (offseted_polys.size() == 1) { surface.expolygon.contour = offseted_polys[0]; @@ -107,7 +108,7 @@ void LayerRegion::auto_circle_compensation(SurfaceCollection& slices, const Auto for (size_t i = 0; i < surface.expolygon.holes.size(); ++i) { Polygon &hole = surface.expolygon.holes[i]; if (hole.is_approx_circle(max_deviation, max_variance, center, diameter)) { - double offset_value = scale_(hole_speed_coef * limited_speed) + hole_diameter_coef * diameter + hole_compensate_coef + manual_offset ; + double offset_value = scale_(hole_speed_coef * limited_speed) + hole_diameter_coef * diameter + hole_compensate_coef; if (offset_value < hole_limit_min_value) { offset_value = hole_limit_min_value; } else if (offset_value > hole_limit_max_value) { @@ -115,6 +116,7 @@ void LayerRegion::auto_circle_compensation(SurfaceCollection& slices, const Auto } // positive value means shrinking hole, which oppsite to contour offset_value = -offset_value; + offset_value += manual_offset / 2; Polygons offseted_polys = offset(hole, offset_value); if (offseted_polys.size() == 1) { hole = offseted_polys[0];