Bugfix: some bridges being very close could lead to overlapping infill
This commit is contained in:
parent
d168ecbb4e
commit
2970e31540
2 changed files with 15 additions and 13 deletions
|
@ -63,6 +63,12 @@ sub make_fill {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# subtract any other surface already processed
|
||||||
|
$union = diff_ex(
|
||||||
|
[ map @$_, @$union ],
|
||||||
|
[ map $_->p, @surfaces ],
|
||||||
|
);
|
||||||
|
|
||||||
push @surfaces, map Slic3r::Surface->cast_from_expolygon($_,
|
push @surfaces, map Slic3r::Surface->cast_from_expolygon($_,
|
||||||
surface_type => $group->[0]->surface_type,
|
surface_type => $group->[0]->surface_type,
|
||||||
bridge_angle => $group->[0]->bridge_angle,
|
bridge_angle => $group->[0]->bridge_angle,
|
||||||
|
|
|
@ -55,22 +55,18 @@ sub group {
|
||||||
my $params = ref $_[0] eq 'HASH' ? shift(@_) : {};
|
my $params = ref $_[0] eq 'HASH' ? shift(@_) : {};
|
||||||
my (@surfaces) = @_;
|
my (@surfaces) = @_;
|
||||||
|
|
||||||
my $unique_type = sub {
|
my %unique_types = ();
|
||||||
($params->{merge_solid} && $_[0]->surface_type =~ /top|bottom|solid/
|
|
||||||
? 'solid' : $_[0]->surface_type) . "_" . ($_[0]->bridge_angle || '')
|
|
||||||
. "_" . $_[0]->depth_layers;
|
|
||||||
};
|
|
||||||
my @unique_types = ();
|
|
||||||
foreach my $surface (@surfaces) {
|
foreach my $surface (@surfaces) {
|
||||||
my $type = $unique_type->($surface);
|
my $type = ($params->{merge_solid} && $surface->surface_type =~ /top|bottom|solid/)
|
||||||
push @unique_types, $type unless grep $_ eq $type, @unique_types;
|
? 'solid'
|
||||||
|
: $surface->surface_type;
|
||||||
|
$type .= "_" . ($_[0]->bridge_angle || '');
|
||||||
|
$type .= "_" . $_[0]->depth_layers;
|
||||||
|
$unique_types{$type} ||= [];
|
||||||
|
push @{ $unique_types{$type} }, $surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
my @groups = ();
|
return values %unique_types;
|
||||||
foreach my $type (@unique_types) {
|
|
||||||
push @groups, [ grep { $unique_type->($_) eq $type } @surfaces ];
|
|
||||||
}
|
|
||||||
return @groups;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub add_hole {
|
sub add_hole {
|
||||||
|
|
Loading…
Reference in a new issue