New option for customization of infill/perimeters overlap. #2459

This commit is contained in:
Alessandro Ranellucci 2015-02-01 12:08:25 +01:00
parent fbcf5319ea
commit 07cd25d0ec
8 changed files with 22 additions and 3 deletions

View File

@ -350,6 +350,7 @@ The author of the Silk icon set is Mark James.
Set a different extrusion width for top infill Set a different extrusion width for top infill
--support-material-extrusion-width --support-material-extrusion-width
Set a different extrusion width for support material Set a different extrusion width for support material
--infill-overlap Overlap between infill and perimeters (default: 15%)
--bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: 1) --bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: 1)
Multiple extruder options: Multiple extruder options:

View File

@ -79,7 +79,7 @@ use constant RESOLUTION => 0.0125;
use constant SCALED_RESOLUTION => RESOLUTION / SCALING_FACTOR; use constant SCALED_RESOLUTION => RESOLUTION / SCALING_FACTOR;
use constant SMALL_PERIMETER_LENGTH => (6.5 / SCALING_FACTOR) * 2 * PI; use constant SMALL_PERIMETER_LENGTH => (6.5 / SCALING_FACTOR) * 2 * PI;
use constant LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER => 0.15; use constant LOOP_CLIPPING_LENGTH_OVER_NOZZLE_DIAMETER => 0.15;
use constant INFILL_OVERLAP_OVER_SPACING => 0.45; use constant INFILL_OVERLAP_OVER_SPACING => 0.3;
use constant EXTERNAL_INFILL_MARGIN => 3; use constant EXTERNAL_INFILL_MARGIN => 3;
use constant INSET_OVERLAP_TOLERANCE => 0.4; use constant INSET_OVERLAP_TOLERANCE => 0.4;

View File

@ -474,7 +474,7 @@ sub build {
extrusion_width first_layer_extrusion_width perimeter_extrusion_width extrusion_width first_layer_extrusion_width perimeter_extrusion_width
external_perimeter_extrusion_width infill_extrusion_width solid_infill_extrusion_width external_perimeter_extrusion_width infill_extrusion_width solid_infill_extrusion_width
top_infill_extrusion_width support_material_extrusion_width top_infill_extrusion_width support_material_extrusion_width
bridge_flow_ratio infill_overlap bridge_flow_ratio
xy_size_compensation threads resolution xy_size_compensation threads resolution
)); ));
@ -644,6 +644,10 @@ sub build {
$optgroup->append_single_option_line('top_infill_extrusion_width'); $optgroup->append_single_option_line('top_infill_extrusion_width');
$optgroup->append_single_option_line('support_material_extrusion_width'); $optgroup->append_single_option_line('support_material_extrusion_width');
} }
{
my $optgroup = $page->new_optgroup('Overlap');
$optgroup->append_single_option_line('infill_overlap');
}
{ {
my $optgroup = $page->new_optgroup('Flow'); my $optgroup = $page->new_optgroup('Flow');
$optgroup->append_single_option_line('bridge_flow_ratio'); $optgroup->append_single_option_line('bridge_flow_ratio');

View File

@ -316,7 +316,7 @@ sub process {
for map Slic3r::Surface->new(expolygon => $_, surface_type => S_TYPE_INTERNAL), # use a bogus surface type for map Slic3r::Surface->new(expolygon => $_, surface_type => S_TYPE_INTERNAL), # use a bogus surface type
@{offset2_ex( @{offset2_ex(
[ map @{$_->simplify_p(&Slic3r::SCALED_RESOLUTION)}, @{union_ex(\@last)} ], [ map @{$_->simplify_p(&Slic3r::SCALED_RESOLUTION)}, @{union_ex(\@last)} ],
-($pspacing/2 + $min_perimeter_infill_spacing/2), -($pspacing/2 - $self->config->get_abs_value_over('infill_overlap', $pwidth) + $min_perimeter_infill_spacing/2),
+$min_perimeter_infill_spacing/2, +$min_perimeter_infill_spacing/2,
)}; )};
} }

View File

@ -501,6 +501,7 @@ $j
Set a different extrusion width for top infill Set a different extrusion width for top infill
--support-material-extrusion-width --support-material-extrusion-width
Set a different extrusion width for support material Set a different extrusion width for support material
--infill-overlap Overlap between infill and perimeters (default: $config->{infill_overlap})
--bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: $config->{bridge_flow_ratio}) --bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: $config->{bridge_flow_ratio})
Multiple extruder options: Multiple extruder options:

View File

@ -429,6 +429,14 @@ PrintConfigDef::build_def() {
Options["infill_only_where_needed"].tooltip = "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material)."; Options["infill_only_where_needed"].tooltip = "This option will limit infill to the areas actually needed for supporting ceilings (it will act as internal support material).";
Options["infill_only_where_needed"].cli = "infill-only-where-needed!"; Options["infill_only_where_needed"].cli = "infill-only-where-needed!";
Options["infill_overlap"].type = coFloatOrPercent;
Options["infill_overlap"].label = "Infill/perimeters overlap";
Options["infill_overlap"].category = "Advanced";
Options["infill_overlap"].tooltip = "This setting applies an additional overlap between infill and perimeters for better bonding. Theoretically this shouldn't be needed, but backlash might cause gaps. If expressed as percentage (example: 15%) it is calculated over perimeter extrusion width.";
Options["infill_overlap"].sidetext = "mm or %";
Options["infill_overlap"].cli = "infill-overlap=s";
Options["infill_overlap"].ratio_over = "perimeter_extrusion_width";
Options["infill_speed"].type = coFloat; Options["infill_speed"].type = coFloat;
Options["infill_speed"].label = "Infill"; Options["infill_speed"].label = "Infill";
Options["infill_speed"].category = "Speed"; Options["infill_speed"].category = "Speed";

View File

@ -224,6 +224,7 @@ class PrintRegionConfig : public virtual StaticPrintConfig
ConfigOptionInt infill_extruder; ConfigOptionInt infill_extruder;
ConfigOptionFloatOrPercent infill_extrusion_width; ConfigOptionFloatOrPercent infill_extrusion_width;
ConfigOptionInt infill_every_layers; ConfigOptionInt infill_every_layers;
ConfigOptionFloatOrPercent infill_overlap;
ConfigOptionFloat infill_speed; ConfigOptionFloat infill_speed;
ConfigOptionBool overhangs; ConfigOptionBool overhangs;
ConfigOptionInt perimeter_extruder; ConfigOptionInt perimeter_extruder;
@ -260,6 +261,8 @@ class PrintRegionConfig : public virtual StaticPrintConfig
this->infill_extrusion_width.value = 0; this->infill_extrusion_width.value = 0;
this->infill_extrusion_width.percent = false; this->infill_extrusion_width.percent = false;
this->infill_every_layers.value = 1; this->infill_every_layers.value = 1;
this->infill_overlap.value = 15;
this->infill_overlap.percent = true;
this->infill_speed.value = 80; this->infill_speed.value = 80;
this->overhangs.value = true; this->overhangs.value = true;
this->perimeter_extruder.value = 1; this->perimeter_extruder.value = 1;
@ -300,6 +303,7 @@ class PrintRegionConfig : public virtual StaticPrintConfig
if (opt_key == "infill_extruder") return &this->infill_extruder; if (opt_key == "infill_extruder") return &this->infill_extruder;
if (opt_key == "infill_extrusion_width") return &this->infill_extrusion_width; if (opt_key == "infill_extrusion_width") return &this->infill_extrusion_width;
if (opt_key == "infill_every_layers") return &this->infill_every_layers; if (opt_key == "infill_every_layers") return &this->infill_every_layers;
if (opt_key == "infill_overlap") return &this->infill_overlap;
if (opt_key == "infill_speed") return &this->infill_speed; if (opt_key == "infill_speed") return &this->infill_speed;
if (opt_key == "overhangs") return &this->overhangs; if (opt_key == "overhangs") return &this->overhangs;
if (opt_key == "perimeter_extruder") return &this->perimeter_extruder; if (opt_key == "perimeter_extruder") return &this->perimeter_extruder;

View File

@ -218,6 +218,7 @@ PrintObject::invalidate_state_by_config_options(const std::vector<t_config_optio
|| *opt_key == "overhangs" || *opt_key == "overhangs"
|| *opt_key == "first_layer_extrusion_width" || *opt_key == "first_layer_extrusion_width"
|| *opt_key == "perimeter_extrusion_width" || *opt_key == "perimeter_extrusion_width"
|| *opt_key == "infill_overlap"
|| *opt_key == "thin_walls" || *opt_key == "thin_walls"
|| *opt_key == "external_perimeters_first") { || *opt_key == "external_perimeters_first") {
steps.insert(posPerimeters); steps.insert(posPerimeters);