Fix a bug that overhang slowdown won't work when top z is 0 #1763

This commit is contained in:
SoftFever 2023-08-10 21:09:27 +08:00
parent 7b88104870
commit 333a5067ec

View File

@ -322,29 +322,10 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime
// outside the grown lower slices (thus where the distance between // outside the grown lower slices (thus where the distance between
// the loop centerline and original lower slices is >= half nozzle diameter // the loop centerline and original lower slices is >= half nozzle diameter
if (remain_polines.size() != 0) { if (remain_polines.size() != 0) {
if (!((perimeter_generator.object_config->enable_support || perimeter_generator.object_config->enforce_support_layers > 0) extrusion_paths_append(paths, std::move(remain_polines), overhang_sampling_number - 1, int(0),
&& perimeter_generator.object_config->support_top_z_distance.value == 0)) { erOverhangPerimeter, perimeter_generator.mm3_per_mm_overhang(),
extrusion_paths_append(
paths,
std::move(remain_polines),
overhang_sampling_number - 1,
int(0),
erOverhangPerimeter,
perimeter_generator.mm3_per_mm_overhang(),
perimeter_generator.overhang_flow.width(), perimeter_generator.overhang_flow.width(),
perimeter_generator.overhang_flow.height()); perimeter_generator.overhang_flow.height());
} else {
extrusion_paths_append(
paths,
std::move(remain_polines),
overhang_sampling_number - 1,
int(0),
role,
extrusion_mm3_per_mm,
extrusion_width,
(float)perimeter_generator.layer_height);
}
} }
// Reapply the nearest point search for starting point. // Reapply the nearest point search for starting point.
@ -595,9 +576,7 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p
ExtrusionPaths paths; ExtrusionPaths paths;
// detect overhanging/bridging perimeters // detect overhanging/bridging perimeters
if (perimeter_generator.config->detect_overhang_wall && perimeter_generator.layer_id > perimeter_generator.object_config->raft_layers if (perimeter_generator.config->detect_overhang_wall && perimeter_generator.layer_id > perimeter_generator.object_config->raft_layers) {
&& !((perimeter_generator.object_config->enable_support || perimeter_generator.object_config->enforce_support_layers > 0) &&
perimeter_generator.object_config->support_top_z_distance.value == 0)) {
ClipperLib_Z::Path extrusion_path; ClipperLib_Z::Path extrusion_path;
extrusion_path.reserve(extrusion->size()); extrusion_path.reserve(extrusion->size());
BoundingBox extrusion_path_bbox; BoundingBox extrusion_path_bbox;