diff options
Diffstat (limited to 'gerber')
-rwxr-xr-x | gerber/excellon.py | 7 | ||||
-rw-r--r-- | gerber/excellon_statements.py | 21 |
2 files changed, 25 insertions, 3 deletions
diff --git a/gerber/excellon.py b/gerber/excellon.py index ee38367..17b870a 100755 --- a/gerber/excellon.py +++ b/gerber/excellon.py @@ -204,8 +204,7 @@ class ExcellonParser(object): self.statements.append(DrillModeStmt())
self.state = 'DRILL'
- elif (('INCH' in line or 'METRIC' in line) and
- ('LZ' in line or 'TZ' in line)):
+ elif 'INCH' in line or 'METRIC' in line:
stmt = UnitStmt.from_excellon(line)
self.units = stmt.units
self.zero_suppression = stmt.zero_suppression
@@ -244,6 +243,10 @@ class ExcellonParser(object): self.active_tool = self.tools[stmt.tool]
self.statements.append(stmt)
+ elif line[0] == 'R' and self.state != 'HEADER':
+ stmt = RepeatHoleStmt.from_excellon(line, self._settings())
+ self.statements.append(stmt)
+
elif line[0] in ['X', 'Y']:
stmt = CoordinateStmt.from_excellon(line, self._settings())
x = stmt.x
diff --git a/gerber/excellon_statements.py b/gerber/excellon_statements.py index c4f4015..02bb923 100644 --- a/gerber/excellon_statements.py +++ b/gerber/excellon_statements.py @@ -29,7 +29,7 @@ __all__ = ['ExcellonTool', 'ToolSelectionStmt', 'CoordinateStmt', 'RewindStopStmt', 'EndOfProgramStmt', 'UnitStmt', 'IncrementalModeStmt', 'VersionStmt', 'FormatStmt', 'LinkToolStmt', 'MeasuringModeStmt', 'RouteModeStmt', 'DrillModeStmt', 'AbsoluteModeStmt', - 'UnknownStmt', + 'RepeatHoleStmt', 'UnknownStmt', ] @@ -280,6 +280,22 @@ class CoordinateStmt(ExcellonStatement): return '<Coordinate Statement: %s>' % coord_str +class RepeatHoleStmt(ExcellonStatement): + + @classmethod + def from_excellon(cls, line, settings): + return cls(line) + + def __init__(self, line): + self.line = line + + def to_excellon(self, settings): + return self.line + + def __str__(self): + return '<Repeat Hole: %s>' % self.line + + class CommentStmt(ExcellonStatement): @classmethod @@ -478,6 +494,9 @@ class UnknownStmt(ExcellonStatement): def to_excellon(self, settings=None): return self.stmt + def __str__(self): + return "<UnknownStmt: %s >" % self.stmt + def pairwise(iterator): """ Iterate over list taking two elements at a time. |