set the ironing pattern first pass to use filled monotonic instead of filled rectilinear.

also allow half overlap for the first pass.
supermerill/SuperSlicer#1708
This commit is contained in:
supermerill 2021-10-26 22:50:20 +02:00
parent a166f37e4f
commit 003a0dba07
3 changed files with 7 additions and 4 deletions

View File

@ -88,9 +88,9 @@ public:
// Index of the layer.
size_t layer_id;
// Z coordinate of the top print surface, in unscaled coordinates
coordf_t z;
double z;
// infill / perimeter overlap, in unscaled coordinates
coordf_t overlap;
double overlap;
ExPolygons no_overlap_expolygons;
// in radians, ccw, 0 = East
float angle;

View File

@ -46,7 +46,10 @@ namespace Slic3r {
}
else{
Surface surfaceNoOverlap(srf_source);
for (const ExPolygon &poly : this->no_overlap_expolygons) {
//use half overlap instead of none.
ExPolygons half_overlap = offset_ex(this->no_overlap_expolygons, scale_(this->overlap / 2));
half_overlap = intersection_ex({ srf_source.expolygon }, half_overlap);
for (const ExPolygon &poly : half_overlap) {
if (poly.empty()) continue;
surfaceNoOverlap.expolygon = poly;
this->fill_expolygon(idx, *eec, surfaceNoOverlap, params_modifided, volume);

View File

@ -15,7 +15,7 @@ public:
anglePass[0] = 0;
anglePass[1] = float(M_PI/2);
anglePass[2] = 0;
fillPattern[0] = InfillPattern::ipRectilinearWGapFill;
fillPattern[0] = InfillPattern::ipMonotonicWGapFill;//ipRectilinearWGapFill;
fillPattern[1] = InfillPattern::ipRectilinear;
fillPattern[2] = InfillPattern::ipRectilinear;
rolePass[0] = erNone;// erTopSolidInfill;