mirror of https://github.com/vitalif/Slic3r
Failing test case about spurious infill in hollow objects, caused by shells being correctly generated even for hollow objects - however sometimes we don't want that
parent
0a8872ca6c
commit
6bd4803612
|
@ -616,7 +616,7 @@ sub discover_horizontal_shells {
|
||||||
my $margin = 3 * $layerm->solid_infill_flow->scaled_width; # require at least this size
|
my $margin = 3 * $layerm->solid_infill_flow->scaled_width; # require at least this size
|
||||||
my $too_narrow = diff_ex(
|
my $too_narrow = diff_ex(
|
||||||
[ map @$_, @$new_internal_solid ],
|
[ map @$_, @$new_internal_solid ],
|
||||||
[ offset([ offset([ map @$_, @$new_internal_solid ], -$margin) ], +$margin) ],
|
[ offset2([ map @$_, @$new_internal_solid ], -$margin, +$margin) ],
|
||||||
1,
|
1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,7 @@ sub model {
|
||||||
vertices => $vertices,
|
vertices => $vertices,
|
||||||
facets => $facets,
|
facets => $facets,
|
||||||
);
|
);
|
||||||
|
$mesh->scale_xyz($params{scale_xyz}) if $params{scale_xyz};
|
||||||
$mesh->scale($params{scale}) if $params{scale};
|
$mesh->scale($params{scale}) if $params{scale};
|
||||||
|
|
||||||
my $model = Slic3r::Model->new;
|
my $model = Slic3r::Model->new;
|
||||||
|
|
|
@ -301,6 +301,16 @@ sub scale {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub scale_xyz {
|
||||||
|
my $self = shift;
|
||||||
|
my ($versor) = @_;
|
||||||
|
|
||||||
|
# transform vertex coordinates
|
||||||
|
foreach my $vertex (@{$self->vertices}) {
|
||||||
|
$vertex->[$_] *= $versor->[$_] for X,Y,Z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub move {
|
sub move {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my (@shift) = @_;
|
my (@shift) = @_;
|
||||||
|
|
22
t/shells.t
22
t/shells.t
|
@ -1,4 +1,4 @@
|
||||||
use Test::More tests => 3;
|
use Test::More tests => 4;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
|
@ -68,4 +68,24 @@ use Slic3r::Test;
|
||||||
"correct number of top solid shells is generated in V-shaped object";
|
"correct number of top solid shells is generated in V-shaped object";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
my $config = Slic3r::Config->new_from_defaults;
|
||||||
|
$config->set('perimeters', 0);
|
||||||
|
$config->set('fill_density', 0);
|
||||||
|
$config->set('cooling', 0); # prevent speed alteration
|
||||||
|
$config->set('first_layer_speed', '100%'); # prevent speed alteration
|
||||||
|
$config->set('extrusion_width', 0.2);
|
||||||
|
$config->set('bottom_solid_layers', 3);
|
||||||
|
$config->set('top_solid_layers', 0);
|
||||||
|
|
||||||
|
my $print = Slic3r::Test::init_print('V', scale_xyz => [2,1,1], config => $config);
|
||||||
|
my %layers = (); # Z => 1
|
||||||
|
Slic3r::GCode::Reader->new(gcode => Slic3r::Test::gcode($print))->parse(sub {
|
||||||
|
my ($self, $cmd, $args, $info) = @_;
|
||||||
|
$layers{$self->Z} = 1 if $info->{extruding};
|
||||||
|
});
|
||||||
|
is scalar(keys %layers), 3,
|
||||||
|
"shells are not extended into void if fill density is 0";
|
||||||
|
}
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
|
|
Loading…
Reference in New Issue