IDT_group_toolbox.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:Tweezer_design 作者: AntoineRiaud 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号