Ported (and used) ExtrusionPath->first_point
This commit is contained in:
parent
fe42427a54
commit
9fb14f2119
6 changed files with 16 additions and 9 deletions
|
@ -65,11 +65,6 @@ sub points {
|
|||
return $self->polyline;
|
||||
}
|
||||
|
||||
sub first_point {
|
||||
my $self = shift;
|
||||
return $self->polyline->[0];
|
||||
}
|
||||
|
||||
sub is_perimeter {
|
||||
my $self = shift;
|
||||
return $self->role == EXTR_ROLE_PERIMETER
|
||||
|
|
|
@ -268,7 +268,7 @@ sub extrude_loop {
|
|||
my $distance = min(scale $extrusion_path->flow_spacing, $first_segment->length);
|
||||
my $point = Slic3r::Geometry::point_along_segment(@$first_segment, $distance);
|
||||
$point = Slic3r::Point->new(@$point);
|
||||
$point->rotate($angle, $extrusion_path->polyline->[0]);
|
||||
$point->rotate($angle, $extrusion_path->first_point);
|
||||
|
||||
# generate the travel move
|
||||
$gcode .= $self->travel_to($point, $loop->role, "move inwards before travel");
|
||||
|
@ -294,8 +294,9 @@ sub extrude_path {
|
|||
|
||||
# go to first point of extrusion path
|
||||
my $gcode = "";
|
||||
$gcode .= $self->travel_to($path->points->[0], $path->role, "move to first $description point")
|
||||
if !defined $self->last_pos || !$self->last_pos->coincides_with($path->points->[0]);
|
||||
my $first_point = $path->first_point;
|
||||
$gcode .= $self->travel_to($first_point, $path->role, "move to first $description point")
|
||||
if !defined $self->last_pos || !$self->last_pos->coincides_with($first_point);
|
||||
|
||||
# compensate retraction
|
||||
$gcode .= $self->unretract;
|
||||
|
|
|
@ -8,6 +8,12 @@ ExtrusionPath::reverse()
|
|||
this->polyline.reverse();
|
||||
}
|
||||
|
||||
const Point*
|
||||
ExtrusionPath::first_point() const
|
||||
{
|
||||
return &(this->polyline.points.front());
|
||||
}
|
||||
|
||||
ExtrusionPath*
|
||||
ExtrusionLoop::split_at_index(int index)
|
||||
{
|
||||
|
|
|
@ -38,6 +38,7 @@ class ExtrusionPath : public ExtrusionEntity
|
|||
public:
|
||||
Polyline polyline;
|
||||
void reverse();
|
||||
const Point* first_point() const;
|
||||
};
|
||||
|
||||
class ExtrusionLoop : public ExtrusionEntity
|
||||
|
|
|
@ -4,7 +4,7 @@ use strict;
|
|||
use warnings;
|
||||
|
||||
use Slic3r::XS;
|
||||
use Test::More tests => 7;
|
||||
use Test::More tests => 8;
|
||||
|
||||
my $points = [
|
||||
[100, 100],
|
||||
|
@ -28,6 +28,8 @@ is scalar(@$path), 4, 'append to path';
|
|||
$path->pop_back;
|
||||
is scalar(@$path), 3, 'pop_back from path';
|
||||
|
||||
ok $path->first_point->coincides_with($path->polyline->[0]), 'first_point';
|
||||
|
||||
$path = $path->clone;
|
||||
|
||||
is $path->role, Slic3r::ExtrusionPath::EXTR_ROLE_EXTERNAL_PERIMETER, 'role';
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
void reverse();
|
||||
Lines lines()
|
||||
%code{% RETVAL = THIS->polyline.lines(); %};
|
||||
Point* first_point()
|
||||
%code{% const char* CLASS = "Slic3r::Point"; RETVAL = new Point(*(THIS->first_point())); %};
|
||||
%{
|
||||
|
||||
ExtrusionPath*
|
||||
|
|
Loading…
Reference in a new issue