From d70dc71cfe3771ae1ca8c0e11b7e41b466b3c26e Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Sun, 7 May 2017 14:27:56 -0300 Subject: [PATCH] fab/drl2gerber: support metric drill files --- fab/drl2gerber | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/fab/drl2gerber b/fab/drl2gerber index b39aedb..3945c12 100755 --- a/fab/drl2gerber +++ b/fab/drl2gerber @@ -12,32 +12,51 @@ # -print "G04 MACHINE-GENERATED FROM DRILL FILE*\n" || die; -print "G01*\n" || die; # linear Interpolation -print "G70*\n" || die; # inch units -print "G90*\n" || die; # absolute Mode -print "%MOIN*%*\n" || die; # inches, RS274X-style -print "%FSLAX34Y34*%\n" || die; # format +sub begin +{ + return if $began; + $began = 1; + + print "G04 MACHINE-GENERATED FROM DRILL FILE*\n" || die; + print "G01*\n" || die; # linear Interpolation + print "G70*\n" || die; # inch units + print "G90*\n" || die; # absolute Mode + if ($mm) { + print "%MOMM*%*\n" || die; # millimeters, RS274X-style + } else { + print "%MOIN*%*\n" || die; # inches, RS274X-style + } + print "%FSLAX34Y34*%\n" || die; # format +} while (<>) { chop; + if (/^METRIC/) { + $mm = 1; + next; + } if (/^T(\d+)C/) { + &begin; print "%ADD", $1 + 10, "C,$'*%\n" || die; next; } if (/^T(\d+)$/) { + &begin; print "G54D", $1 + 10, "*\n" || die; next; } if (/^X([-0-9.]+)Y([-0-9.]+)$/) { + &begin; printf("X%dY%dD03*\n", $1 * 10000, $2 * 10000) || die; next; } if (/^X([-0-9.]+)Y([-0-9.]+)G85X([-0-9.]+)Y([-0-9.]+)$/) { + &begin; printf("X%dY%dD02*\nX%dY%dD01*\n", $1 * 10000, $2 * 10000, $3 * 10000, $4 * 10000) || die; next; } } +&begin; print "M02*\n" || die;