FIX: fix the customize compensation bug

jira: none
Change-Id: I2165bbecb7cf03888dad00d1fc76ee74bd2b0fc0
This commit is contained in:
zhimin.zeng 2025-03-03 17:39:42 +08:00 committed by lane.wei
parent b9c3cb89ec
commit f141425fee

View File

@ -91,12 +91,13 @@ void LayerRegion::auto_circle_compensation(SurfaceCollection& slices, const Auto
Point center; Point center;
double diameter = 0; double diameter = 0;
if (surface.expolygon.contour.is_approx_circle(max_deviation, max_variance, center, diameter)) { 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) { if (offset_value < counter_limit_min_value) {
offset_value = counter_limit_min_value; offset_value = counter_limit_min_value;
} else if (offset_value > counter_limit_max_value) { } else if (offset_value > counter_limit_max_value) {
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); Polygons offseted_polys = offset(surface.expolygon.contour, offset_value);
if (offseted_polys.size() == 1) { if (offseted_polys.size() == 1) {
surface.expolygon.contour = offseted_polys[0]; 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) { for (size_t i = 0; i < surface.expolygon.holes.size(); ++i) {
Polygon &hole = surface.expolygon.holes[i]; Polygon &hole = surface.expolygon.holes[i];
if (hole.is_approx_circle(max_deviation, max_variance, center, diameter)) { 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) { if (offset_value < hole_limit_min_value) {
offset_value = hole_limit_min_value; offset_value = hole_limit_min_value;
} else if (offset_value > hole_limit_max_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 // positive value means shrinking hole, which oppsite to contour
offset_value = -offset_value; offset_value = -offset_value;
offset_value += manual_offset / 2;
Polygons offseted_polys = offset(hole, offset_value); Polygons offseted_polys = offset(hole, offset_value);
if (offseted_polys.size() == 1) { if (offseted_polys.size() == 1) {
hole = offseted_polys[0]; hole = offseted_polys[0];