def IDT_group2gds(IDT_group):
IDT_group_dir = IDT_group['IDT_group_dir']
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
gds_filename = tkFileDialog.asksaveasfilename(title='Wafer gds filename',defaultextension = 'gds',initialdir = IDT_group_dir);
layout = gds.core.Layout('LIBRARY')
cell = gds.core.Cell('Main')
for polygon in IDT_group['final_IDT']:
points_exterior = 1e6*array(polygon.exterior.coords) #best practice: dimensions in um
points_interior_has_to_be_created = True
for interior_ring in polygon.interiors:
if points_interior_has_to_be_created:
points_interior = 1e6*array(interior_ring.coords)
points_interior_has_to_be_created = False
else:
points_interior = vstack((points_interior,1e6*array(interior_ring.coords)))
if not polygon.interiors:
boundaries = gds.core.Boundary(points_exterior)
else:
boundaries = gds.core.Boundary(vstack((points_interior,points_exterior)))
cell.add(boundaries)
for IDT_data in IDT_group['IDT']:
reticule = IDT_data['reticule']
for polygon in reticule:
points = 1e6*array(polygon.exterior.coords)
boundaries = gds.core.Boundary(points)
cell.add(boundaries)
layout.add(cell)
layout.save(gds_filename)
评论列表
文章目录