diff options
Diffstat (limited to 'src/ee/kicad/read_schematic.py')
-rw-r--r-- | src/ee/kicad/read_schematic.py | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/ee/kicad/read_schematic.py b/src/ee/kicad/read_schematic.py index ed5ce21..914a86e 100644 --- a/src/ee/kicad/read_schematic.py +++ b/src/ee/kicad/read_schematic.py @@ -93,8 +93,9 @@ def read_schematic(path): schematic.add_component(Component(position, timestamp, library, name, unit, ref, fields)) - def load(f): + def load(path, f): header = f.readline() + line_number = 1 if "EESchema Schematic File Version" not in header: raise EeException("Not a KiCAD schematic file.") @@ -104,6 +105,7 @@ def read_schematic(path): seen_end = False while not seen_end: line = f.readline() + line_number = line_number + 1 if not line: break @@ -135,27 +137,24 @@ def read_schematic(path): section_name = parts[0] # print("SECTION: {}".format(section_name)) section = [] - elif line == "Entry Wire Line": - f.readline() # ignore the next line for now - elif line.startswith("Text Label "): - f.readline() # ignore the next line for now - elif line.startswith("Text Notes "): + elif parts[0:3] == ["Entry", "Wire", "Line"] or \ + parts[0:2] == ["Text", "Label"] or \ + parts[0:2] == ["Text", "Notes"] or \ + parts[0:2] == ["Text", "HLabel"] or \ + parts[0:3] == ["Wire", "Notes", "Line"] or \ + parts[0:3] == ["Wire", "Wire", "Line"] or \ + parts[0:3] == ["Wire", "Bus", "Line"]: f.readline() # ignore the next line for now + line_number = line_number + 1 elif line.startswith("NoConn "): pass - elif parts[0:3] == ["Wire", "Notes", "Line"]: - f.readline() # ignore the next line for now - elif parts[0:3] == ["Wire", "Wire", "Line"]: - f.readline() # ignore the next line for now - elif parts[0:3] == ["Wire", "Bus", "Line"]: - f.readline() # ignore the next line for now elif parts[0:2] == ["Connection", "~"]: pass else: # print("line={}, len={}, wat={}".format(line, len(line), parts[0:3])) - raise EeException("Bad line: {}".format(line)) + raise EeException("{}:{}: Bad line: {}".format(path, line_number, line)) return schematic with open(path) as file: - return load(file) + return load(path, file) |