1.0.0RC2
This commit is contained in:
parent
ea2fed3bbe
commit
228bba06b7
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
||||
/slic3r-0.9.10b-f13c611.tar.gz
|
||||
/slic3r-0.9.10b-d0eac88.tar.gz
|
||||
/1.0.0RC1.tar.gz
|
||||
/1.0.0RC2.tar.gz
|
||||
|
@ -1,104 +0,0 @@
|
||||
From bed1625d6b0fa92da0afb4fae2ec6d036dfbea33 Mon Sep 17 00:00:00 2001
|
||||
From: Alessandro Ranellucci <aar@cpan.org>
|
||||
Date: Sun, 24 Nov 2013 14:28:17 +0100
|
||||
Subject: [PATCH] Split objects could not be repositioned in plater. 3D preview
|
||||
and stats were not available too. #1543
|
||||
|
||||
---
|
||||
lib/Slic3r/GUI/Plater.pm | 6 ++++--
|
||||
lib/Slic3r/Model.pm | 2 +-
|
||||
xs/src/TriangleMesh.cpp | 3 +++
|
||||
xs/src/admesh/stl.h | 2 +-
|
||||
xs/t/01_trianglemesh.t | 3 ++-
|
||||
5 files changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm
|
||||
index 66d6d35..5eec595 100644
|
||||
--- a/lib/Slic3r/GUI/Plater.pm
|
||||
+++ b/lib/Slic3r/GUI/Plater.pm
|
||||
@@ -594,8 +594,10 @@ sub split_object {
|
||||
input_file_object_id => undef,
|
||||
model => $new_model,
|
||||
model_object_idx => $#{$new_model->objects},
|
||||
- instances => [ map $bb->min_point, 1..$current_copies_num ],
|
||||
+ mesh_stats => $mesh->stats, # so that we can free model
|
||||
+ instances => [ map $bb->min_point->pp, 1..$current_copies_num ],
|
||||
);
|
||||
+
|
||||
push @{ $self->{objects} }, $object;
|
||||
$self->object_loaded($#{ $self->{objects} }, no_arrange => 1);
|
||||
}
|
||||
@@ -1274,7 +1276,7 @@ has 'thumbnail_scaling_factor' => (is => 'rw', trigger => \&_transform_thumbnail
|
||||
has 'config' => (is => 'rw', default => sub { Slic3r::Config->new });
|
||||
has 'layer_height_ranges' => (is => 'rw', default => sub { [] }); # [ z_min, z_max, layer_height ]
|
||||
has 'material_mapping' => (is => 'rw', default => sub { {} }); # { material_id => extruder_idx }
|
||||
-has 'mesh_stats' => (is => 'rw');
|
||||
+has 'mesh_stats' => (is => 'ro', required => 1);
|
||||
|
||||
# statistics
|
||||
has 'facets' => (is => 'rw');
|
||||
diff --git a/lib/Slic3r/Model.pm b/lib/Slic3r/Model.pm
|
||||
index 3bddb68..3594c9b 100644
|
||||
--- a/lib/Slic3r/Model.pm
|
||||
+++ b/lib/Slic3r/Model.pm
|
||||
@@ -308,7 +308,7 @@ use Storable qw(dclone);
|
||||
has 'input_file' => (is => 'rw');
|
||||
has 'model' => (is => 'ro', weak_ref => 1, required => 1);
|
||||
has 'volumes' => (is => 'ro', default => sub { [] });
|
||||
-has 'instances' => (is => 'rw');
|
||||
+has 'instances' => (is => 'rw'); # in unscaled coordinates
|
||||
has 'config' => (is => 'rw', default => sub { Slic3r::Config->new });
|
||||
has 'layer_height_ranges' => (is => 'rw', default => sub { [] }); # [ z_min, z_max, layer_height ]
|
||||
has 'material_mapping' => (is => 'rw', default => sub { {} }); # { material_id => extruder_idx }
|
||||
diff --git a/xs/src/TriangleMesh.cpp b/xs/src/TriangleMesh.cpp
|
||||
index bc653d8..9eae734 100644
|
||||
--- a/xs/src/TriangleMesh.cpp
|
||||
+++ b/xs/src/TriangleMesh.cpp
|
||||
@@ -532,8 +532,11 @@ void TriangleMesh::rotate(double angle, Point* center)
|
||||
mesh->stl.stats.original_num_facets = mesh->stl.stats.number_of_facets;
|
||||
stl_allocate(&mesh->stl);
|
||||
|
||||
+ int first = 1;
|
||||
for (std::deque<int>::const_iterator facet = facets.begin(); facet != facets.end(); facet++) {
|
||||
mesh->stl.facet_start[facet - facets.begin()] = this->stl.facet_start[*facet];
|
||||
+ stl_facet_stats(&mesh->stl, this->stl.facet_start[*facet], first);
|
||||
+ first = 0;
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/xs/src/admesh/stl.h b/xs/src/admesh/stl.h
|
||||
index 332a5bf..ac41438 100644
|
||||
--- a/xs/src/admesh/stl.h
|
||||
+++ b/xs/src/admesh/stl.h
|
||||
@@ -178,6 +178,6 @@
|
||||
static void stl_count_facets(stl_file *stl, char *file);
|
||||
extern void stl_allocate(stl_file *stl);
|
||||
static void stl_read(stl_file *stl, int first_facet, int first);
|
||||
-static void stl_facet_stats(stl_file *stl, stl_facet facet, int first);
|
||||
+extern void stl_facet_stats(stl_file *stl, stl_facet facet, int first);
|
||||
extern void stl_reallocate(stl_file *stl);
|
||||
extern void stl_get_size(stl_file *stl);
|
||||
diff --git a/xs/t/01_trianglemesh.t b/xs/t/01_trianglemesh.t
|
||||
index 71ae473..127c8c9 100644
|
||||
--- a/xs/t/01_trianglemesh.t
|
||||
+++ b/xs/t/01_trianglemesh.t
|
||||
@@ -4,7 +4,7 @@ use strict;
|
||||
use warnings;
|
||||
|
||||
use Slic3r::XS;
|
||||
-use Test::More tests => 51;
|
||||
+use Test::More tests => 52;
|
||||
|
||||
is Slic3r::TriangleMesh::hello_world(), 'Hello world!',
|
||||
'hello world';
|
||||
@@ -59,6 +59,7 @@ my $cube = {
|
||||
my $meshes = $m->split;
|
||||
is scalar(@$meshes), 1, 'split';
|
||||
isa_ok $meshes->[0], 'Slic3r::TriangleMesh', 'split';
|
||||
+ is_deeply $m->bb3, $meshes->[0]->bb3, 'split populates stats';
|
||||
}
|
||||
|
||||
my $m2 = Slic3r::TriangleMesh->new;
|
||||
--
|
||||
1.8.5.1
|
||||
|
@ -1,116 +0,0 @@
|
||||
From 387df3b90024f99c4cd540488374ab41c60ddb60 Mon Sep 17 00:00:00 2001
|
||||
From: Alessandro Ranellucci <aar@cpan.org>
|
||||
Date: Sun, 24 Nov 2013 13:04:16 +0100
|
||||
Subject: [PATCH] Fix regression causing toolchange_gcode to crash Slic3r.
|
||||
Includes regression test. #1545
|
||||
|
||||
---
|
||||
lib/Slic3r/GCode.pm | 8 +++++++-
|
||||
lib/Slic3r/GCode/Layer.pm | 2 +-
|
||||
lib/Slic3r/Print.pm | 12 ++++--------
|
||||
t/multi.t | 1 +
|
||||
4 files changed, 13 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm
|
||||
index 9ae5d95..c89d98c 100644
|
||||
--- a/lib/Slic3r/GCode.pm
|
||||
+++ b/lib/Slic3r/GCode.pm
|
||||
@@ -8,6 +8,7 @@ use Slic3r::Geometry::Clipper qw(union_ex);
|
||||
use Slic3r::Surface ':types';
|
||||
|
||||
has 'config' => (is => 'ro', required => 1);
|
||||
+has 'extra_variables' => (is => 'rw', default => sub {{}});
|
||||
has 'extruders' => (is => 'ro', required => 1);
|
||||
has 'multiple_extruders' => (is => 'lazy');
|
||||
has 'standby_points' => (is => 'rw');
|
||||
@@ -642,7 +643,7 @@ sub set_extruder {
|
||||
|
||||
# append custom toolchange G-code
|
||||
if (defined $self->extruder && $self->config->toolchange_gcode) {
|
||||
- $gcode .= sprintf "%s\n", $self->print->replace_variables($self->config->toolchange_gcode, {
|
||||
+ $gcode .= sprintf "%s\n", $self->replace_variables($self->config->toolchange_gcode, {
|
||||
previous_extruder => $self->extruder->id,
|
||||
next_extruder => $extruder->id,
|
||||
});
|
||||
@@ -741,4 +742,9 @@ sub set_bed_temperature {
|
||||
return $gcode;
|
||||
}
|
||||
|
||||
+sub replace_variables {
|
||||
+ my ($self, $string, $extra) = @_;
|
||||
+ return $self->config->replace_options($string, { %{$self->extra_variables}, %{ $extra || {} } });
|
||||
+}
|
||||
+
|
||||
1;
|
||||
diff --git a/lib/Slic3r/GCode/Layer.pm b/lib/Slic3r/GCode/Layer.pm
|
||||
index 1fd7096..8709ed8 100644
|
||||
--- a/lib/Slic3r/GCode/Layer.pm
|
||||
+++ b/lib/Slic3r/GCode/Layer.pm
|
||||
@@ -66,7 +66,7 @@ sub process_layer {
|
||||
|
||||
# set new layer - this will change Z and force a retraction if retract_layer_change is enabled
|
||||
$gcode .= $self->gcodegen->change_layer($layer);
|
||||
- $gcode .= $self->print->replace_variables($Slic3r::Config->layer_gcode, {
|
||||
+ $gcode .= $self->gcodegen->replace_variables($Slic3r::Config->layer_gcode, {
|
||||
layer_num => $self->gcodegen->layer->id,
|
||||
}) . "\n" if $Slic3r::Config->layer_gcode;
|
||||
|
||||
diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm
|
||||
index a9c9ef3..ed0d806 100644
|
||||
--- a/lib/Slic3r/Print.pm
|
||||
+++ b/lib/Slic3r/Print.pm
|
||||
@@ -726,6 +726,7 @@ sub write_gcode {
|
||||
# set up our extruder object
|
||||
my $gcodegen = Slic3r::GCode->new(
|
||||
config => $self->config,
|
||||
+ extra_variables => $self->extra_variables,
|
||||
extruders => $self->extruders, # we should only pass the *used* extruders (but maintain the Tx indices right!)
|
||||
layer_count => $self->layer_count,
|
||||
);
|
||||
@@ -749,7 +750,7 @@ sub write_gcode {
|
||||
}
|
||||
};
|
||||
$print_first_layer_temperature->(0);
|
||||
- printf $fh "%s\n", $self->replace_variables($Slic3r::Config->start_gcode);
|
||||
+ printf $fh "%s\n", $gcodegen->replace_variables($Slic3r::Config->start_gcode);
|
||||
$print_first_layer_temperature->(1);
|
||||
|
||||
# set other general things
|
||||
@@ -902,7 +903,7 @@ sub write_gcode {
|
||||
# write end commands to file
|
||||
print $fh $gcodegen->retract if $gcodegen->extruder; # empty prints don't even set an extruder
|
||||
print $fh $gcodegen->set_fan(0);
|
||||
- printf $fh "%s\n", $self->replace_variables($Slic3r::Config->end_gcode);
|
||||
+ printf $fh "%s\n", $gcodegen->replace_variables($Slic3r::Config->end_gcode);
|
||||
|
||||
foreach my $extruder (@{$self->extruders}) {
|
||||
printf $fh "; filament used = %.1fmm (%.1fcm3)\n",
|
||||
@@ -949,12 +950,7 @@ sub expanded_output_filepath {
|
||||
# path is a full path to a file so we use it as it is
|
||||
}
|
||||
|
||||
- return $self->replace_variables($path, $extra_variables);
|
||||
-}
|
||||
-
|
||||
-sub replace_variables {
|
||||
- my ($self, $string, $extra) = @_;
|
||||
- return $self->config->replace_options($string, { %{$self->extra_variables}, %{ $extra || {} } });
|
||||
+ return $self->config->replace_options($path, { %{$self->extra_variables}, %$extra_variables });
|
||||
}
|
||||
|
||||
# given the path to a file, this function returns its filename with and without extension
|
||||
diff --git a/t/multi.t b/t/multi.t
|
||||
index d338a2d..c7214e8 100644
|
||||
--- a/t/multi.t
|
||||
+++ b/t/multi.t
|
||||
@@ -22,6 +22,7 @@ use Slic3r::Test;
|
||||
$config->set('extruder_offset', [ [0,0], [20,0], [0,20] ]);
|
||||
$config->set('temperature', [200, 180, 170]);
|
||||
$config->set('first_layer_temperature', [206, 186, 166]);
|
||||
+ $config->set('toolchange_gcode', ';toolchange'); # test that it doesn't crash when this is supplied
|
||||
|
||||
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
||||
|
||||
--
|
||||
1.8.5.1
|
||||
|
@ -1,47 +0,0 @@
|
||||
From 5217bc370a2941221322c26c8cb08b6de4c0e0fd Mon Sep 17 00:00:00 2001
|
||||
From: Alessandro Ranellucci <aar@cpan.org>
|
||||
Date: Sun, 24 Nov 2013 12:37:36 +0100
|
||||
Subject: [PATCH] Fix regression causing retraction restarts to ignore
|
||||
extrusion_axis. Includes regression test. #1547
|
||||
|
||||
---
|
||||
lib/Slic3r/GCode.pm | 3 ++-
|
||||
t/gcode.t | 7 ++++++-
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm
|
||||
index 4563cd7..9ae5d95 100644
|
||||
--- a/lib/Slic3r/GCode.pm
|
||||
+++ b/lib/Slic3r/GCode.pm
|
||||
@@ -546,7 +546,8 @@ sub unretract {
|
||||
$gcode .= "G11 ; unretract\n";
|
||||
} elsif ($self->config->extrusion_axis) {
|
||||
# use G1 instead of G0 because G0 will blend the restart with the previous travel move
|
||||
- $gcode .= sprintf "G1 E%.5f F%.3f",
|
||||
+ $gcode .= sprintf "G1 %s%.5f F%.3f",
|
||||
+ $self->config->extrusion_axis,
|
||||
$self->extruder->extrude($to_unretract),
|
||||
$self->extruder->retract_speed_mm_min;
|
||||
$gcode .= " ; compensate retraction" if $self->config->gcode_comments;
|
||||
diff --git a/t/gcode.t b/t/gcode.t
|
||||
index bb51698..f8ee415 100644
|
||||
--- a/t/gcode.t
|
||||
+++ b/t/gcode.t
|
||||
@@ -46,8 +46,13 @@ use Slic3r::Test;
|
||||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('complete_objects', 1);
|
||||
$config->set('duplicate', 2);
|
||||
+ $config->set('extrusion_axis', 'A');
|
||||
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
||||
- ok Slic3r::Test::gcode($print), "complete_objects";
|
||||
+ ok my $gcode = Slic3r::Test::gcode($print), "complete_objects";
|
||||
+ Slic3r::GCode::Reader->new->parse($gcode, sub {
|
||||
+ my ($self, $cmd, $args, $info) = @_;
|
||||
+ fail 'unexpected E argument' if defined $args->{E};
|
||||
+ });
|
||||
}
|
||||
|
||||
__END__
|
||||
--
|
||||
1.8.5.1
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 0afee63e84d61b4af66982723b7777518dac900c Mon Sep 17 00:00:00 2001
|
||||
From: Alessandro Ranellucci <aar@cpan.org>
|
||||
Date: Sat, 7 Dec 2013 21:03:10 +0100
|
||||
Subject: [PATCH] Fixed regression in object placement in STL export. #1552
|
||||
|
||||
---
|
||||
lib/Slic3r/Model.pm | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/Slic3r/Model.pm b/lib/Slic3r/Model.pm
|
||||
index 23d827c..4ff7e4d 100644
|
||||
--- a/lib/Slic3r/Model.pm
|
||||
+++ b/lib/Slic3r/Model.pm
|
||||
@@ -216,9 +216,9 @@ sub mesh {
|
||||
foreach my $instance (@instances) {
|
||||
my $mesh = $object->mesh->clone;
|
||||
if ($instance) {
|
||||
- $mesh->rotate($instance->rotation, Slic3r::Point->new(0,0));
|
||||
- $mesh->scale($instance->scaling_factor);
|
||||
$mesh->align_to_origin;
|
||||
+ $mesh->rotate($instance->rotation, $object->center_2D);
|
||||
+ $mesh->scale($instance->scaling_factor);
|
||||
$mesh->translate(@{$instance->offset}, 0);
|
||||
}
|
||||
push @meshes, $mesh;
|
||||
--
|
||||
1.8.5.1
|
||||
|
@ -1,105 +0,0 @@
|
||||
From 00e8ba478176103271ad31bcf867ba0c4444b244 Mon Sep 17 00:00:00 2001
|
||||
From: Alessandro Ranellucci <aar@cpan.org>
|
||||
Date: Sat, 7 Dec 2013 14:52:59 +0100
|
||||
Subject: [PATCH] Fix regression causing complete_objects to skip Z moves after
|
||||
first object is complete. Includes regression test. #1582 #1541
|
||||
|
||||
---
|
||||
lib/Slic3r/GCode.pm | 32 ++++++++++++++++++++------------
|
||||
t/gcode.t | 16 +++++++++++++++-
|
||||
2 files changed, 35 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm
|
||||
index c89d98c..26a9ba7 100644
|
||||
--- a/lib/Slic3r/GCode.pm
|
||||
+++ b/lib/Slic3r/GCode.pm
|
||||
@@ -130,25 +130,33 @@ sub change_layer {
|
||||
sub move_z {
|
||||
my ($self, $z, $comment) = @_;
|
||||
|
||||
- $z += $self->config->z_offset;
|
||||
-
|
||||
my $gcode = "";
|
||||
+
|
||||
+ $z += $self->config->z_offset;
|
||||
my $current_z = $self->z;
|
||||
- if (!defined $self->z || $z > $self->z) {
|
||||
- # if we're going over the current Z we won't be lifted anymore
|
||||
+ my $nominal_z = defined $current_z ? ($current_z - $self->lifted) : undef;
|
||||
+
|
||||
+ if (!defined $current_z || $z > $current_z || $z < $nominal_z) {
|
||||
+ # we're moving above the current actual Z (so above the lift height of the current
|
||||
+ # layer if any) or below the current nominal layer
|
||||
+
|
||||
+ # in both cases, we're going to the nominal Z of the next layer
|
||||
$self->lifted(0);
|
||||
|
||||
- # this retraction may alter $self->z
|
||||
- $gcode .= $self->retract(move_z => $z) if $self->extruder->retract_layer_change;
|
||||
+ if ($self->extruder->retract_layer_change) {
|
||||
+ # this retraction may alter $self->z
|
||||
+ $gcode .= $self->retract(move_z => $z);
|
||||
+ $current_z = $self->z; # update current z in case retract() changed it
|
||||
+ $nominal_z = defined $current_z ? ($current_z - $self->lifted) : undef;
|
||||
+ }
|
||||
$self->speed('travel');
|
||||
$gcode .= $self->G0(undef, $z, 0, $comment || ('move to next layer (' . $self->layer->id . ')'))
|
||||
- if !defined $self->z || abs($z - ($self->z - $self->lifted)) > epsilon;
|
||||
- } elsif ($z < $self->z && $z > ($self->z - $self->lifted + epsilon)) {
|
||||
- # we're moving to a layer height which is greater than the nominal current one
|
||||
- # (nominal = actual - lifted) and less than the actual one. we're basically
|
||||
- # advancing to next layer, whose nominal Z is still lower than the previous
|
||||
+ if !defined $current_z || abs($z - $nominal_z) > epsilon;
|
||||
+ } elsif ($z < $current_z) {
|
||||
+ # we're moving above the current nominal layer height and below the current actual one.
|
||||
+ # we're basically advancing to next layer, whose nominal Z is still lower than the previous
|
||||
# layer Z with lift.
|
||||
- $self->lifted($self->z - $z);
|
||||
+ $self->lifted($current_z - $z);
|
||||
}
|
||||
|
||||
return $gcode;
|
||||
diff --git a/t/gcode.t b/t/gcode.t
|
||||
index f8ee415..17f4ed8 100644
|
||||
--- a/t/gcode.t
|
||||
+++ b/t/gcode.t
|
||||
@@ -1,4 +1,4 @@
|
||||
-use Test::More tests => 4;
|
||||
+use Test::More tests => 6;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
@@ -43,16 +43,30 @@ use Slic3r::Test;
|
||||
}
|
||||
|
||||
{
|
||||
+ # This tests the following behavior:
|
||||
+ # - complete objects does not crash
|
||||
+ # - no hard-coded "E" are generated
|
||||
+ # - Z moves are correctly generated for both objects
|
||||
my $config = Slic3r::Config->new_from_defaults;
|
||||
$config->set('complete_objects', 1);
|
||||
$config->set('duplicate', 2);
|
||||
$config->set('extrusion_axis', 'A');
|
||||
+ $config->set('start_gcode', ''); # prevent any default extra Z move
|
||||
+ $config->set('layer_height', 0.4);
|
||||
+ $config->set('first_layer_height', 0.4);
|
||||
my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
|
||||
ok my $gcode = Slic3r::Test::gcode($print), "complete_objects";
|
||||
+ my @z_moves = ();
|
||||
Slic3r::GCode::Reader->new->parse($gcode, sub {
|
||||
my ($self, $cmd, $args, $info) = @_;
|
||||
fail 'unexpected E argument' if defined $args->{E};
|
||||
+ if (defined $args->{Z}) {
|
||||
+ push @z_moves, $args->{Z};
|
||||
+ }
|
||||
});
|
||||
+ my $layer_count = 20/0.4; # cube is 20mm tall
|
||||
+ is scalar(@z_moves), 2*$layer_count, 'complete_objects generates the correct number of Z moves';
|
||||
+ is_deeply [ @z_moves[0..($layer_count-1)] ], [ @z_moves[$layer_count..$#z_moves] ], 'complete_objects generates the correct Z moves';
|
||||
}
|
||||
|
||||
__END__
|
||||
--
|
||||
1.8.5.1
|
||||
|
@ -1,8 +1,8 @@
|
||||
diff --git a/Build.PL b/Build.PL
|
||||
index b501025..1abe9fe 100644
|
||||
index f7117e6..0d2abb6 100644
|
||||
--- a/Build.PL
|
||||
+++ b/Build.PL
|
||||
@@ -9,7 +9,7 @@ use File::Spec;
|
||||
@@ -9,14 +9,14 @@ use File::Spec;
|
||||
my %prereqs = qw(
|
||||
Boost::Geometry::Utils 0.15
|
||||
Encode::Locale 0
|
||||
@ -11,7 +11,15 @@ index b501025..1abe9fe 100644
|
||||
File::Basename 0
|
||||
File::Spec 0
|
||||
Getopt::Long 0
|
||||
@@ -142,7 +142,10 @@ if (@missing_prereqs) {
|
||||
Math::ConvexHull::MonotoneChain 0.01
|
||||
Math::Geometry::Voronoi 1.3
|
||||
Math::PlanePath 53
|
||||
- Module::Build::WithXSpp 0.14
|
||||
+ Module::Build::WithXSpp 0.13
|
||||
Moo 1.003001
|
||||
Scalar::Util 0
|
||||
Storable 0
|
||||
@@ -149,7 +149,10 @@ if (@missing_prereqs) {
|
||||
exit 1;
|
||||
} elsif (!$gui) {
|
||||
eval "use App::Prove; 1" or die "Failed to load App::Prove";
|
||||
|
39
slic3r-clipper.patch
Normal file
39
slic3r-clipper.patch
Normal file
@ -0,0 +1,39 @@
|
||||
diff --git a/xs/Build.PL b/xs/Build.PL
|
||||
index b358623..90a2cc2 100644
|
||||
--- a/xs/Build.PL
|
||||
+++ b/xs/Build.PL
|
||||
@@ -25,7 +25,7 @@ my $build = Module::Build::WithXSpp->new(
|
||||
# HAS_BOOL : stops Perl/lib/CORE/handy.h from doing "# define bool char" for MSVC
|
||||
# NOGDI : prevents inclusion of wingdi.h which defines functions Polygon() and Polyline() in global namespace
|
||||
extra_compiler_flags => [qw(-D_GLIBCXX_USE_C99 -DHAS_BOOL -DNOGDI -DSLIC3RXS), ($ENV{SLIC3R_DEBUG} ? ' -DSLIC3R_DEBUG -g' : '')],
|
||||
-
|
||||
+ extra_linker_flags => [qw(-lpolyclipping)],
|
||||
# Provides extra C typemaps that are auto-merged
|
||||
extra_typemap_modules => {
|
||||
'ExtUtils::Typemaps::Default' => '1.03',
|
||||
diff --git a/xs/src/ClipperUtils.hpp b/xs/src/ClipperUtils.hpp
|
||||
index 8f0974d..ab8f46d 100644
|
||||
--- a/xs/src/ClipperUtils.hpp
|
||||
+++ b/xs/src/ClipperUtils.hpp
|
||||
@@ -2,7 +2,7 @@
|
||||
#define slic3r_ClipperUtils_hpp_
|
||||
|
||||
#include <myinit.h>
|
||||
-#include "clipper.hpp"
|
||||
+#include <polyclipping/clipper.hpp>
|
||||
#include "ExPolygon.hpp"
|
||||
#include "Polygon.hpp"
|
||||
|
||||
diff --git a/xs/xsp/Clipper.xsp b/xs/xsp/Clipper.xsp
|
||||
index 2e63afb..61910e6 100644
|
||||
--- a/xs/xsp/Clipper.xsp
|
||||
+++ b/xs/xsp/Clipper.xsp
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
%{
|
||||
#include <myinit.h>
|
||||
-#include "clipper.hpp"
|
||||
+#include <polyclipping/clipper.hpp>
|
||||
#include "ClipperUtils.hpp"
|
||||
%}
|
||||
|
42
slic3r.spec
42
slic3r.spec
@ -1,8 +1,8 @@
|
||||
Name: slic3r
|
||||
Version: 1.0.0
|
||||
%global rcrc RC1
|
||||
%global rcrc RC2
|
||||
%global verrc %{version}%{rcrc}
|
||||
Release: 0.2.%{rcrc}%{?dist}
|
||||
Release: 0.3.%{rcrc}%{?dist}
|
||||
Summary: G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
|
||||
License: AGPLv3 and CC-BY
|
||||
# Images are CC-BY, code is AGPLv3
|
||||
@ -10,6 +10,9 @@ Group: Applications/Engineering
|
||||
URL: http://slic3r.org/
|
||||
Source0: https://github.com/alexrj/Slic3r/archive/%{verrc}.tar.gz
|
||||
|
||||
# This is blocked by https://bugzilla.redhat.com/show_bug.cgi?id=1047914
|
||||
%global with_clipper 0
|
||||
|
||||
# Modify Build.PL so we are able to build this on Fedora
|
||||
Patch0: %{name}-buildpl.patch
|
||||
|
||||
@ -18,11 +21,10 @@ Patch0: %{name}-buildpl.patch
|
||||
# Those two are located at the same place at the code, so the patch is merged
|
||||
Patch1: %{name}-nowarn-datadir.patch
|
||||
|
||||
Patch11: %{name}-1543.patch
|
||||
Patch12: %{name}-1545.patch
|
||||
Patch13: %{name}-1547.patch
|
||||
Patch14: %{name}-1552.patch
|
||||
Patch15: %{name}-1582-1541.patch
|
||||
%if %with_clipper
|
||||
# Unbundle clipper
|
||||
Patch2: %{name}-clipper.patch
|
||||
%endif
|
||||
|
||||
Source1: %{name}.desktop
|
||||
BuildRequires: perl(Boost::Geometry::Utils) >= 0.15
|
||||
@ -37,18 +39,19 @@ BuildRequires: perl(Getopt::Long)
|
||||
BuildRequires: perl(Growl::GNTP)
|
||||
BuildRequires: perl(IO::Scalar)
|
||||
BuildRequires: perl(List::Util)
|
||||
BuildRequires: perl(Math::Clipper) >= 1.22
|
||||
BuildRequires: perl(Math::ConvexHull::MonotoneChain)
|
||||
BuildRequires: perl(Math::ConvexHull) >= 1.0.4
|
||||
BuildRequires: perl(Math::Geometry::Voronoi) >= 1.3
|
||||
BuildRequires: perl(Math::PlanePath) >= 53
|
||||
BuildRequires: perl(Module::Build)
|
||||
BuildRequires: perl(Module::Build::WithXSpp)
|
||||
|
||||
%if 0%{?fedora} > 19
|
||||
BuildRequires: perl(Moo) >= 1.003001
|
||||
%else
|
||||
BuildRequires: perl(Moo)
|
||||
%endif
|
||||
|
||||
BuildRequires: perl(parent)
|
||||
BuildRequires: perl(Scalar::Util)
|
||||
BuildRequires: perl(Storable)
|
||||
@ -59,12 +62,19 @@ BuildRequires: perl(Time::HiRes)
|
||||
BuildRequires: perl(Wx)
|
||||
BuildRequires: perl(XML::SAX)
|
||||
BuildRequires: perl(XML::SAX::ExpatXS)
|
||||
|
||||
%if %with_clipper
|
||||
BuildRequires: polyclipping-devel
|
||||
%endif
|
||||
|
||||
BuildRequires: desktop-file-utils
|
||||
Requires: perl(Class::XSAccessor)
|
||||
Requires: perl(Growl::GNTP)
|
||||
|
||||
%if 0%{?fedora} > 19
|
||||
Requires: perl(Moo) >= 1.003001
|
||||
%endif
|
||||
|
||||
Requires: perl(XML::SAX)
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
|
||||
|
||||
@ -79,14 +89,15 @@ for more information.
|
||||
|
||||
%prep
|
||||
%setup -qn Slic3r-%{verrc}
|
||||
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%if %with_clipper
|
||||
%patch2 -p1
|
||||
# Remove bundled clipper
|
||||
rm xs/src/clipper.*pp
|
||||
%endif
|
||||
|
||||
%build
|
||||
cd xs
|
||||
@ -135,6 +146,11 @@ SLIC3R_NO_AUTO=1 perl Build.PL installdirs=vendor
|
||||
%{_datadir}/%{name}
|
||||
|
||||
%changelog
|
||||
* Thu Jan 02 2014 Miro Hrončok <mhroncok@redhat.com> - 1.0.0-0.3.RC2
|
||||
- New RC version
|
||||
- Remove already merged patches
|
||||
- Only require Module::Build::WithXSpp 0.13 in Build.PL
|
||||
|
||||
* Fri Dec 13 2013 Miro Hrončok <mhroncok@redhat.com> - 1.0.0-0.2.RC1
|
||||
- Backported several bugfixes
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user