mirror of
https://github.com/QIDITECH/QIDISlicer.git
synced 2026-01-30 23:48:44 +03:00
fix surface detection
This commit is contained in:
@@ -2364,11 +2364,17 @@ void PrintObject::bridge_over_infill()
|
|||||||
Polygons lightning_area;
|
Polygons lightning_area;
|
||||||
Polygons expansion_area;
|
Polygons expansion_area;
|
||||||
Polygons total_fill_area;
|
Polygons total_fill_area;
|
||||||
|
//w35
|
||||||
|
Polygons top_area;
|
||||||
for (const LayerRegion *region : layer->regions()) {
|
for (const LayerRegion *region : layer->regions()) {
|
||||||
Polygons internal_polys = to_polygons(region->fill_surfaces().filter_by_types({stInternal, stInternalSolid}));
|
Polygons internal_polys = to_polygons(region->fill_surfaces().filter_by_types({stInternal, stInternalSolid}));
|
||||||
expansion_area.insert(expansion_area.end(), internal_polys.begin(), internal_polys.end());
|
expansion_area.insert(expansion_area.end(), internal_polys.begin(), internal_polys.end());
|
||||||
Polygons fill_polys = to_polygons(region->fill_expolygons());
|
Polygons fill_polys = to_polygons(region->fill_expolygons());
|
||||||
total_fill_area.insert(total_fill_area.end(), fill_polys.begin(), fill_polys.end());
|
total_fill_area.insert(total_fill_area.end(), fill_polys.begin(), fill_polys.end());
|
||||||
|
//w35
|
||||||
|
Polygons top_polys = to_polygons(region->fill_surfaces().filter_by_type(stTop));
|
||||||
|
top_area.insert(top_area.end(), top_polys.begin(), top_polys.end());
|
||||||
|
|
||||||
if (region->region().config().fill_pattern == ipLightning) {
|
if (region->region().config().fill_pattern == ipLightning) {
|
||||||
Polygons l = to_polygons(region->fill_surfaces().filter_by_type(stInternal));
|
Polygons l = to_polygons(region->fill_surfaces().filter_by_type(stInternal));
|
||||||
lightning_area.insert(lightning_area.end(), l.begin(), l.end());
|
lightning_area.insert(lightning_area.end(), l.begin(), l.end());
|
||||||
@@ -2447,12 +2453,21 @@ void PrintObject::bridge_over_infill()
|
|||||||
bridging_area = construct_anchored_polygon(area_to_be_bridge, to_lines(boundary_plines), flow, bridging_angle);
|
bridging_area = construct_anchored_polygon(area_to_be_bridge, to_lines(boundary_plines), flow, bridging_angle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//w35
|
||||||
bridging_area = opening(bridging_area, flow.scaled_spacing());
|
bridging_area = opening(bridging_area, flow.scaled_spacing());
|
||||||
bridging_area = closing(bridging_area, flow.scaled_spacing());
|
bridging_area = closing(bridging_area, flow.scaled_spacing());
|
||||||
bridging_area = intersection(bridging_area, limiting_area);
|
bridging_area = intersection(bridging_area, limiting_area);
|
||||||
bridging_area = intersection(bridging_area, total_fill_area);
|
bridging_area = intersection(bridging_area, total_fill_area);
|
||||||
expansion_area = diff(expansion_area, bridging_area);
|
bridging_area = diff(bridging_area, top_area);
|
||||||
|
bridging_area = opening(bridging_area, flow.scaled_spacing());
|
||||||
|
bridging_area = closing(bridging_area, flow.scaled_spacing());
|
||||||
|
expansion_area = diff(expansion_area, bridging_area);
|
||||||
|
|
||||||
|
//bridging_area = opening(bridging_area, flow.scaled_spacing());
|
||||||
|
//bridging_area = closing(bridging_area, flow.scaled_spacing());
|
||||||
|
//bridging_area = intersection(bridging_area, limiting_area);
|
||||||
|
//bridging_area = intersection(bridging_area, total_fill_area);
|
||||||
|
//expansion_area = diff(expansion_area, bridging_area);
|
||||||
|
|
||||||
#ifdef DEBUG_BRIDGE_OVER_INFILL
|
#ifdef DEBUG_BRIDGE_OVER_INFILL
|
||||||
debug_draw(std::to_string(lidx) + "_" + std::to_string(cluster_idx) + "_" + std::to_string(job_idx) + "_" + "_expanded_bridging" + std::to_string(r),
|
debug_draw(std::to_string(lidx) + "_" + std::to_string(cluster_idx) + "_" + std::to_string(job_idx) + "_" + "_expanded_bridging" + std::to_string(r),
|
||||||
|
|||||||
Reference in New Issue
Block a user