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!

This Page