#!/bin/awk -f
# ---------------------------------------------------------------------------- #
## \file gcode2grbl.awk
## \author Sebastien Beaugrand
## \sa http://beaugrand.chez.com/
## \copyright CeCILL 2.1 Free Software license
# ---------------------------------------------------------------------------- #
BEGIN { FS = " |\\[|]|*" }
{
if ($1 == "G64" || $1 == "M7" || $1 == "M9") {
printf "(%s)\n",gensub(")", "", "g")
next;
}
if (substr($0, 0, 1) == "#") {
tr[$1] = $3;
printf "(%s)\n",gensub(")", "", "g")
next;
}
printf "%s ",$1;
for (i = 2; i <= NF; i++) {
switch ($i) {
case "Z#1000":
printf "Z%s",tr["#1000"];
break;
case "F#1001":
printf "F%s",tr["#1001"];
break;
case "Z#1002":
printf "Z%s",tr["#1002"];
break;
default:
if ($i in tr) {
printf "%.3f",tr[$i] * $(i + 1);
i++
continue;
}
printf "%s",$i;
}
if (i < NF && $i != "X" && $i != "Y") {
printf " ";
}
}
printf "\n";
}