~ubuntu-branches/ubuntu/utopic/slic3r/utopic

« back to all changes in this revision

Viewing changes to utils/post-processing/decimate.pl

  • Committer: Package Import Robot
  • Author(s): Chow Loong Jin
  • Date: 2014-06-17 01:27:26 UTC
  • Revision ID: package-import@ubuntu.com-20140617012726-2wrs4zdo251nr4vg
Tags: upstream-1.1.4+dfsg
ImportĀ upstreamĀ versionĀ 1.1.4+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl -i~
 
2
 
 
3
use strict;
 
4
use warnings;
 
5
 
 
6
my %lastpos = (X => 10000, Y => 10000, Z => 10000, E => 10000, F => 10000);
 
7
my %pos = (X => 0, Y => 0, Z => 0, E => 0, F => 0);
 
8
 
 
9
my $mindist = 0.33;
 
10
 
 
11
my $mindistz = 0.005;
 
12
 
 
13
my $mindistsq = $mindist * $mindist;
 
14
 
 
15
sub dist {
 
16
        my $sq = 0;
 
17
        for (qw/X Y Z E/) {
 
18
                $sq += ($pos{$_} - $lastpos{$_}) ** 2;
 
19
        }
 
20
        return $sq;
 
21
}
 
22
 
 
23
while (<>) {
 
24
        if (m#\bG[01]\b#) {
 
25
                while (m#([XYZEF])(\d+(\.\d+)?)#gi) {
 
26
                        $pos{uc $1} = $2;
 
27
                }
 
28
                if (
 
29
                                (
 
30
                                        /X/ &&
 
31
                                        /Y/ &&
 
32
                                        (dist() >= $mindistsq)
 
33
                                ) ||
 
34
                                (abs($pos{Z} - $lastpos{Z}) > $mindistz) ||
 
35
                                (!/X/ || !/Y/)
 
36
                        ) {
 
37
                        print;
 
38
                        %lastpos = %pos;
 
39
                }
 
40
                elsif (($pos{F} - $lastpos{F}) != 0) {
 
41
                        printf "G1 F%s\n", $pos{F};
 
42
                        $lastpos{F} = $pos{F};
 
43
                }
 
44
        }
 
45
        else {
 
46
                if (m#\bG92\b#) {
 
47
                        while (m#([XYZEF])(\d+(\.\d+)?)#gi) {
 
48
                                $lastpos{uc $1} = $2;
 
49
                        }
 
50
                }
 
51
                print;
 
52
        }
 
53
}