mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-25 07:34:03 -06:00
Fix regression causing lack of contact infill
This commit is contained in:
parent
e5fe04ea7a
commit
f1922ce7b3
1 changed files with 16 additions and 15 deletions
|
@ -1043,19 +1043,27 @@ sub generate_support_material {
|
||||||
|
|
||||||
my $process_layer = sub {
|
my $process_layer = sub {
|
||||||
my ($layer_id) = @_;
|
my ($layer_id) = @_;
|
||||||
my $result = { contact => [], interface => [], support => [] };
|
|
||||||
|
$contact{$support_layers[$layer_id]} ||= [];
|
||||||
|
$interface{$layer_id} ||= [];
|
||||||
|
$support{$layer_id} ||= [];
|
||||||
|
|
||||||
if (0) {
|
if (0) {
|
||||||
require "Slic3r/SVG.pm";
|
require "Slic3r/SVG.pm";
|
||||||
Slic3r::SVG::output("layer_" . $support_layers[$layer_id] . ".svg",
|
Slic3r::SVG::output("layer_" . $support_layers[$layer_id] . ".svg",
|
||||||
red_expolygons => union_ex($contact{$support_layers[$layer_id]} || []),
|
red_expolygons => union_ex($contact{$support_layers[$layer_id]}),
|
||||||
green_expolygons => union_ex($interface{$layer_id} || []),
|
green_expolygons => union_ex($interface{$layer_id}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$contact{$layer_id} ||= [];
|
# islands
|
||||||
$interface{$layer_id} ||= [];
|
my $result = { contact => [], interface => [], support => [] };
|
||||||
$support{$layer_id} ||= [];
|
$result->{islands} = union_ex([
|
||||||
|
map @$_,
|
||||||
|
$interface{$layer_id},
|
||||||
|
$support{$layer_id},
|
||||||
|
$contact{$support_layers[$layer_id]},
|
||||||
|
]);
|
||||||
|
|
||||||
# contact
|
# contact
|
||||||
my $contact_infill = [];
|
my $contact_infill = [];
|
||||||
|
@ -1092,7 +1100,7 @@ sub generate_support_material {
|
||||||
) };
|
) };
|
||||||
|
|
||||||
# add the contact infill area to the interface area
|
# add the contact infill area to the interface area
|
||||||
$contact_infill = [ offset2(\@loops0, -($contact_loops) * $flow->scaled_spacing, +0.5*$flow->scaled_spacing) ];
|
$contact_infill = [ offset2(\@loops0, -($contact_loops + 0.5) * $flow->scaled_spacing, +0.5*$flow->scaled_spacing) ];
|
||||||
|
|
||||||
# transform loops into ExtrusionPath objects
|
# transform loops into ExtrusionPath objects
|
||||||
@loops = map Slic3r::ExtrusionPath->pack(
|
@loops = map Slic3r::ExtrusionPath->pack(
|
||||||
|
@ -1111,7 +1119,7 @@ sub generate_support_material {
|
||||||
# steal some space from support
|
# steal some space from support
|
||||||
$interface{$layer_id} = intersection(
|
$interface{$layer_id} = intersection(
|
||||||
[ offset([ map @$_, $interface{$layer_id}, $contact_infill ], scale 3) ],
|
[ offset([ map @$_, $interface{$layer_id}, $contact_infill ], scale 3) ],
|
||||||
[ @{$interface{$layer_id}}, @{$support{$layer_id}} ],
|
[ map @$_, $interface{$layer_id}, $support{$layer_id}, $contact_infill ],
|
||||||
undef, 1,
|
undef, 1,
|
||||||
);
|
);
|
||||||
$support{$layer_id} = diff(
|
$support{$layer_id} = diff(
|
||||||
|
@ -1190,13 +1198,6 @@ sub generate_support_material {
|
||||||
push @{$result->{support}}, @paths;
|
push @{$result->{support}}, @paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
# islands
|
|
||||||
$result->{islands} = union_ex([
|
|
||||||
@{$interface{$layer_id} || []},
|
|
||||||
@{$support{$layer_id} || []},
|
|
||||||
@{$contact{$support_layers[$layer_id]} || []},
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (0) {
|
if (0) {
|
||||||
require "Slic3r/SVG.pm";
|
require "Slic3r/SVG.pm";
|
||||||
Slic3r::SVG::output("islands_" . $support_layers[$layer_id] . ".svg",
|
Slic3r::SVG::output("islands_" . $support_layers[$layer_id] . ".svg",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue