mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 16:57:53 -06:00
New experimental autospeed feature. #2810
This commit is contained in:
parent
6e280ab8cb
commit
7f70da97b4
12 changed files with 165 additions and 9 deletions
|
@ -6,17 +6,28 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use constant PI => 3.141592653589793238;
|
||||
my @filament_diameter = split /,/, $ENV{SLIC3R_FILAMENT_DIAMETER};
|
||||
|
||||
my $E = 0;
|
||||
my ($X, $Y);
|
||||
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 $flowrate = sprintf '%.2f', $e_length / $dist;
|
||||
s/(\R+)/ ; XY dist = $dist ; E dist = $e_length ; E\/XY = $flowrate mm\/mm$1/;
|
||||
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;
|
||||
|
@ -33,6 +44,9 @@ while (<>) {
|
|||
if (/^G92 E0/) {
|
||||
$E = 0;
|
||||
}
|
||||
if (/^T(\d+)/) {
|
||||
$T = $1;
|
||||
}
|
||||
print;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue