Fix of "excess infill below bridges with 0% infill" #442

Fix of "Bridging infill not connecting with infill set to 0%" #1301

Top, bottom and bridging areas are extended into infill as long
as the infill is not zero. If the infill is zero,
top, bottom and bridging areas wound not expand into these "void" areas.

With this commit, the top, bottom and bridging areas are allowed to expand
into the "void" areas as long as these "void" areas are supported below
with perimeters or some other non-empty infill, and slightly beyond
these supporting areas into the voids (currently hard coded to 1mm).
This commit is contained in:
bubnikv 2019-09-06 15:03:49 +02:00
parent 6cc29c308c
commit 48ecbe777f
5 changed files with 104 additions and 94 deletions

View file

@ -4,64 +4,6 @@
namespace Slic3r {
Surface::operator Polygons() const
{
return this->expolygon;
}
double
Surface::area() const
{
return this->expolygon.area();
}
bool
Surface::is_solid() const
{
return this->surface_type == stTop
|| this->surface_type == stBottom
|| this->surface_type == stBottomBridge
|| this->surface_type == stInternalSolid
|| this->surface_type == stInternalBridge;
}
bool
Surface::is_external() const
{
return this->surface_type == stTop
|| this->surface_type == stBottom
|| this->surface_type == stBottomBridge;
}
bool
Surface::is_internal() const
{
return this->surface_type == stInternal
|| this->surface_type == stInternalBridge
|| this->surface_type == stInternalSolid
|| this->surface_type == stInternalVoid;
}
bool
Surface::is_top() const
{
return this->surface_type == stTop;
}
bool
Surface::is_bottom() const
{
return this->surface_type == stBottom
|| this->surface_type == stBottomBridge;
}
bool
Surface::is_bridge() const
{
return this->surface_type == stBottomBridge
|| this->surface_type == stInternalBridge;
}
BoundingBox get_extents(const Surface &surface)
{
return get_extents(surface.expolygon.contour);