diff options
-rwxr-xr-x | remap-symbols.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/remap-symbols.py b/remap-symbols.py new file mode 100755 index 0000000..eb1bdf6 --- /dev/null +++ b/remap-symbols.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +""" +Remap symbols to suit KiCad nightly +""" + +import os +import re +import sys +import pprint + + +def remap_symbols(fn_in, fn_out, refdes): + in_ = open(fn_in) + out = open(fn_out, 'w') + fn = os.path.basename(fn_in) + print('Remapping symbols in in {}'.format(fn)) + for line in in_.readlines(): + #print('R: {!r}'.format(line)) + if line.startswith('EESchema Schematic File Version 2'): + line = 'EESchema Schematic File Version 4\n' + elif line.startswith('EELAYER 27 0'): + line = 'EELAYER 26 0\n' + elif line.startswith('LIBS:'): + continue + elif line.startswith('L '): + while line.endswith('\n'): + line = line[:-1] + _l, name, des = line.split(' ') + if des.startswith('#'): + # KiCad replaces designators like #PWR?58023E19 with VCC_5V0_6 + des = name + if des in refdes: + refdes[des] += 1 + des = '{}_{}'.format(des, refdes[des]) + else: + refdes[des] = 1 + if name == 'GND': + line = 'L power:GND {}\n'.format(des) + else: + line = 'L Cryptech_Alpha:{} {}\n'.format(name, des) + out.write(line) + return True + + +def main(schemas): + refdes = {} + for this in sorted(schemas): + if remap_symbols(this, this + '.tmp', refdes): + os.rename(this + '.tmp', this) + + return True + + +if __name__ == '__main__': + try: + if len(sys.argv) == 0: + sys.stderr.write('Syntax: remap-symbols.py *.sch\n') + sys.exit(1) + schemas = [x for x in sys.argv if x.endswith('.sch')] + res = main(schemas) + if res: + sys.exit(0) + sys.exit(1) + except KeyboardInterrupt: + pass |