New --start-gcode and --end-gcode options. #12
This commit is contained in:
parent
f7335b6d1e
commit
2d784fac9b
@ -46,12 +46,12 @@ Slic3r current features are:
|
|||||||
* center print around bed center point;
|
* center print around bed center point;
|
||||||
* multiple solid layers near horizontal external surfaces;
|
* multiple solid layers near horizontal external surfaces;
|
||||||
* ability to scale, rotate and multiply input object;
|
* ability to scale, rotate and multiply input object;
|
||||||
|
* customizable initial and final GCODE (using command line only);
|
||||||
* use different speed for bottom layer and perimeters.
|
* use different speed for bottom layer and perimeters.
|
||||||
|
|
||||||
Roadmap includes the following goals:
|
Roadmap includes the following goals:
|
||||||
|
|
||||||
* output some statistics;
|
* output some statistics;
|
||||||
* allow the user to customize initial and final GCODE commands;
|
|
||||||
* support material for internal perimeters;
|
* support material for internal perimeters;
|
||||||
* cool;
|
* cool;
|
||||||
* other fill patterns.
|
* other fill patterns.
|
||||||
@ -83,10 +83,9 @@ The author is Alessandro Ranellucci (me).
|
|||||||
--save <file> Save configuration to the specified file
|
--save <file> Save configuration to the specified file
|
||||||
--load <file> Load configuration from the specified file
|
--load <file> Load configuration from the specified file
|
||||||
-o, --output File to output gcode to (default: <inputfile>.gcode)
|
-o, --output File to output gcode to (default: <inputfile>.gcode)
|
||||||
|
|
||||||
|
|
||||||
Printer options:
|
Printer options:
|
||||||
--nozzle-diameter Diameter of nozzle in mm (default: 0.55)
|
--nozzle-diameter Diameter of nozzle in mm (default: 0.5)
|
||||||
--print-center Coordinates of the point to center the print around
|
--print-center Coordinates of the point to center the print around
|
||||||
(default: 100,100)
|
(default: 100,100)
|
||||||
--use-relative-e-distances
|
--use-relative-e-distances
|
||||||
@ -98,7 +97,7 @@ The author is Alessandro Ranellucci (me).
|
|||||||
--filament-diameter Diameter of your raw filament (default: 3)
|
--filament-diameter Diameter of your raw filament (default: 3)
|
||||||
--filament-packing-density
|
--filament-packing-density
|
||||||
Ratio of the extruded volume over volume pushed
|
Ratio of the extruded volume over volume pushed
|
||||||
into the extruder (default: 0.85)
|
into the extruder (default: 1)
|
||||||
--temperature Extrusion temperature (default: 200)
|
--temperature Extrusion temperature (default: 200)
|
||||||
|
|
||||||
Speed options:
|
Speed options:
|
||||||
@ -112,6 +111,9 @@ The author is Alessandro Ranellucci (me).
|
|||||||
|
|
||||||
Accuracy options:
|
Accuracy options:
|
||||||
--layer-height Layer height in mm (default: 0.4)
|
--layer-height Layer height in mm (default: 0.4)
|
||||||
|
--high-res-perimeters
|
||||||
|
Print perimeters at half layer height to get surface accuracy
|
||||||
|
(default: disabled)
|
||||||
|
|
||||||
Print options:
|
Print options:
|
||||||
--perimeters Number of perimeters/horizontal skins (range: 1+,
|
--perimeters Number of perimeters/horizontal skins (range: 1+,
|
||||||
@ -120,6 +122,11 @@ The author is Alessandro Ranellucci (me).
|
|||||||
(range: 1+, default: 3)
|
(range: 1+, default: 3)
|
||||||
--fill-density Infill density (range: 0-1, default: 0.4)
|
--fill-density Infill density (range: 0-1, default: 0.4)
|
||||||
--fill-angle Infill angle in degrees (range: 0-90, default: 0)
|
--fill-angle Infill angle in degrees (range: 0-90, default: 0)
|
||||||
|
--start-gcode Load initial gcode from the supplied file. This will overwrite
|
||||||
|
the default command (home all axes [G28]).
|
||||||
|
--end-gcode Load final gcode from the supplied file. This will overwrite
|
||||||
|
the default commands (turn off temperature [M104 S0],
|
||||||
|
home X axis [G28 X], disable motors [M84]).
|
||||||
|
|
||||||
Retraction options:
|
Retraction options:
|
||||||
--retract-length Length of retraction in mm when pausing extrusion
|
--retract-length Length of retraction in mm when pausing extrusion
|
||||||
@ -129,7 +136,7 @@ The author is Alessandro Ranellucci (me).
|
|||||||
Additional amount of filament in mm to push after
|
Additional amount of filament in mm to push after
|
||||||
compensating retraction (default: 0)
|
compensating retraction (default: 0)
|
||||||
--retract-before-travel
|
--retract-before-travel
|
||||||
Only retract before travel moves of this length (default: 1)
|
Only retract before travel moves of this length (default: 2)
|
||||||
|
|
||||||
Skirt options:
|
Skirt options:
|
||||||
--skirts Number of skirts to draw (default: 1)
|
--skirts Number of skirts to draw (default: 1)
|
||||||
@ -143,3 +150,4 @@ The author is Alessandro Ranellucci (me).
|
|||||||
--multiply-y Number of items along Y axis (1+, default: 1)
|
--multiply-y Number of items along Y axis (1+, default: 1)
|
||||||
--multiply-distance Distance in mm between copies (default: 6)
|
--multiply-distance Distance in mm between copies (default: 6)
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ our $z_offset = 0;
|
|||||||
# filament options
|
# filament options
|
||||||
our $filament_diameter = 3; # mm
|
our $filament_diameter = 3; # mm
|
||||||
our $filament_packing_density = 1;
|
our $filament_packing_density = 1;
|
||||||
|
our $temperature = 200;
|
||||||
|
|
||||||
# speed options
|
# speed options
|
||||||
our $print_feed_rate = 60; # mm/sec
|
our $print_feed_rate = 60; # mm/sec
|
||||||
@ -59,7 +60,12 @@ our $bridge_overlap = 3; # mm
|
|||||||
our $fill_type = 'rectilinear';
|
our $fill_type = 'rectilinear';
|
||||||
our $fill_density = 0.4; # 1 = 100%
|
our $fill_density = 0.4; # 1 = 100%
|
||||||
our $fill_angle = 0;
|
our $fill_angle = 0;
|
||||||
our $temperature = 200;
|
our $start_gcode = "G28 ; home all axes";
|
||||||
|
our $end_gcode = <<"END";
|
||||||
|
M104 S0 ; turn off temperature
|
||||||
|
G28 X0 ; home X axis
|
||||||
|
M84 ; disable motors
|
||||||
|
END
|
||||||
|
|
||||||
# retraction options
|
# retraction options
|
||||||
our $retract_length = 1; # mm
|
our $retract_length = 1; # mm
|
||||||
|
@ -86,6 +86,18 @@ our $Options = {
|
|||||||
label => 'Fill angle (°)',
|
label => 'Fill angle (°)',
|
||||||
type => 'i',
|
type => 'i',
|
||||||
},
|
},
|
||||||
|
'start_gcode' => {
|
||||||
|
label => 'Start GCODE',
|
||||||
|
type => 's',
|
||||||
|
serialize => sub { join '\n', split /\R+/, $_[0] },
|
||||||
|
deserialize => sub { join "\n", split /\\n/, $_[0] },
|
||||||
|
},
|
||||||
|
'end_gcode' => {
|
||||||
|
label => 'End GCODE',
|
||||||
|
type => 's',
|
||||||
|
serialize => sub { join '\n', split /\R+/, $_[0] },
|
||||||
|
deserialize => sub { join "\n", split /\\n/, $_[0] },
|
||||||
|
},
|
||||||
|
|
||||||
# retraction options
|
# retraction options
|
||||||
'retract_length' => {
|
'retract_length' => {
|
||||||
@ -179,6 +191,25 @@ sub load {
|
|||||||
close $fh;
|
close $fh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub validate_cli {
|
||||||
|
my $class = shift;
|
||||||
|
my ($opt) = @_;
|
||||||
|
|
||||||
|
for (qw(start end)) {
|
||||||
|
if (defined $opt->{$_."_gcode"}) {
|
||||||
|
if ($opt->{$_."_gcode"} eq "") {
|
||||||
|
set($_."_gcode", "");
|
||||||
|
} else {
|
||||||
|
die "Invalid value for --${_}-gcode: file does not exist"
|
||||||
|
if !-e $opt->{$_."_gcode"};
|
||||||
|
open my $fh, "<", $opt->{$_."_gcode"};
|
||||||
|
set($_."_gcode", do { local $/; <$fh> });
|
||||||
|
close $fh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub validate {
|
sub validate {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
|
|
||||||
|
@ -325,9 +325,8 @@ sub export_gcode {
|
|||||||
or die "Failed to open $file for writing\n";
|
or die "Failed to open $file for writing\n";
|
||||||
|
|
||||||
# write start commands to file
|
# write start commands to file
|
||||||
# TODO: this must be customizable by user
|
|
||||||
print $fh "G28 ; home all axes\n";
|
|
||||||
printf $fh "M104 S%d ; wait for temperature to be reached\n", $Slic3r::temperature;
|
printf $fh "M104 S%d ; wait for temperature to be reached\n", $Slic3r::temperature;
|
||||||
|
print $fh "$Slic3r::start_gcode\n";
|
||||||
print $fh "G90 ; use absolute coordinates\n";
|
print $fh "G90 ; use absolute coordinates\n";
|
||||||
print $fh "G21 ; set units to millimeters\n";
|
print $fh "G21 ; set units to millimeters\n";
|
||||||
if ($Slic3r::use_relative_e_distances) {
|
if ($Slic3r::use_relative_e_distances) {
|
||||||
@ -375,10 +374,7 @@ sub export_gcode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# write end commands to file
|
# write end commands to file
|
||||||
# TODO: this must be customizable by user
|
print $fh "$Slic3r::end_gcode\n";
|
||||||
print $fh "M104 S0 ; turn off temperature\n";
|
|
||||||
print $fh "G28 X0 ; home X axis\n";
|
|
||||||
print $fh "M84 ; disable motors\n";
|
|
||||||
|
|
||||||
# close our gcode file
|
# close our gcode file
|
||||||
close $fh;
|
close $fh;
|
||||||
|
10
slic3r.pl
10
slic3r.pl
@ -49,6 +49,8 @@ GetOptions(
|
|||||||
'fill-type=s' => \$Slic3r::fill_type,
|
'fill-type=s' => \$Slic3r::fill_type,
|
||||||
'fill-density=f' => \$Slic3r::fill_density,
|
'fill-density=f' => \$Slic3r::fill_density,
|
||||||
'fill-angle=i' => \$Slic3r::fill_angle,
|
'fill-angle=i' => \$Slic3r::fill_angle,
|
||||||
|
'start-gcode=s' => \$opt{start_gcode},
|
||||||
|
'end-gcode=s' => \$opt{end_gcode},
|
||||||
|
|
||||||
# retraction options
|
# retraction options
|
||||||
'retract-length=f' => \$Slic3r::retract_length,
|
'retract-length=f' => \$Slic3r::retract_length,
|
||||||
@ -74,6 +76,9 @@ if ($opt{load}) {
|
|||||||
Slic3r::Config->load($opt{load});
|
Slic3r::Config->load($opt{load});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# validate command line options
|
||||||
|
Slic3r::Config->validate_cli(\%opt);
|
||||||
|
|
||||||
# validate configuration
|
# validate configuration
|
||||||
Slic3r::Config->validate;
|
Slic3r::Config->validate;
|
||||||
|
|
||||||
@ -153,6 +158,11 @@ Usage: slic3r.pl [ OPTIONS ] file.stl
|
|||||||
(range: 1+, default: $Slic3r::solid_layers)
|
(range: 1+, default: $Slic3r::solid_layers)
|
||||||
--fill-density Infill density (range: 0-1, default: $Slic3r::fill_density)
|
--fill-density Infill density (range: 0-1, default: $Slic3r::fill_density)
|
||||||
--fill-angle Infill angle in degrees (range: 0-90, default: $Slic3r::fill_angle)
|
--fill-angle Infill angle in degrees (range: 0-90, default: $Slic3r::fill_angle)
|
||||||
|
--start-gcode Load initial gcode from the supplied file. This will overwrite
|
||||||
|
the default command (home all axes [G28]).
|
||||||
|
--end-gcode Load final gcode from the supplied file. This will overwrite
|
||||||
|
the default commands (turn off temperature [M104 S0],
|
||||||
|
home X axis [G28 X], disable motors [M84]).
|
||||||
|
|
||||||
Retraction options:
|
Retraction options:
|
||||||
--retract-length Length of retraction in mm when pausing extrusion
|
--retract-length Length of retraction in mm when pausing extrusion
|
||||||
|
Loading…
Reference in New Issue
Block a user