diff --git a/lib/Slic3r/Fill.pm b/lib/Slic3r/Fill.pm index 8c63fde596..14410eab8a 100644 --- a/lib/Slic3r/Fill.pm +++ b/lib/Slic3r/Fill.pm @@ -9,6 +9,7 @@ use Slic3r::Fill::Concentric; use Slic3r::Fill::Honeycomb; use Slic3r::Fill::PlanePath; use Slic3r::Fill::Rectilinear; +use Slic3r::Fill::AlignedRectilinear; use Slic3r::Flow ':roles'; use Slic3r::Geometry qw(X Y PI scale chained_path deg2rad); use Slic3r::Geometry::Clipper qw(union union_ex diff diff_ex intersection_ex offset offset2); @@ -20,6 +21,7 @@ has 'fillers' => (is => 'rw', default => sub { {} }); our %FillTypes = ( archimedeanchords => 'Slic3r::Fill::ArchimedeanChords', + alignedrectilinear => 'Slic3r::Fill::AlignedRectilinear', rectilinear => 'Slic3r::Fill::Rectilinear', grid => 'Slic3r::Fill::Grid', flowsnake => 'Slic3r::Fill::Flowsnake', diff --git a/lib/Slic3r/Fill/Rectilinear.pm b/lib/Slic3r/Fill/Rectilinear.pm index 0922ff7714..66fbde3302 100644 --- a/lib/Slic3r/Fill/Rectilinear.pm +++ b/lib/Slic3r/Fill/Rectilinear.pm @@ -165,4 +165,11 @@ extends 'Slic3r::Fill::Rectilinear'; sub angles () { [0] } sub horizontal_lines { 1 } + +package Slic3r::Fill::AlignedRectilinear; +use Moo; +extends 'Slic3r::Fill::Rectilinear'; + +sub angles () { [0, 0] } + 1; diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 8bf65dea66..b9e68cf883 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -156,11 +156,13 @@ PrintConfigDef::PrintConfigDef() def->cli = "external-fill-pattern|solid-fill-pattern=s"; def->enum_keys_map = ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("rectilinear"); + def->enum_values.push_back("alignedrectilinear"); def->enum_values.push_back("concentric"); def->enum_values.push_back("hilbertcurve"); def->enum_values.push_back("archimedeanchords"); def->enum_values.push_back("octagramspiral"); def->enum_labels.push_back("Rectilinear"); + def->enum_labels.push_back("Aligned Rectilinear"); def->enum_labels.push_back("Concentric"); def->enum_labels.push_back("Hilbert Curve"); def->enum_labels.push_back("Archimedean Chords"); @@ -363,6 +365,7 @@ PrintConfigDef::PrintConfigDef() def->cli = "fill-pattern=s"; def->enum_keys_map = ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("rectilinear"); + def->enum_values.push_back("alignedrectilinear"); def->enum_values.push_back("grid"); def->enum_values.push_back("line"); def->enum_values.push_back("concentric"); @@ -372,6 +375,7 @@ PrintConfigDef::PrintConfigDef() def->enum_values.push_back("archimedeanchords"); def->enum_values.push_back("octagramspiral"); def->enum_labels.push_back("Rectilinear"); + def->enum_labels.push_back("AlignedRectilinear"); def->enum_labels.push_back("Grid"); def->enum_labels.push_back("Line"); def->enum_labels.push_back("Concentric"); diff --git a/xs/src/libslic3r/PrintConfig.hpp b/xs/src/libslic3r/PrintConfig.hpp index fc517c37f7..5deaab951d 100644 --- a/xs/src/libslic3r/PrintConfig.hpp +++ b/xs/src/libslic3r/PrintConfig.hpp @@ -30,7 +30,7 @@ enum GCodeFlavor { }; enum InfillPattern { - ipRectilinear, ipGrid, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb, + ipRectilinear, ipAlignedRectilinear, ipGrid, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, }; @@ -58,6 +58,7 @@ template<> inline t_config_enum_values ConfigOptionEnum::get_enum_v template<> inline t_config_enum_values ConfigOptionEnum::get_enum_values() { t_config_enum_values keys_map; keys_map["rectilinear"] = ipRectilinear; + keys_map["alignedrectilinear"] = ipAlignedRectilinear; keys_map["grid"] = ipGrid; keys_map["line"] = ipLine; keys_map["concentric"] = ipConcentric;