flatcam/bugs/active.rst

79 lines
1.5 KiB
ReStructuredText

Active Bugs
===================
Drill number parsing
--------------------
The screenshot below show the problematic file:
.. image:: drill_parse_problem1.png
:align: center
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:
.. image:: drill_parse_problem2.png
:align: center
The code involved is:
.. code-block:: python
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:
.. code-block:: python
# 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.