mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-08-09 14:55:08 -06:00
Bugfix: wrong number of raft layers in some situations due to a numerical error
This commit is contained in:
parent
1f497c0f7c
commit
82e2dd4e62
3 changed files with 35 additions and 21 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue