mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-29 11:41:20 -06: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__
 | 
