Treat internal and external perimeters the same for the purpose of ZAA

This commit is contained in:
Aleksandr Dobkin
2026-03-26 03:12:47 -07:00
parent 95736445a4
commit a5e12529f8

View File

@@ -89,10 +89,11 @@ static bool contour_extrusion_path(LayerRegion *region, const sla::IndexedMesh &
min_down = -(height + 0.1); min_down = -(height + 0.1);
} }
if (is_perimeter(path.role())) {
double slope_rad = slope_from_normal(normal); double slope_rad = slope_from_normal(normal);
double slope_degrees = slope_rad * 180.0 / M_PI; double slope_degrees = slope_rad * 180.0 / M_PI;
if (d > min_down && minimize_perimeter_height_angle > 0 && minimize_perimeter_height_angle < slope_degrees && path.role() == erExternalPerimeter) { if (d > min_down && minimize_perimeter_height_angle > 0 && minimize_perimeter_height_angle < slope_degrees) {
double adjustment = follow_slope_down(slope_rad, half_width); double adjustment = follow_slope_down(slope_rad, half_width);
if (adjustment > 0) { if (adjustment > 0) {
throw RuntimeError("ContourZ: got positive adjustment"); throw RuntimeError("ContourZ: got positive adjustment");
@@ -102,6 +103,7 @@ static bool contour_extrusion_path(LayerRegion *region, const sla::IndexedMesh &
d = min_down; d = min_down;
} }
} }
}
if (d > max_up + 0.03 || d < min_down) { if (d > max_up + 0.03 || d < min_down) {
d = 0; d = 0;
@@ -111,8 +113,8 @@ static bool contour_extrusion_path(LayerRegion *region, const sla::IndexedMesh &
} }
} }
if (path.role() == erExternalPerimeter && d > 0) { if (is_perimeter(path.role()) && d > 0) {
// do not increase height of external perimeters as this may create an appearance of a seam // do not increase height of perimeters as this may create an appearance of a seam
d = 0; d = 0;
} }