import gdstk cell = gdstk.Cell('Top') wafer_circum = 300 wafer_diam = wafer_circum/2 triangle_width = 180 rect_array_size = 0.030 n_rows_cols = int(wafer_diam//0.030) wafer = gdstk.ellipse((0, 0), wafer_diam, tolerance=0.01,layer=1, datatype=0) top_triangle =gdstk.Polygon([(0,0),( (triangle_width/2) ,wafer_diam ),( (triangle_width/-2), wafer_diam )], layer=1, datatype=0) bot_triangle =gdstk.Polygon([(0,0),( (triangle_width/2),(-1*wafer_diam) ),( (triangle_width/-2),(-1*wafer_diam) )], layer=1, datatype=0) or_triangle = gdstk.boolean(top_triangle,bot_triangle,"or",layer=2, datatype=0) rect_array_odd = gdstk.rectangle(( (-1*wafer_diam), (-1*wafer_diam)), ((-1*wafer_diam+rect_array_size), (-1*wafer_diam+rect_array_size)), layer=3, datatype=0) rect_array_even = gdstk.rectangle(( (-1*wafer_diam+rect_array_size), (-1*wafer_diam+rect_array_size)), ((-1*wafer_diam+(rect_array_size*2)), (-1*wafer_diam+(rect_array_size*2))), layer=3, datatype=0) rect_array_odd.repetition = gdstk.Repetition(columns=n_rows_cols,rows=n_rows_cols,spacing=((rect_array_size*2),(rect_array_size*2))) rect_array_even.repetition = gdstk.Repetition(columns=n_rows_cols,rows=n_rows_cols,spacing=((rect_array_size*2),(rect_array_size*2))) # https://heitzmann.github.io/gdstk/how-tos.html rect_array_odd.repetition = gdstk.Repetition(columns=n_rows_cols,rows=n_rows_cols,spacing=((rect_array_size*2),(rect_array_size*2))) rect_array_even.repetition = gdstk.Repetition(columns=n_rows_cols,rows=n_rows_cols,spacing=((rect_array_size*2),(rect_array_size*2))) rect_array_odd = rect_array_odd.apply_repetition() rect_array_even = rect_array_even.apply_repetition() #rect_array_odd.append(rect_array_odd) #rect_array_even.append(rect_array_even) checker = gdstk.boolean(rect_array_odd,rect_array_even,"or",layer=3, datatype=0) #yh_image_1 = gdstk.boolean(or_triangle,wafer,"and",layer=0, datatype=1) #yh_image_1 = gdstk.boolean(yh_image_1,wafer,"and",layer=0, datatype=1) cell.add(wafer) #cell.add(rect_array_odd,rect_array_even) #cell.add(rect_array_odd_even) cell.add(*checker) #https://heitzmann.github.io/gdstk/library/gdstk.Cell.html # see Remove polygons, paths, labels and references from this cell. #cell.add(*or_triangle) #cell.add(*yh_image) lib = gdstk.Library(unit=0.001) lib.add(cell) lib.write_oas('/home/dpower/layout/yh_wafer_maps/hour_glass_checker.oas')