#!/bin/bash
# ---------------------------------------------------------------------------- #
## \file grblsimplify.sh
## \author Sebastien Beaugrand
## \sa http://beaugrand.chez.com/
## \copyright CeCILL 2.1 Free Software license
# ---------------------------------------------------------------------------- #
if [ -z "$1" ]; then
    echo "Usage: `basename $0` <filename.ngc>"
    exit 1
fi

awk '
BEGIN { FS = " X| Y"; x = -1; y = -1 }
{
    switch ($1) {
    case " G01":
    case "G01":
        x = $2;
        y = $3;
        print $0;
        break;
    case "G00":
        dx = $2 - x;
        dy = $3 - y;
        if (dx < 0) {
            dx = -dx;
        }
        if (dy < 0) {
            dy = -dy;
        }
        if (dx > 0.002 || dy > 0.002) {
            print $0;
        }
        x = -1;
        y = -1;
        break;
    default:
        print $0;
    }
}' $1 | awk '
BEGIN { prec = "" }
{
    if (substr(prec, 0, 5) == "G00 Z" && substr($0, 0, 5) == "G00 Z") {
        prec = "";
    } else {
        if (prec != "") {
            print prec;
        }
        prec = $0;
    }
}
END { if (prec != "") print prec }'