diff options
author | Alessandro Ranellucci <aar@cpan.org> | 2011-09-26 01:15:45 +0400 |
---|---|---|
committer | Alessandro Ranellucci <aar@cpan.org> | 2011-09-26 01:15:45 +0400 |
commit | 0cd10441a1c9f19f3e7a69bcf9843bbab4b6c715 (patch) | |
tree | cc4eff470a566381c68cadfd480b0a6a4f39d20f /lib/Slic3r/ExtrusionLoop.pm | |
parent | 03341f3485a86277d1c0610707d7020d247243ff (diff) |
Optimization of travel paths for perimeters
Diffstat (limited to 'lib/Slic3r/ExtrusionLoop.pm')
-rw-r--r-- | lib/Slic3r/ExtrusionLoop.pm | 31 |
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; |