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
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2011-09-26 01:15:45 +0400
committerAlessandro Ranellucci <aar@cpan.org>2011-09-26 01:15:45 +0400
commit0cd10441a1c9f19f3e7a69bcf9843bbab4b6c715 (patch)
treecc4eff470a566381c68cadfd480b0a6a4f39d20f /lib/Slic3r/ExtrusionLoop.pm
parent03341f3485a86277d1c0610707d7020d247243ff (diff)
Optimization of travel paths for perimeters
Diffstat (limited to 'lib/Slic3r/ExtrusionLoop.pm')
-rw-r--r--lib/Slic3r/ExtrusionLoop.pm31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/Slic3r/ExtrusionLoop.pm b/lib/Slic3r/ExtrusionLoop.pm
new file mode 100644
index 000000000..2503c77d8
--- /dev/null
+++ b/lib/Slic3r/ExtrusionLoop.pm
@@ -0,0 +1,31 @@
+package Slic3r::ExtrusionLoop;
+use Moo;
+
+use XXX;
+
+extends 'Slic3r::Polyline::Closed';
+
+sub split_at {
+ my $self = shift;
+ my ($point) = @_;
+
+ $point = Slic3r::Point->cast($point);
+
+ # find index of point
+ my $i = -1;
+ for (my $n = 0; $n <= $#{$self->points}; $n++) {
+ if ($point->id eq $self->points->[$n]->id) {
+ $i = $n;
+ last;
+ }
+ }
+ die "Point not found" if $i == -1;
+
+ my @new_points = ();
+ push @new_points, @{$self->points}[$i .. $#{$self->points}];
+ push @new_points, @{$self->points}[0 .. $i];
+
+ return Slic3r::ExtrusionPath->new(points => [@new_points]);
+}
+
+1;