mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-12 01:07:57 -06:00
Add aligned rectilinear infill functionality by @m-schubert Implements [Feature Request] Aligned rectilinear infill #1938
This commit is contained in:
parent
47dae80835
commit
f0606c2a76
4 changed files with 18 additions and 1 deletions
|
@ -29,6 +29,7 @@ Fill* Fill::new_from_type(const InfillPattern type)
|
||||||
case ip3DHoneycomb: return new Fill3DHoneycomb();
|
case ip3DHoneycomb: return new Fill3DHoneycomb();
|
||||||
case ipGyroid: return new FillGyroid();
|
case ipGyroid: return new FillGyroid();
|
||||||
case ipRectilinear: return new FillRectilinear();
|
case ipRectilinear: return new FillRectilinear();
|
||||||
|
case ipAlignedRectilinear: return new FillAlignedRectilinear();
|
||||||
case ipMonotonic: return new FillMonotonic();
|
case ipMonotonic: return new FillMonotonic();
|
||||||
case ipLine: return new FillLine();
|
case ipLine: return new FillLine();
|
||||||
case ipGrid: return new FillGrid();
|
case ipGrid: return new FillGrid();
|
||||||
|
|
|
@ -29,6 +29,17 @@ protected:
|
||||||
bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out);
|
bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class FillAlignedRectilinear : public FillRectilinear
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Fill* clone() const override { return new FillAlignedRectilinear(*this); };
|
||||||
|
~FillAlignedRectilinear() override = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// Always generate infill at the same angle.
|
||||||
|
virtual float _layer_angle(size_t idx) const { return 0.f; }
|
||||||
|
};
|
||||||
|
|
||||||
class FillMonotonic : public FillRectilinear
|
class FillMonotonic : public FillRectilinear
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -460,12 +460,14 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
||||||
def->enum_values.push_back("rectilinear");
|
def->enum_values.push_back("rectilinear");
|
||||||
def->enum_values.push_back("monotonic");
|
def->enum_values.push_back("monotonic");
|
||||||
|
def->enum_values.push_back("alignedrectilinear");
|
||||||
def->enum_values.push_back("concentric");
|
def->enum_values.push_back("concentric");
|
||||||
def->enum_values.push_back("hilbertcurve");
|
def->enum_values.push_back("hilbertcurve");
|
||||||
def->enum_values.push_back("archimedeanchords");
|
def->enum_values.push_back("archimedeanchords");
|
||||||
def->enum_values.push_back("octagramspiral");
|
def->enum_values.push_back("octagramspiral");
|
||||||
def->enum_labels.push_back(L("Rectilinear"));
|
def->enum_labels.push_back(L("Rectilinear"));
|
||||||
def->enum_labels.push_back(L("Monotonic"));
|
def->enum_labels.push_back(L("Monotonic"));
|
||||||
|
def->enum_labels.push_back(L("Aligned Rectilinear"));
|
||||||
def->enum_labels.push_back(L("Concentric"));
|
def->enum_labels.push_back(L("Concentric"));
|
||||||
def->enum_labels.push_back(L("Hilbert Curve"));
|
def->enum_labels.push_back(L("Hilbert Curve"));
|
||||||
def->enum_labels.push_back(L("Archimedean Chords"));
|
def->enum_labels.push_back(L("Archimedean Chords"));
|
||||||
|
@ -881,6 +883,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->tooltip = L("Fill pattern for general low-density infill.");
|
def->tooltip = L("Fill pattern for general low-density infill.");
|
||||||
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
def->enum_keys_map = &ConfigOptionEnum<InfillPattern>::get_enum_values();
|
||||||
def->enum_values.push_back("rectilinear");
|
def->enum_values.push_back("rectilinear");
|
||||||
|
def->enum_values.push_back("alignedrectilinear");
|
||||||
def->enum_values.push_back("grid");
|
def->enum_values.push_back("grid");
|
||||||
def->enum_values.push_back("triangles");
|
def->enum_values.push_back("triangles");
|
||||||
def->enum_values.push_back("stars");
|
def->enum_values.push_back("stars");
|
||||||
|
@ -896,6 +899,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->enum_values.push_back("adaptivecubic");
|
def->enum_values.push_back("adaptivecubic");
|
||||||
def->enum_values.push_back("supportcubic");
|
def->enum_values.push_back("supportcubic");
|
||||||
def->enum_labels.push_back(L("Rectilinear"));
|
def->enum_labels.push_back(L("Rectilinear"));
|
||||||
|
def->enum_labels.push_back(L("Aligned Rectilinear"));
|
||||||
def->enum_labels.push_back(L("Grid"));
|
def->enum_labels.push_back(L("Grid"));
|
||||||
def->enum_labels.push_back(L("Triangles"));
|
def->enum_labels.push_back(L("Triangles"));
|
||||||
def->enum_labels.push_back(L("Stars"));
|
def->enum_labels.push_back(L("Stars"));
|
||||||
|
|
|
@ -44,7 +44,7 @@ enum AuthorizationType {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum InfillPattern : int {
|
enum InfillPattern : int {
|
||||||
ipRectilinear, ipMonotonic, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
ipRectilinear, ipMonotonic, ipAlignedRectilinear, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
||||||
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipAdaptiveCubic, ipSupportCubic, ipCount,
|
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipAdaptiveCubic, ipSupportCubic, ipCount,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -145,6 +145,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::g
|
||||||
if (keys_map.empty()) {
|
if (keys_map.empty()) {
|
||||||
keys_map["rectilinear"] = ipRectilinear;
|
keys_map["rectilinear"] = ipRectilinear;
|
||||||
keys_map["monotonic"] = ipMonotonic;
|
keys_map["monotonic"] = ipMonotonic;
|
||||||
|
keys_map["alignedrectilinear"] = ipAlignedRectilinear;
|
||||||
keys_map["grid"] = ipGrid;
|
keys_map["grid"] = ipGrid;
|
||||||
keys_map["triangles"] = ipTriangles;
|
keys_map["triangles"] = ipTriangles;
|
||||||
keys_map["stars"] = ipStars;
|
keys_map["stars"] = ipStars;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue