chiark / gitweb /
quacks-ingredients: gcode manipulation
[reprap-play.git] / quacks-ingredients-make-copy-gcodes
index c2c08492963f75dd708553b5791a7c0cf3a6b385..512d5fe83798cbb8e2bbfe57f95dda06d71a8607 100755 (executable)
@@ -14,9 +14,6 @@ set -e
 f=$1
 shift
 
-umount /media/sd >/dev/null 2>&1 ||:
-mount /media/sd
-
 lhs=quacks-ingredients-L
 
 gh () {
@@ -26,32 +23,67 @@ gh () {
 
 for l in 1 2 3 4 5; do
        gh
-       cura -s $lhs$l,$f.auto.stl -o $g
+       cura -i quacks.ini -s $lhs$l,$f.auto.stl -o $g
        case $l in
        1|2|3|4)
                perl -i~ -pe 's/^/;/ if m/^M140 S0\b.*\n/' $g
                ;;
-       5)      ;;
-       *)      echo >&2 "??? $l"; exit 1 ;;
        esac
 
        perl -i~ -ne '
                $l =~ s/^/;/ if m/^M400/;
+               $l .= "G91\nG1 Z5\nG90\n" if m/^M84/;
                print $l or die $!;
                $l = $_;
                END { print $l or die $!; }
        ' $g
+done
+
+for l in 2 4 5; do
+       gh
+       perl -i~ -0777 -pe '
+               s{
+                       ^G1 \ Z([0-9.]+) \n
+               (       ^G0 \ F(\d+) \ X\S+ \ Y\S+ \n
+                       (?: ; .* )?
+                       ^G1 \ Z([0-9.]+) \n     )
+               }{
+                       die unless $1 > $4;
+                       die unless $3 > 9000;
+                       "G0 F$2\n".
+                       "G1 Z".($3 + 0.5)."\n" .
+                       $2
+               }mxe
+       ' $g
+done
+
+exec 3>${lhs}234.auto.gcode
+for l in 2 3; do
+       gh
+       perl -pe 's/^/;/ if m/^M104 S0\b/ || (m/^M84/..0)' $g >&3
+done
+for l in 4; do
+       gh
+       cat $g >&3
+done
 
+umount /media/sd >/dev/null 2>&1 ||:
+mount /media/sd
+
+for l in 1 2 3 4 5 234; do
+       gh
        cp $g $h
 done
+sleep 0.5
 
 umount /media/sd
 mount /media/sd
 
-for l in 1 2 3 4 5; do
+for l in 1 2 3 4 5 234; do
        gh
        cmp $g $h
        ls -l $h
 done
+sleep 0.5
 
 umount /media/sd