decimate script- removes tiny lines from prints that can cause blobbing
This commit is contained in:
parent
ab103b0c12
commit
31585e96b0
1 changed files with 53 additions and 0 deletions
53
utils/post-processing/decimate.pl
Executable file
53
utils/post-processing/decimate.pl
Executable file
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/perl -i~
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my %lastpos = (X => 10000, Y => 10000, Z => 10000, E => 10000, F => 10000);
|
||||
my %pos = (X => 0, Y => 0, Z => 0, E => 0, F => 0);
|
||||
|
||||
my $mindist = 0.33;
|
||||
|
||||
my $mindistz = 0.005;
|
||||
|
||||
my $mindistsq = $mindist * $mindist;
|
||||
|
||||
sub dist {
|
||||
my $sq = 0;
|
||||
for (qw/X Y Z E/) {
|
||||
$sq += ($pos{$_} - $lastpos{$_}) ** 2;
|
||||
}
|
||||
return $sq;
|
||||
}
|
||||
|
||||
while (<>) {
|
||||
if (m#\bG[01]\b#) {
|
||||
while (m#([XYZEF])(\d+(\.\d+)?)#gi) {
|
||||
$pos{uc $1} = $2;
|
||||
}
|
||||
if (
|
||||
(
|
||||
/X/ &&
|
||||
/Y/ &&
|
||||
(dist() >= $mindistsq)
|
||||
) ||
|
||||
(abs($pos{Z} - $lastpos{Z}) > $mindistz) ||
|
||||
(!/X/ || !/Y/)
|
||||
) {
|
||||
print;
|
||||
%lastpos = %pos;
|
||||
}
|
||||
elsif (($pos{F} - $lastpos{F}) != 0) {
|
||||
printf "G1 F%s\n", $pos{F};
|
||||
$lastpos{F} = $pos{F};
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (m#\bG92\b#) {
|
||||
while (m#([XYZEF])(\d+(\.\d+)?)#gi) {
|
||||
$lastpos{uc $1} = $2;
|
||||
}
|
||||
}
|
||||
print;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue