mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 12:41:18 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/perl -i
 | 
						|
 | 
						|
#
 | 
						|
# Post-processing script for calculating flow rate for each move
 | 
						|
 | 
						|
use strict;
 | 
						|
use warnings;
 | 
						|
 | 
						|
use constant PI => 3.141592653589793238;
 | 
						|
my @filament_diameter = split /,/, $ENV{SLIC3R_FILAMENT_DIAMETER};
 | 
						|
 | 
						|
my $E = 0;
 | 
						|
my $T = 0;
 | 
						|
my ($X, $Y, $F);
 | 
						|
while (<>) {
 | 
						|
    if (/^G1.*? F([0-9.]+)/) {
 | 
						|
        $F = $1;
 | 
						|
    }
 | 
						|
    if (/^G1 X([0-9.]+) Y([0-9.]+).*? E([0-9.]+)/) {
 | 
						|
        my ($x, $y, $e) = ($1, $2, $3);
 | 
						|
        my $e_length = $e - $E;
 | 
						|
        if ($e_length > 0 && defined $X && defined $Y) {
 | 
						|
            my $dist = sqrt( (($x-$X)**2) + (($y-$Y)**2) );
 | 
						|
            if ($dist > 0) {
 | 
						|
                my $mm_per_mm   = $e_length / $dist;  # dE/dXY
 | 
						|
                my $mm3_per_mm  = ($filament_diameter[$T] ** 2) * PI/4 * $mm_per_mm;
 | 
						|
                my $vol_speed   = $F/60 * $mm3_per_mm;
 | 
						|
                my $comment = sprintf ' ; dXY = %.3fmm ; dE = %.5fmm ; dE/XY = %.5fmm/mm; volspeed = %.5fmm^3/sec',
 | 
						|
                    $dist, $e_length, $mm_per_mm, $vol_speed;
 | 
						|
                s/(\R+)/$comment$1/;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $E = $e;
 | 
						|
        $X = $x;
 | 
						|
        $Y = $y;
 | 
						|
    }
 | 
						|
    if (/^G1 X([0-9.]+) Y([0-9.]+)/) {
 | 
						|
        $X = $1;
 | 
						|
        $Y = $2;
 | 
						|
    }
 | 
						|
    if (/^G1.*? E([0-9.]+)/) {
 | 
						|
        $E = $1;
 | 
						|
    }
 | 
						|
    if (/^G92 E0/) {
 | 
						|
        $E = 0;
 | 
						|
    }
 | 
						|
    if (/^T(\d+)/) {
 | 
						|
        $T = $1;
 | 
						|
    }
 | 
						|
    print;
 | 
						|
}
 | 
						|
 | 
						|
__END__
 |