Welcome! Log In Create A New Profile

Advanced

Slic3r post processing script

Posted by MagoKimbra 
Slic3r post processing script
August 07, 2014 03:05PM
Qualcuno sa come diamine si fa a far funzionare gli script in perl con Slic3r?
Ho installato perl, e funziona, da command line se lancio perl -v mi dice che è tutto ok.
In output option nella casella Post-processing scripts metto il percorso dello script, ma quando lancio lo slicer mi si apre la finestra cmd dove non c'è nulla e rimane cosi all'infinito. Ho provato con vari script anche quelli semplici, ma nulla.
Qualche piccolissimo indizio???


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: Slic3r post processing script
August 07, 2014 03:35PM
Cerca nel mio blog....


Ivan Bortolin
Stampa 3D e prototipazione rapida Friuli, Italia
MendelMax, Ramps 1.4, Marlin V1
Re: Slic3r post processing script
August 07, 2014 05:01PM
Ciao Ivan, lo avevo già visto il tuo blog, infatti ho fatto esattamente come tu hai scritto...
Se eseguo lo script:
#!C:/perl/bin/perl -i
use strict;
use warnings;

$^I = '.bak';

print "Hello World\n";

Faccio lo slicer mi si apre la finestra cmd con scritto hello word poi si richiude e finisce lo slicer, ma se metto uno script tipo:
#!C:/perl/bin/perl -i

use strict;
use warnings;

$^I = '.bak';

my $z = 0;

# read stdin and any/all files passed as parameters one line at a time
while (<> ) {
	# if we find a Z word, save it
	$z = $1 if /Z\s*(\d+(\.\d+)?)/;

	# if we don't have Z, but we do have X and Y
	if (!/Z/ && /X/ && /Y/ && $z > 0) {
		# chop off the end of the line (incl. comments), saving chopped section in $1
		s/\s*([\r\n\;\(].*)/" Z$z $1"/es;
		# print start of line, insert our Z value then re-add the chopped end of line
		# print "$_ Z$z $1";
	}
	#else {
		# nothing interesting, print line as-is
	print or die $!;
	#}
}

la finestra cmd si apre con il cursore che lampeggia e poi rimane tutto così senza nessuna fine....
Questo script è nella cartella di slic3r non l'ho fatto io e cosi anche gli altri nessuno da segni di vita...

Edited 1 time(s). Last edit at 08/07/2014 05:03PM by MagoKimbra.


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: Slic3r post processing script
August 07, 2014 05:16PM
Presumo che ci sia qualche errore nello script... non sono un esperto di perl...


Ivan Bortolin
Stampa 3D e prototipazione rapida Friuli, Italia
MendelMax, Ramps 1.4, Marlin V1
Re: Slic3r post processing script
August 07, 2014 05:22PM
Sono script che sono già presenti in Slic3r, non li ho fatti io....


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: Slic3r post processing script
August 07, 2014 05:33PM
Si ho letto. Può anche essere un banale carattere differente che il sistema non riconosce.... l'errore è nello script, non in slic3r.


Ivan Bortolin
Stampa 3D e prototipazione rapida Friuli, Italia
MendelMax, Ramps 1.4, Marlin V1
Re: Slic3r post processing script
August 08, 2014 03:19AM
Ho provato con questo script:
use strict;
use warnings;

print "Prova di scrittura file";

open OUTPUT, ">d:/output.txt";
print OUTPUT "Questa è una prova\n";
close OUTPUT;

E viene eseguito perfettamente, quando lancio lo slicer crea il file output.txt con la scritta dentro. Quindi perl e slic3r sono apposto...
Il problema è quando deve leggere il file g-code creato processarlo e riscriverlo, è come se non trovasse il file da processare!!!


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: Slic3r post processing script
August 08, 2014 03:31AM
Ciao, manca una riga:

use strict;
use warnings;
use utf8;


Ivan Bortolin
Stampa 3D e prototipazione rapida Friuli, Italia
MendelMax, Ramps 1.4, Marlin V1
Re: Slic3r post processing script
August 09, 2014 02:04PM
Nulla, se scrivo script che fanno qualsiasi cosa che non sia il parsing del gcode, funzionano, ma quelli che devono leggere il gcode e poi modificarlo non vanno, come se non gli venisse passato correttamente il file o le singole righe. Ma non conoscendo Perl, non riesco a uscirne fuori.
Porca...


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: Slic3r post processing script [RISOLTO]
August 13, 2014 07:40AM
Ci sono riuscito con un piccolo stratagemma, il problema era che non veniva passato bene il file composition.gcode allo script perl, quindi l'ho scritto in modo che lo apra direttamente lui.
#!/usr/bin/perl -i

use strict;
use warnings;
use English '-no_match_vars';
use File::Temp qw/ tempfile /;
use File::Copy qw/ move /;

my $file_in = 'D:\Stampanti 3D\Setup\RepetierHost\composition.gcode';
my ($file_out_h, $file_out_name) = tempfile() or die( "Non è possibile aprire il file temporaneo!" );

my $x    = 0;
my $y    = 0;
my $xmin = 999999;
my $xmax = 0;
my $ymin = 999999;
my $ymax = 0;

open FILE1, $file_in;
while ( < FILE1 > ) {
	#Cerca il comando G1 Xxx Yyy nel gcode e memorizza i valori xx e yy
	if (/^G1 X ( [ 0-9.]+) Y([0-9.]+)/) {
		$x = $1;
		$y = $2;
		if ($x < $xmin) {$xmin = $x;}
		if ($x > $xmax) {$xmax = $x;}
		if ($y < $ymin) {$ymin = $y;}
		if ($y > $ymax) {$ymax = $y;}
	}
}
close FILE1;

open FILE1, $file_in;
while ( < FILE1 > ) {
	if (/^G29/) {
		print $file_out_h "G29 L$xmin F$ymin R$xmax B$ymax ;autobed level at L(XMIN) F(YMIN) R(XMAX) B(YMAX)\n";
	}else{
		print $file_out_h $_;
	}
}
close FILE1;

close $file_out_h;
move( $file_out_name, $file_in );

Quindi apro il file composition.gcode dove di default repetier lo salva, faccio il parsing, modifico quello che voglio modificare scrivendo un file temporaneo, e alla fine copio il file temporaneo sul file iniziale per avere il nuovo composition.gcode modificato. Cosi funziona alla grande...
In un altro topic spiegherò lo script...
RISOLTO


Edited 3 time(s). Last edit at 08/13/2014 08:11AM by MagoKimbra.


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: Slic3r post processing script [RISOLTO]
August 13, 2014 04:11PM
All'inizio avevo fatto pure io così, ma poi dovrebbe funzionare senza aprire/chiudere il file.


Ivan Bortolin
Stampa 3D e prototipazione rapida Friuli, Italia
MendelMax, Ramps 1.4, Marlin V1
Sorry, only registered users may post in this forum.

Click here to login