Accept both relative and absolute extrusion width values. #151
This commit is contained in:
parent
2e3c8241e4
commit
aedb6cc35f
@ -211,9 +211,8 @@ The author is Alessandro Ranellucci.
|
||||
--notes Notes to be added as comments to the output file
|
||||
|
||||
Flow options (advanced):
|
||||
--extrusion-width-ratio
|
||||
Calculate the extrusion width as the layer height multiplied by
|
||||
this value (> 0, default: calculated automatically)
|
||||
--extrusion-width Set extrusion width manually; it accepts either an absolute value in mm
|
||||
(like 0.65) or a percentage over layer height (like 200%)
|
||||
--bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: 1)
|
||||
|
||||
|
||||
|
@ -99,7 +99,7 @@ our $first_layer_height_ratio = 1;
|
||||
our $infill_every_layers = 1;
|
||||
|
||||
# flow options
|
||||
our $extrusion_width_ratio = 0;
|
||||
our $extrusion_width = 0;
|
||||
our $bridge_flow_ratio = 1;
|
||||
our $overlap_factor = 0.5;
|
||||
our $flow_width;
|
||||
|
@ -198,9 +198,9 @@ our $Options = {
|
||||
},
|
||||
|
||||
# flow options
|
||||
'extrusion_width_ratio' => {
|
||||
label => 'Extrusion width (ratio over layer height; leave zero to calculate automatically)',
|
||||
cli => 'extrusion-width-ratio=f',
|
||||
'extrusion_width' => {
|
||||
label => 'Extrusion width (mm or %; leave zero to calculate automatically)',
|
||||
cli => 'extrusion-width=f',
|
||||
type => 'f',
|
||||
},
|
||||
'bridge_flow_ratio' => {
|
||||
@ -516,15 +516,22 @@ sub load {
|
||||
next if /^$/;
|
||||
next if /^\s*#/;
|
||||
/^(\w+) = (.*)/ or die "Unreadable configuration file (invalid data at line $.)\n";
|
||||
my $key = $1;
|
||||
my ($key, $val) = ($1, $2);
|
||||
|
||||
# handle legacy options
|
||||
next if $ignore{$key};
|
||||
if ($key eq 'extrusion_width_ratio') {
|
||||
$key = 'extrusion_width';
|
||||
$val = $val =~ /^\d+(\.\d+)?$/ ? ($val*100) . "%" : 0;
|
||||
}
|
||||
|
||||
if (!exists $Options->{$key}) {
|
||||
$key = +(grep { $Options->{$_}{aliases} && grep $_ eq $key, @{$Options->{$_}{aliases}} }
|
||||
keys %$Options)[0] or warn "Unknown option $1 at line $.\n";
|
||||
keys %$Options)[0] or warn "Unknown option $key at line $.\n";
|
||||
}
|
||||
next unless $key;
|
||||
my $opt = $Options->{$key};
|
||||
set($key, $opt->{deserialize} ? $opt->{deserialize}->($2) : $2);
|
||||
set($key, $opt->{deserialize} ? $opt->{deserialize}->($val) : $val);
|
||||
}
|
||||
close $fh;
|
||||
}
|
||||
@ -581,8 +588,10 @@ sub validate {
|
||||
die "First layer height can't be zero or negative\n"
|
||||
if ($Slic3r::layer_height * $Slic3r::first_layer_height_ratio) <= 0;
|
||||
|
||||
if ($Slic3r::extrusion_width_ratio) {
|
||||
$Slic3r::flow_width = $Slic3r::layer_height * $Slic3r::extrusion_width_ratio;
|
||||
if ($Slic3r::extrusion_width) {
|
||||
$Slic3r::flow_width = $Slic3r::extrusion_width =~ /^(\d+(?:\.\d+)?)%$/
|
||||
? ($Slic3r::layer_height * $1 / 100)
|
||||
: $Slic3r::extrusion_width;
|
||||
} else {
|
||||
# here we calculate a sane default by matching the flow speed (at the nozzle)
|
||||
# and the feed rate
|
||||
|
@ -70,7 +70,7 @@ sub new {
|
||||
},
|
||||
extrusion => {
|
||||
title => 'Extrusion',
|
||||
options => [qw(extrusion_width_ratio bridge_flow_ratio)],
|
||||
options => [qw(extrusion_width bridge_flow_ratio)],
|
||||
},
|
||||
output => {
|
||||
title => 'Output',
|
||||
|
@ -437,7 +437,7 @@ sub write_gcode {
|
||||
print $fh "\n" if $Slic3r::notes;
|
||||
|
||||
for (qw(layer_height perimeters solid_layers fill_density nozzle_diameter filament_diameter
|
||||
extrusion_multiplier perimeter_speed infill_speed travel_speed extrusion_width_ratio scale)) {
|
||||
extrusion_multiplier perimeter_speed infill_speed travel_speed scale)) {
|
||||
printf $fh "; %s = %s\n", $_, Slic3r::Config->get($_);
|
||||
}
|
||||
printf $fh "; single wall width = %.2fmm\n", $Slic3r::flow_width;
|
||||
|
@ -255,9 +255,8 @@ $j
|
||||
--notes Notes to be added as comments to the output file
|
||||
|
||||
Flow options (advanced):
|
||||
--extrusion-width-ratio
|
||||
Calculate the extrusion width as the layer height multiplied by
|
||||
this value (> 0, default: calculated automatically)
|
||||
--extrusion-width Set extrusion width manually; it accepts either an absolute value in mm
|
||||
(like 0.65) or a percentage over layer height (like 200%)
|
||||
--bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: $Slic3r::bridge_flow_ratio)
|
||||
|
||||
EOF
|
||||
|
Loading…
Reference in New Issue
Block a user