| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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.
|