2019-07-04 22:09:56 +02:00
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
|
|
|
|
import math
|
|
|
|
import progress.bar
|
|
|
|
import glob
|
|
|
|
|
|
|
|
# allow import from parent directory
|
|
|
|
sys.path.append(os.path.dirname(sys.path[0]))
|
|
|
|
|
2020-04-21 14:09:43 +02:00
|
|
|
import pygds as gds
|
2019-07-04 22:09:56 +02:00
|
|
|
|
|
|
|
global bar
|
|
|
|
|
|
|
|
def callback(parser):
|
|
|
|
global bar
|
|
|
|
|
|
|
|
bar.max = parser.total
|
|
|
|
bar.index = parser.current
|
|
|
|
bar.update()
|
|
|
|
|
|
|
|
for arg in glob.glob("{}/tests/*.gds".format(sys.path[0])):
|
|
|
|
f = open(arg, "rb")
|
|
|
|
try:
|
|
|
|
bar = progress.bar.IncrementalBar("parsing file")
|
|
|
|
lib = gds.parse_file(f, progress_func=callback)
|
|
|
|
print()
|
|
|
|
|
|
|
|
print("file version: {}".format(lib.version))
|
|
|
|
print("last access: {}".format(lib.last_access.isoformat()))
|
|
|
|
print("last modification: {}".format(lib.last_mod.isoformat()))
|
|
|
|
print("m/unit : {}".format(lib.meters_per_unit))
|
|
|
|
print("unit/dbunit : {}".format(lib.units_per_dbunit))
|
|
|
|
|
|
|
|
print("library name : {}".format(lib.name))
|
|
|
|
print("contains a total of {} structure(s)".format(len(lib.structures)))
|
|
|
|
|
|
|
|
for name in lib.structures.keys():
|
|
|
|
#print(name, end = " ")
|
|
|
|
print("- {}".format(name))
|
|
|
|
for elem in lib.structures[name].elements:
|
|
|
|
if isinstance(elem, gds.Boundary):
|
|
|
|
for coord in elem.points:
|
|
|
|
coord = (coord[0] * lib.units_per_dbunit , coord[1] * lib.units_per_dbunit)
|
|
|
|
|
|
|
|
print("linking structure references")
|
|
|
|
lib.link_all_refs(callback)
|
|
|
|
|
2020-04-21 14:09:43 +02:00
|
|
|
#except gds.ParserError as e:
|
|
|
|
# print("parser error: {}".format(e))
|
|
|
|
# exit(1)
|
2019-07-04 22:09:56 +02:00
|
|
|
except KeyboardInterrupt:
|
|
|
|
continue
|
|
|
|
finally:
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
print("all done")
|