From 38f8ed62a015c49ed9002fde7fd796c77afb3315 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 3 Oct 2018 16:12:24 +0200 Subject: [PATCH] Fix of SPE-513: unblockable supports There was a bug in the "don't support bridges" feature, where there were supports added to the end of non-supported bridges without taking into account the overhang angle or the support blockers. --- xs/src/libslic3r/SupportMaterial.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/xs/src/libslic3r/SupportMaterial.cpp b/xs/src/libslic3r/SupportMaterial.cpp index cc689eaaa..2f0fbbfd6 100644 --- a/xs/src/libslic3r/SupportMaterial.cpp +++ b/xs/src/libslic3r/SupportMaterial.cpp @@ -783,14 +783,13 @@ namespace SupportMaterialInternal { if (surface.surface_type == stBottomBridge && surface.bridge_angle != -1) polygons_append(bridges, surface.expolygon); //FIXME add the gap filled areas. Extrude the gaps with a bridge flow? - contact_polygons = diff(contact_polygons, bridges, true); - // Add the bridge anchors into the region. + // Remove the unsupported ends of the bridges from the bridged areas. //FIXME add supports at regular intervals to support long bridges! - polygons_append(contact_polygons, - intersection( + bridges = diff(bridges, // Offset unsupported edges into polygons. - offset(layerm->unsupported_bridge_edges.polylines, scale_(SUPPORT_MATERIAL_MARGIN), SUPPORT_SURFACES_OFFSET_PARAMETERS), - bridges)); + offset(layerm->unsupported_bridge_edges.polylines, scale_(SUPPORT_MATERIAL_MARGIN), SUPPORT_SURFACES_OFFSET_PARAMETERS)); + // Remove bridged areas from the supported areas. + contact_polygons = diff(contact_polygons, bridges, true); } }