New --start-gcode and --end-gcode options. #12

This commit is contained in:
Alessandro Ranellucci 2011-10-14 16:24:55 +02:00
parent f7335b6d1e
commit 2d784fac9b
5 changed files with 63 additions and 12 deletions

View file

@ -86,6 +86,18 @@ our $Options = {
label => 'Fill angle (°)',
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
'retract_length' => {
@ -179,6 +191,25 @@ sub load {
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 {
my $class = shift;

View file

@ -325,9 +325,8 @@ sub export_gcode {
or die "Failed to open $file for writing\n";
# 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;
print $fh "$Slic3r::start_gcode\n";
print $fh "G90 ; use absolute coordinates\n";
print $fh "G21 ; set units to millimeters\n";
if ($Slic3r::use_relative_e_distances) {
@ -375,10 +374,7 @@ sub export_gcode {
}
# write end commands to file
# TODO: this must be customizable by user
print $fh "M104 S0 ; turn off temperature\n";
print $fh "G28 X0 ; home X axis\n";
print $fh "M84 ; disable motors\n";
print $fh "$Slic3r::end_gcode\n";
# close our gcode file
close $fh;