update libslic3r

This commit is contained in:
QIDI TECH
2025-05-05 19:52:57 +08:00
parent eae8e18c3a
commit 126534997a
180 changed files with 24833 additions and 5679 deletions

View File

@@ -14,6 +14,7 @@
namespace Slic3r {
static const double slope_path_ratio = 0.3;
static const double slope_inner_outer_wall_gap = 0.4;
static const int overhang_threshold = 1;
void ExtrusionPath::intersect_expolygons(const ExPolygons &collection, ExtrusionEntityCollection* retval) const
{
@@ -69,7 +70,8 @@ void ExtrusionPath::polygons_covered_by_spacing(Polygons &out, const float scale
//1.9.7.52
bool ExtrusionPath::can_merge(const ExtrusionPath& other)
{
return curve_degree==other.curve_degree &&
return overhang_degree == other.overhang_degree &&
curve_degree==other.curve_degree &&
mm3_per_mm == other.mm3_per_mm &&
width == other.width &&
height == other.height &&
@@ -418,6 +420,17 @@ bool ExtrusionLoop::has_overhang_point(const Point &point) const
return false;
}
bool ExtrusionLoop::has_overhang_paths() const
{
for (const ExtrusionPath &path : this->paths) {
if (is_bridge(path.role()))
return true;
if (path.overhang_degree >= overhang_threshold)
return true;
}
return false;
}
void ExtrusionLoop::polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const
{
for (const ExtrusionPath &path : this->paths)
@@ -607,6 +620,7 @@ std::string ExtrusionEntity::role_to_string(ExtrusionRole role)
case erExternalPerimeter : return L("Outer wall");
case erOverhangPerimeter : return L("Overhang wall");
case erInternalInfill : return L("Sparse infill");
case erFloatingVerticalShell : return L("Floating vertical shell");
case erSolidInfill : return L("Internal solid infill");
case erTopSolidInfill : return L("Top surface");
case erBottomSurface : return L("Bottom surface");
@@ -637,6 +651,8 @@ ExtrusionRole ExtrusionEntity::string_to_role(const std::string_view role)
return erOverhangPerimeter;
else if (role == L("Sparse infill"))
return erInternalInfill;
else if (role == L("Floating vertical shell"))
return erFloatingVerticalShell;
else if (role == L("Internal solid infill"))
return erSolidInfill;
else if (role == L("Top surface"))