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;