mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-04 18:00:37 +08:00
fixed issues, it now replicates the previous results
This commit is contained in:
parent
fa0986c0c5
commit
a98e2f893a
@ -76,8 +76,9 @@ ExtrusionPaths calculate_and_split_overhanging_extrusions(const ExtrusionPath
|
|||||||
for (size_t i = 1; i < extended_points.size(); i++) {
|
for (size_t i = 1; i < extended_points.size(); i++) {
|
||||||
result.back().polyline.append(Point::new_scale(extended_points[i].position));
|
result.back().polyline.append(Point::new_scale(extended_points[i].position));
|
||||||
result.back().overhang_attributes_mutable()->end_distance_from_prev_layer = extended_points[i].distance;
|
result.back().overhang_attributes_mutable()->end_distance_from_prev_layer = extended_points[i].distance;
|
||||||
if (std::abs(calculated_distances[sequence_start_index].first - calculated_distances[i - 1].first) < path.width() * 0.05 &&
|
|
||||||
std::abs(calculated_distances[sequence_start_index].second - calculated_distances[i - 1].second) < 0.05) {
|
if (std::abs(calculated_distances[sequence_start_index].first - calculated_distances[i].first) < path.width() * 0.0001 &&
|
||||||
|
std::abs(calculated_distances[sequence_start_index].second - calculated_distances[i].second) < 0.0001) {
|
||||||
// do not start new path, the attributes are similar enough
|
// do not start new path, the attributes are similar enough
|
||||||
} else if (i +1 < extended_points.size()) { // do not start new path if this is last point!
|
} else if (i +1 < extended_points.size()) { // do not start new path if this is last point!
|
||||||
// start new path, parameters differ
|
// start new path, parameters differ
|
||||||
@ -86,6 +87,7 @@ ExtrusionPaths calculate_and_split_overhanging_extrusions(const ExtrusionPath
|
|||||||
new_attrs.overhang_attributes->proximity_to_curled_lines = calculated_distances[i].second;
|
new_attrs.overhang_attributes->proximity_to_curled_lines = calculated_distances[i].second;
|
||||||
sequence_start_index = i;
|
sequence_start_index = i;
|
||||||
result.emplace_back(new_attrs);
|
result.emplace_back(new_attrs);
|
||||||
|
result.back().polyline.append(Point::new_scale(extended_points[i].position));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,17 +554,22 @@ void PrintObject::calculate_overhanging_perimeters()
|
|||||||
curled_lines[l->id()] = AABBTreeLines::LinesDistancer<CurledLine>{l->curled_lines};
|
curled_lines[l->id()] = AABBTreeLines::LinesDistancer<CurledLine>{l->curled_lines};
|
||||||
unscaled_polygons_lines[l->id()] = AABBTreeLines::LinesDistancer<Linef>{to_unscaled_linesf(l->lslices)};
|
unscaled_polygons_lines[l->id()] = AABBTreeLines::LinesDistancer<Linef>{to_unscaled_linesf(l->lslices)};
|
||||||
}
|
}
|
||||||
|
curled_lines[size_t(-1)] = {};
|
||||||
|
unscaled_polygons_lines[size_t(-1)] = {};
|
||||||
|
|
||||||
for (Layer *l : this->layers()) {
|
for (Layer *l : this->layers()) {
|
||||||
|
if (l->id() == 0) { // first layer, do not split
|
||||||
|
continue;
|
||||||
|
}
|
||||||
for (LayerRegion *layer_region : l->regions()) {
|
for (LayerRegion *layer_region : l->regions()) {
|
||||||
if (regions_with_dynamic_overhangs.find(layer_region->m_region) == regions_with_dynamic_overhangs.end()) {
|
if (regions_with_dynamic_overhangs.find(layer_region->m_region) == regions_with_dynamic_overhangs.end()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ExPolygons prev_layer_polygon = l->lower_layer == nullptr ? ExPolygons() : l->lower_layer->lslices;
|
size_t prev_layer_id = l->lower_layer ? l->lower_layer->id() : size_t(-1);
|
||||||
layer_region->m_perimeters =
|
layer_region->m_perimeters =
|
||||||
ExtrusionProcessor::calculate_and_split_overhanging_extrusions(&layer_region->m_perimeters,
|
ExtrusionProcessor::calculate_and_split_overhanging_extrusions(&layer_region->m_perimeters,
|
||||||
unscaled_polygons_lines[l->id()],
|
unscaled_polygons_lines[prev_layer_id],
|
||||||
curled_lines[l->id()]);
|
curled_lines[prev_layer_id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user