Active Bugs

Drill number parsing

The screenshot below show the problematic file:

_images/drill_parse_problem1.png

The file reads:

G81
M48
METRIC
T1C00.127
T2C00.889
T3C00.900
T4C01.524
T5C01.600
T6C02.032
T7C02.540
%
T002
X03874Y08092
X03874Y23333
X06414Y08092
X06414Y23333
X08954Y08092
...
T007
X02664Y03518
X02664Y41618
X76324Y03518
X76324Y41618
...

After scaling by 10.0:

_images/drill_parse_problem2.png

The code involved is:

def __init__(self):
    ...
    self.zeros = "T"
    ...

def parse_number(self, number_str):

    if self.zeros == "L":
        match = self.leadingzeros_re.search(number_str)
        return float(number_str)/(10**(len(match.group(2))-2+len(match.group(1))))
    else:  # Trailing
        return float(number_str)/10000

The numbers are being divided by 10000. If “L” had been specified, the following regex would have applied:

# Parse coordinates
self.leadingzeros_re = re.compile(r'^(0*)(\d*)')

Then the number 02664 would have been divided by 10**(4-2+1) = 10**3 = 1000, which is what is desired.

Leading zeros weren’t specified, but www.excellon.com says:

The CNC-7 uses leading zeros unless you specify otherwise through a part program or the console.

Note

The parser has been modified to default to leading zeros.

Table Of Contents

Previous topic

Welcome to FlatCAM Bugs’s documentation!

Next topic

Excellon Parser

This Page