Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2013-07-06 00:06:58 +0400
committerAlessandro Ranellucci <aar@cpan.org>2013-07-06 00:06:58 +0400
commit0a7e0ffecfdbe6196a3d8f5f32f25f14e9cf202d (patch)
treed6e11750edeb6fb87207be05a722b057ca3ea1c2 /lib
parent362232ada49399794af9890bacb8b3170949df69 (diff)
New options: start_perimeters_at_concave_points start_perimeters_at_non_overhang
Diffstat (limited to 'lib')
-rw-r--r--lib/Slic3r/Config.pm14
-rw-r--r--lib/Slic3r/GCode.pm11
-rw-r--r--lib/Slic3r/GUI/Tab.pm10
3 files changed, 31 insertions, 4 deletions
diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm
index d8182e835..bf4119fc0 100644
--- a/lib/Slic3r/Config.pm
+++ b/lib/Slic3r/Config.pm
@@ -573,6 +573,20 @@ our $Options = {
type => 'bool',
default => 0,
},
+ 'start_perimeters_at_concave_points' => {
+ label => 'Concave points',
+ tooltip => 'Prefer to start perimeters at a concave point.',
+ cli => 'start-perimeters-at-concave-points!',
+ type => 'bool',
+ default => 0,
+ },
+ 'start_perimeters_at_non_overhang' => {
+ label => 'Non-overhang points',
+ tooltip => 'Prefer to start perimeters at non-overhanging points.',
+ cli => 'start-perimeters-at-non-overhang!',
+ type => 'bool',
+ default => 0,
+ },
'avoid_crossing_perimeters' => {
label => 'Avoid crossing perimeters',
tooltip => 'Optimize travel moves in order to minimize the crossing of perimeters. This is mostly useful with Bowden extruders which suffer from oozing. This feature slows down both the print and the G-code generation.',
diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm
index 403303d3d..3bf8717a9 100644
--- a/lib/Slic3r/GCode.pm
+++ b/lib/Slic3r/GCode.pm
@@ -155,9 +155,14 @@ sub extrude_loop {
# find candidate starting points
# start looking for concave vertices not being overhangs
- my @concave = $loop->polygon->concave_points;
- my @candidates = grep !Boost::Geometry::Utils::point_covered_by_multi_polygon($_, $self->_layer_overhangs),
- @concave;
+ my @concave = ();
+ if ($Slic3r::Config->start_perimeters_at_concave_points) {
+ @concave = $loop->polygon->concave_points;
+ }
+ my @candidates = ();
+ if ($Slic3r::Config->start_perimeters_at_non_overhang) {
+ @candidates = grep !Boost::Geometry::Utils::point_covered_by_multi_polygon($_, $self->_layer_overhangs), @concave;
+ }
if (!@candidates) {
# if none, look for any concave vertex
@candidates = @concave;
diff --git a/lib/Slic3r/GUI/Tab.pm b/lib/Slic3r/GUI/Tab.pm
index 372f3c909..1a102f90c 100644
--- a/lib/Slic3r/GUI/Tab.pm
+++ b/lib/Slic3r/GUI/Tab.pm
@@ -412,7 +412,15 @@ sub build {
},
{
title => 'Quality (slower slicing)',
- options => [qw(extra_perimeters avoid_crossing_perimeters)],
+ options => [qw(extra_perimeters avoid_crossing_perimeters start_perimeters_at_concave_points start_perimeters_at_non_overhang)],
+ lines => [
+ Slic3r::GUI::OptionsGroup->single_option_line('extra_perimeters'),
+ Slic3r::GUI::OptionsGroup->single_option_line('avoid_crossing_perimeters'),
+ {
+ label => 'Start perimeters at',
+ options => [qw(start_perimeters_at_concave_points start_perimeters_at_non_overhang)],
+ },
+ ],
},
{
title => 'Advanced',