New --extrusion-width-ratio option. #8
This commit is contained in:
parent
465bef1748
commit
3c0ea0b57f
@ -57,7 +57,8 @@ our $resolution = 0.00000001;
|
|||||||
our $layer_height = 0.4;
|
our $layer_height = 0.4;
|
||||||
our $first_layer_height_ratio = 1;
|
our $first_layer_height_ratio = 1;
|
||||||
our $infill_every_layers = 1;
|
our $infill_every_layers = 1;
|
||||||
our $thickness_ratio = 1;
|
our $extrusion_width_ratio = undef;
|
||||||
|
our $flow_speed_ratio = 1.2;
|
||||||
our $flow_width;
|
our $flow_width;
|
||||||
|
|
||||||
# print options
|
# print options
|
||||||
|
@ -68,6 +68,10 @@ our $Options = {
|
|||||||
label => 'Layer height (mm)',
|
label => 'Layer height (mm)',
|
||||||
type => 'f',
|
type => 'f',
|
||||||
},
|
},
|
||||||
|
'extrusion_width_ratio' => {
|
||||||
|
label => 'Extrusion width (ratio over layer height; leave empty to calculate automatically)',
|
||||||
|
type => 'f',
|
||||||
|
},
|
||||||
'first_layer_height_ratio' => {
|
'first_layer_height_ratio' => {
|
||||||
label => 'First layer height ratio',
|
label => 'First layer height ratio',
|
||||||
type => 'f',
|
type => 'f',
|
||||||
@ -276,15 +280,21 @@ sub validate {
|
|||||||
die "First layer height can't be greater than --nozzle-diameter\n"
|
die "First layer height can't be greater than --nozzle-diameter\n"
|
||||||
if ($Slic3r::layer_height * $Slic3r::first_layer_height_ratio) > $Slic3r::nozzle_diameter;
|
if ($Slic3r::layer_height * $Slic3r::first_layer_height_ratio) > $Slic3r::nozzle_diameter;
|
||||||
$Slic3r::flow_width = ($Slic3r::nozzle_diameter**2)
|
$Slic3r::flow_width = ($Slic3r::nozzle_diameter**2)
|
||||||
* $Slic3r::thickness_ratio * PI / (4 * $Slic3r::layer_height);
|
* $Slic3r::flow_speed_ratio * PI / (4 * $Slic3r::layer_height);
|
||||||
|
|
||||||
my $max_flow_width = $Slic3r::layer_height + $Slic3r::nozzle_diameter;
|
my $max_flow_width = $Slic3r::layer_height + $Slic3r::nozzle_diameter;
|
||||||
if ($Slic3r::flow_width > $max_flow_width) {
|
if ($Slic3r::flow_width > $max_flow_width) {
|
||||||
$Slic3r::thickness_ratio = $max_flow_width / $Slic3r::flow_width;
|
$Slic3r::flow_speed_ratio = $max_flow_width / $Slic3r::flow_width;
|
||||||
$Slic3r::flow_width = $max_flow_width;
|
$Slic3r::flow_width = $max_flow_width;
|
||||||
}
|
}
|
||||||
|
if ($Slic3r::extrusion_width_ratio) {
|
||||||
|
my $flow_width = $Slic3r::layer_height * $Slic3r::extrusion_width_ratio;
|
||||||
|
$Slic3r::flow_speed_ratio = $flow_width / $Slic3r::flow_width;
|
||||||
|
$Slic3r::flow_width = $flow_width;
|
||||||
|
}
|
||||||
|
|
||||||
Slic3r::debugf "Flow width = $Slic3r::flow_width\n";
|
Slic3r::debugf "Flow width = $Slic3r::flow_width\n";
|
||||||
|
Slic3r::debugf "Flow speed ratio = $Slic3r::flow_speed_ratio\n";
|
||||||
|
|
||||||
# --perimeters
|
# --perimeters
|
||||||
die "Invalid value for --perimeters\n"
|
die "Invalid value for --perimeters\n"
|
||||||
|
@ -101,7 +101,7 @@ sub extrude {
|
|||||||
# calculate extrusion length per distance unit
|
# calculate extrusion length per distance unit
|
||||||
my $e = $Slic3r::resolution
|
my $e = $Slic3r::resolution
|
||||||
* (($Slic3r::nozzle_diameter**2) / ($Slic3r::filament_diameter ** 2))
|
* (($Slic3r::nozzle_diameter**2) / ($Slic3r::filament_diameter ** 2))
|
||||||
* $Slic3r::thickness_ratio
|
* $Slic3r::flow_speed_ratio
|
||||||
* $self->flow_ratio
|
* $self->flow_ratio
|
||||||
* $Slic3r::filament_packing_density
|
* $Slic3r::filament_packing_density
|
||||||
* $path->depth_layers;
|
* $path->depth_layers;
|
||||||
|
@ -32,7 +32,7 @@ sub new {
|
|||||||
$size = Wx::Size->new($opt->{width} || -1, $opt->{height} || -1);
|
$size = Wx::Size->new($opt->{width} || -1, $opt->{height} || -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$field = Wx::TextCtrl->new($parent, -1, Slic3r::Config->get($opt_key),
|
$field = Wx::TextCtrl->new($parent, -1, Slic3r::Config->get($opt_key) || '',
|
||||||
Wx::wxDefaultPosition, $size, $style);
|
Wx::wxDefaultPosition, $size, $style);
|
||||||
EVT_TEXT($parent, $field, sub { Slic3r::Config->set($opt_key, $field->GetValue) });
|
EVT_TEXT($parent, $field, sub { Slic3r::Config->set($opt_key, $field->GetValue) });
|
||||||
push @reload_callbacks, sub { $field->SetValue(Slic3r::Config->get($opt_key)) };
|
push @reload_callbacks, sub { $field->SetValue(Slic3r::Config->get($opt_key)) };
|
||||||
|
@ -51,6 +51,10 @@ sub new {
|
|||||||
title => 'Custom GCODE',
|
title => 'Custom GCODE',
|
||||||
options => [qw(start_gcode end_gcode)],
|
options => [qw(start_gcode end_gcode)],
|
||||||
},
|
},
|
||||||
|
extrusion => {
|
||||||
|
title => 'Extrusion',
|
||||||
|
options => [qw(extrusion_width_ratio)],
|
||||||
|
},
|
||||||
);
|
);
|
||||||
$self->{panels} = \%panels;
|
$self->{panels} = \%panels;
|
||||||
|
|
||||||
@ -73,13 +77,17 @@ sub new {
|
|||||||
return $tab;
|
return $tab;
|
||||||
};
|
};
|
||||||
|
|
||||||
my $tab1 = $make_tab->([qw(transform accuracy skirt)], [qw(print retract)]);
|
my @tabs = (
|
||||||
my $tab2 = $make_tab->([qw(printer filament)], [qw(speed)]);
|
$make_tab->([qw(transform accuracy skirt)], [qw(print retract)]),
|
||||||
my $tab3 = $make_tab->([qw(gcode)]);
|
$make_tab->([qw(printer filament)], [qw(speed)]),
|
||||||
|
$make_tab->([qw(gcode)]),
|
||||||
|
$make_tab->([qw(extrusion)]),
|
||||||
|
);
|
||||||
|
|
||||||
$tabpanel->AddPage($tab1, "Print Settings");
|
$tabpanel->AddPage($tabs[0], "Print Settings");
|
||||||
$tabpanel->AddPage($tab2, "Printer and Filament");
|
$tabpanel->AddPage($tabs[1], "Printer and Filament");
|
||||||
$tabpanel->AddPage($tab3, "Start/End GCODE");
|
$tabpanel->AddPage($tabs[2], "Start/End GCODE");
|
||||||
|
$tabpanel->AddPage($tabs[3], "Advanced");
|
||||||
|
|
||||||
my $buttons_sizer;
|
my $buttons_sizer;
|
||||||
{
|
{
|
||||||
|
12
slic3r.pl
12
slic3r.pl
@ -35,7 +35,7 @@ GetOptions(
|
|||||||
# filament options
|
# filament options
|
||||||
'filament-diameter=f' => \$Slic3r::filament_diameter,
|
'filament-diameter=f' => \$Slic3r::filament_diameter,
|
||||||
'filament-packing-density=f' => \$Slic3r::filament_packing_density,
|
'filament-packing-density=f' => \$Slic3r::filament_packing_density,
|
||||||
'temperature=i' => \$Slic3r::temperature,
|
'temperature=i' => \$Slic3r::temperature,
|
||||||
|
|
||||||
# speed options
|
# speed options
|
||||||
'print-feed-rate=i' => \$Slic3r::print_feed_rate,
|
'print-feed-rate=i' => \$Slic3r::print_feed_rate,
|
||||||
@ -44,9 +44,10 @@ GetOptions(
|
|||||||
'bottom-layer-speed-ratio=f' => \$Slic3r::bottom_layer_speed_ratio,
|
'bottom-layer-speed-ratio=f' => \$Slic3r::bottom_layer_speed_ratio,
|
||||||
|
|
||||||
# accuracy options
|
# accuracy options
|
||||||
'layer-height=f' => \$Slic3r::layer_height,
|
'layer-height=f' => \$Slic3r::layer_height,
|
||||||
'first-layer-height-ratio=f' => \$Slic3r::first_layer_height_ratio,
|
'extrusion-width-ratio=f' => \$Slic3r::extrusion_width_ratio,
|
||||||
'infill-every-layers=i' => \$Slic3r::infill_every_layers,
|
'first-layer-height-ratio=f' => \$Slic3r::first_layer_height_ratio,
|
||||||
|
'infill-every-layers=i' => \$Slic3r::infill_every_layers,
|
||||||
|
|
||||||
# print options
|
# print options
|
||||||
'perimeters=i' => \$Slic3r::perimeters,
|
'perimeters=i' => \$Slic3r::perimeters,
|
||||||
@ -165,6 +166,9 @@ Usage: slic3r.pl [ OPTIONS ] file.stl
|
|||||||
layer with (> 0, default: $Slic3r::first_layer_height_ratio)
|
layer with (> 0, default: $Slic3r::first_layer_height_ratio)
|
||||||
--infill-every-layers
|
--infill-every-layers
|
||||||
Infill every N layers (default: $Slic3r::infill_every_layers)
|
Infill every N layers (default: $Slic3r::infill_every_layers)
|
||||||
|
--extrusion-width-ratio
|
||||||
|
Calculate the extrusion width as the layer height multiplied by
|
||||||
|
this value (> 0, default: calculated automatically)
|
||||||
|
|
||||||
Print options:
|
Print options:
|
||||||
--perimeters Number of perimeters/horizontal skins (range: 1+,
|
--perimeters Number of perimeters/horizontal skins (range: 1+,
|
||||||
|
Loading…
Reference in New Issue
Block a user