Extra perimeters fix

This commit is contained in:
PavelMikus 2023-01-11 14:32:46 +01:00 committed by Pavel Mikuš
parent d20f880124
commit 9ccb413c02
3 changed files with 5 additions and 11 deletions

View file

@ -837,12 +837,8 @@ std::tuple<std::vector<ExtrusionPaths>, Polygons> generate_extra_perimeters_over
for (size_t i = 0; i < anchor_areas_w_delta_anchor_size.size() - 1; i++) {
// Then, clip off each anchor area by the next area expanded back to original size, so that this smaller anchor region is only where larger wouldnt fit
Polygons clipped = diff(anchor_areas_w_delta_anchor_size[i], expand(anchor_areas_w_delta_anchor_size[i + 1],
deltas[i], EXTRA_PERIMETER_OFFSET_PARAMETERS));
// Finally, intersect the region with clipped part
anchor_areas_w_delta_anchor_size[i] = intersection(anchor_areas_w_delta_anchor_size[i],
expand(clipped, deltas[i + 1] + 0.1 * overhang_flow.scaled_spacing(),
EXTRA_PERIMETER_OFFSET_PARAMETERS));
anchor_areas_w_delta_anchor_size[i] = diff(anchor_areas_w_delta_anchor_size[i], expand(anchor_areas_w_delta_anchor_size[i + 1],
deltas[i + 1], EXTRA_PERIMETER_OFFSET_PARAMETERS));
}
for (size_t i = 0; i < anchor_areas_w_delta_anchor_size.size(); i++) {

View file

@ -780,9 +780,6 @@ bool PrintObject::invalidate_state_by_config_options(
bool PrintObject::invalidate_step(PrintObjectStep step)
{
bool invalidated = Inherited::invalidate_step(step);
if (invalidated && step == posSupportSpotsSearch) {
this->m_shared_regions->generated_support_points.reset();
}
// propagate to dependent steps
if (step == posPerimeters) {

View file

@ -265,8 +265,9 @@ std::vector<ExtrusionLine> check_extrusion_entity_stability(const ExtrusionEntit
float sign = (prev_layer_boundary.distance_from_lines<true>(curr_point.position) + 0.5f * flow_width) < 0.0f ? -1.0f : 1.0f;
curr_point.distance *= sign;
float max_bridge_len = params.bridge_distance / (1.0f + std::abs(curr_point.curvature));
float max_bridge_len = params.bridge_distance /
((1.0f + std::abs(curr_point.curvature)) * (1.0f + std::abs(curr_point.curvature)));
if (curr_point.distance > 2.0f * flow_width) {
line_out.form_quality = 0.8f;