Bugfix: wrong number of raft layers in some situations due to a numerical error

This commit is contained in:
Alessandro Ranellucci 2014-06-11 19:58:11 +02:00
parent 1f497c0f7c
commit 82e2dd4e62
3 changed files with 35 additions and 21 deletions

View file

@ -106,6 +106,7 @@ sub slice {
# make layers taking custom heights into account
my $print_z = my $slice_z = my $height = my $id = 0;
my $first_object_layer_height = -1;
my $first_object_layer_distance = -1;
# add raft layers
if ($self->config->raft_layers > 0) {
@ -123,7 +124,8 @@ sub slice {
# force first layer print_z according to the contact distance
# (the loop below will raise print_z by such height)
$first_object_layer_height = $distance;
$first_object_layer_height = $nozzle_diameter;
$first_object_layer_distance = $distance;
}
# loop until we have at least one layer and the max slice_z reaches the object height
@ -147,6 +149,7 @@ sub slice {
if ($first_object_layer_height != -1 && !@{$self->layers}) {
$height = $first_object_layer_height;
$print_z += ($first_object_layer_distance - $height);
}
$print_z += $height;

View file

@ -338,7 +338,6 @@ sub support_layers_z {
# layer_height > nozzle_diameter * 0.75
my $nozzle_diameter = $self->print_config->get_at('nozzle_diameter', $self->object_config->support_material_extruder-1);
my $support_material_height = max($max_object_layer_height, $nozzle_diameter * 0.75);
my @z = sort { $a <=> $b } @$contact_z, @$top_z, (map $_ + $nozzle_diameter, @$top_z);
# enforce first layer height
@ -352,7 +351,7 @@ sub support_layers_z {
# $z[1] is last raft layer (contact layer for the first layer object)
my $height = ($z[1] - $z[0]) / ($self->object_config->raft_layers - 1);
splice @z, 1, 0,
map { int($_*100)/100 }
map { sprintf "%.2f", $_ }
map { $z[0] + $height * $_ }
0..($self->object_config->raft_layers - 1);
}