chiark / gitweb /
quacks-ingredients: SandingFrame - test version
[reprap-play.git] / quacks-ingredients-make-copy-gcodes
1 #!/bin/sh
2 #
3 # usage:
4 #    ./quacks-ingredients-make-copy-gcodes Tests_L
5 # Uses
6 #    quacks-ingredients-L$l,Tests_L.auto.stl
7 # to make
8 #    quacks-ingredients-L$l,Tests_L.auto.gcode
9 # and then edits them and copies them to the SD card as
10 #    PREPARED/Q$l.G
11
12 set -e
13
14 f=$1
15 shift
16
17 lhs=quacks-ingredients-L
18
19 gh () {
20         g=$lhs$l.auto.gcode
21         h=/media/sd/PREPARED/Q$l.G
22 }
23
24 for l in 1 2 3 4 5; do
25         gh
26         cura -i quacks.ini -s $lhs$l,$f.auto.stl -o $g
27         case $l in
28         1|2|3|4)
29                 perl -i~ -pe 's/^/;/ if m/^M140 S0\b.*\n/' $g
30                 ;;
31         esac
32
33         perl -i~ -ne '
34                 $l =~ s/^/;/ if m/^M400/;
35                 $l .= "G91\nG1 Z5\nG90\n" if m/^M84/;
36                 print $l or die $!;
37                 $l = $_;
38                 END { print $l or die $!; }
39         ' $g
40 done
41
42 for l in 2 4 5; do
43         gh
44         perl -i~ -0777 -ne '
45                 @l = split m{^(?=;LAYER:\d+\n)}m, $_;
46                 foreach my $i (0..$#l) {
47                         $l[$i] =~
48                                 s{
49                                 (       ^G1 \ Z\S+ \s*\n        
50                                   |     ^\;LAYER:\d+ \s*\n
51                                     (?: ^M10[67].* \s*\n )?
52                                 )
53                                         ^G0 \ F(\d+) \ ( X\S+ \ Y\S+ )
54                                                          \ Z(\S+) \s*\n
55                                 }{
56                                         die "$& $2" unless $2 > 9000;
57                                         $1 .
58                                         "G1 Z$4\n".
59                                         "G0 F$2 $3\n".
60                                         "G1 Z$4\n"
61                                 }mxe    or $i==0
62                                         or die "$l[$i] $i";
63                         $l[$i] =~
64                                 s{
65                                         ^G1 \ Z([0-9.]+) \s*\n
66                                 (       ^G0 \ F(\d+) \ X\S+ \ Y\S+ \s*\n
67                                         (?: ; .* \s*\n )?
68                                         ^G1 \ Z([0-9.]+) \s*\n  )
69                                 }{
70                                         die "$& $3" unless $1 >= $4;
71                                         die "$& $3" unless $3 > 9000;
72                                         my $z = $i == $#l ? $1 : $4 + 0.5;
73                                         "G0 F$3\n".
74                                         "G1 Z$z\n" .
75                                         $2
76                                 }gmxe or $i==0 or die "$l[$i] $i";
77                 }
78                 print or die $! foreach @l;
79         ' $g
80 done
81
82 exec 3>${lhs}234.auto.gcode
83 for l in 2 3; do
84         gh
85         perl -pe 's/^/;/ if m/^M104 S0\b/ || (m/^M84/..0)' $g >&3
86 done
87 for l in 4; do
88         gh
89         cat $g >&3
90 done
91
92 umount /media/sd >/dev/null 2>&1 ||:
93 mount /media/sd
94
95 for l in 1 2 3 4 5 234; do
96         gh
97         cp $g $h
98 done
99 sleep 0.5
100
101 umount /media/sd
102 mount /media/sd
103
104 for l in 1 2 3 4 5 234; do
105         gh
106         cmp $g $h
107         ls -l $h
108 done
109 sleep 0.5
110
111 umount /media/sd