mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-07-20 07:04:27 +08:00
separate monotonicWGapfill and rectilinearWgapfill
This commit is contained in:
parent
8ac75cfc5e
commit
5b8b5bc2d1
@ -33,8 +33,9 @@ Fill* Fill::new_from_type(const InfillPattern type)
|
||||
case ip3DHoneycomb: return new Fill3DHoneycomb();
|
||||
case ipGyroid: return new FillGyroid();
|
||||
case ipRectilinear: return new FillRectilinear();
|
||||
case ipMonotonic: return new FillMonotonic();
|
||||
case ipRectilinearWGapFill: return new FillRectilinearWGapFill();
|
||||
case ipMonotonic: return new FillMonotonic();
|
||||
case ipMonotonicWGapFill: return new FillMonotonicWGapFill();
|
||||
case ipScatteredRectilinear:return new FillScatteredRectilinear();
|
||||
case ipLine: return new FillLine();
|
||||
case ipGrid: return new FillGrid();
|
||||
|
@ -3328,7 +3328,7 @@ FillRectilinearWGapFill::fill_surface_extrusion(const Surface *surface, const Fi
|
||||
Polylines polylines_rectilinear;
|
||||
Surface rectilinear_surface{ *surface };
|
||||
FillParams params_monotonic = params;
|
||||
params_monotonic.monotonic = true;
|
||||
params_monotonic.monotonic = is_monotonic();
|
||||
for (const ExPolygon &rectilinear_area : rectilinear_areas) {
|
||||
rectilinear_surface.expolygon = rectilinear_area, 0 - 0.5 * params.flow.scaled_spacing();
|
||||
if (!fill_surface_by_lines(&rectilinear_surface, params_monotonic, 0.f, 0.f, polylines_rectilinear)) {
|
||||
@ -3368,7 +3368,7 @@ FillRectilinearWGapFill::fill_surface_extrusion(const Surface *surface, const Fi
|
||||
ExtrusionEntityCollection *eec = new ExtrusionEntityCollection();
|
||||
/// pass the no_sort attribute to the extrusion path
|
||||
//don't force monotonic if not top or bottom
|
||||
if (surface->surface_type & (stPosTop | stPosBottom) != 0)
|
||||
if (is_monotonic())
|
||||
eec->no_sort = true;
|
||||
else
|
||||
eec->no_sort = this->no_sort();
|
||||
|
@ -126,11 +126,22 @@ public:
|
||||
class FillRectilinearWGapFill : public FillRectilinear
|
||||
{
|
||||
public:
|
||||
|
||||
Fill* clone() const override { return new FillRectilinearWGapFill(*this); };
|
||||
~FillRectilinearWGapFill() override = default;
|
||||
void fill_surface_extrusion(const Surface* surface, const FillParams& params, ExtrusionEntitiesPtr& out) const override;
|
||||
static void split_polygon_gap_fill(const Surface& surface, const FillParams& params, ExPolygons& rectilinear, ExPolygons& gapfill);
|
||||
protected:
|
||||
virtual bool is_monotonic() const { return false; }
|
||||
};
|
||||
|
||||
class FillMonotonicWGapFill : public FillRectilinearWGapFill
|
||||
{
|
||||
public:
|
||||
|
||||
Fill* clone() const override { return new FillMonotonicWGapFill(*this); };
|
||||
~FillMonotonicWGapFill() override = default;
|
||||
protected:
|
||||
virtual bool is_monotonic() const override { return true; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -697,7 +697,7 @@ void PrintConfigDef::init_fff_params()
|
||||
def->cli = "top-fill-pattern|external-fill-pattern=s";
|
||||
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
||||
def->enum_values.push_back("rectilinear");
|
||||
def->enum_values.push_back("rectilineargapfill");
|
||||
def->enum_values.push_back("monotonicgapfillgapfill");
|
||||
def->enum_values.push_back("monotonic");
|
||||
def->enum_values.push_back("concentric");
|
||||
def->enum_values.push_back("concentricgapfill");
|
||||
@ -728,7 +728,7 @@ void PrintConfigDef::init_fff_params()
|
||||
def->cli = "bottom-fill-pattern|external-fill-pattern=s";
|
||||
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
||||
def->enum_values.push_back("rectilinear");
|
||||
def->enum_values.push_back("rectilineargapfill");
|
||||
def->enum_values.push_back("monotonicgapfill");
|
||||
def->enum_values.push_back("monotonic");
|
||||
def->enum_values.push_back("concentric");
|
||||
def->enum_values.push_back("concentricgapfill");
|
||||
|
@ -83,8 +83,11 @@ enum InfillPattern : uint8_t{
|
||||
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral,
|
||||
ipAdaptiveCubic, ipSupportCubic,
|
||||
ipSmooth, ipSmoothHilbert, ipSmoothTriple,
|
||||
ipRectiWithPerimeter, ipConcentricGapFill, ipScatteredRectilinear, ipSawtooth, ipRectilinearWGapFill,
|
||||
ipRectiWithPerimeter, ipConcentricGapFill, ipScatteredRectilinear,
|
||||
ipSawtooth,
|
||||
ipRectilinearWGapFill,
|
||||
ipMonotonic,
|
||||
ipMonotonicWGapFill,
|
||||
ipCount
|
||||
};
|
||||
|
||||
@ -229,7 +232,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::g
|
||||
static t_config_enum_values keys_map;
|
||||
if (keys_map.empty()) {
|
||||
keys_map["rectilinear"] = ipRectilinear;
|
||||
keys_map["monotonic"] = ipMonotonic;
|
||||
keys_map["monotonic"] = ipMonotonic;
|
||||
keys_map["grid"] = ipGrid;
|
||||
keys_map["triangles"] = ipTriangles;
|
||||
keys_map["stars"] = ipStars;
|
||||
@ -249,6 +252,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::g
|
||||
keys_map["rectiwithperimeter"] = ipRectiWithPerimeter;
|
||||
keys_map["scatteredrectilinear"]= ipScatteredRectilinear;
|
||||
keys_map["rectilineargapfill"] = ipRectilinearWGapFill;
|
||||
keys_map["monotonicgapfill"] = ipMonotonicWGapFill;
|
||||
keys_map["sawtooth"] = ipSawtooth;
|
||||
keys_map["adaptivecubic"] = ipAdaptiveCubic;
|
||||
keys_map["supportcubic"] = ipSupportCubic;
|
||||
|
Loading…
x
Reference in New Issue
Block a user