2,
                  style='romand',
                  line_width=0.044,
                  layer=l_smBeam)
    ]

    xmax_cell = Cell('MerryChristmas')
    for i, xmas_text in enumerate(xmas_texts):
        xmas_text.translate(
            tuple(
                np.array(-xmas_text.bounding_box.mean(0)) +
                np.array([20, -80 - i * 10.])))  # Center justify label
        xmax_cell.add(xmas_text)

    TopCell = Cell('GrowthTheoryTopCell')
    TopCell.add(wheel1, origin=(-170., -50.), rotation=-90.)
    TopCell.add(wheel2, origin=(-175., -50.), rotation=-90.)
    TopCell.add(wheel3, origin=(0, -80))
    TopCell.add(PitchDep, origin=(-200., -250.))
    TopCell.add(LenWidDep, origin=(-200., -50.))
    TopCell.add(xmax_cell, origin=(-110., 60.))
    return TopCell


if __name__ == "__main__":
    TopCell = make_theory_cell()
    # Add the copied cell to a Layout and save
    layout = Layout('LIBRARY')
    layout.add(TopCell)
    layout.save('GrowthTheoryCell_B.gds')
wafer = MBEWafer('MembranesWafer',
                 wafer_r=wafer_r,
                 cells=[topCell],
                 cell_gap=CELL_GAP,
                 mkWidth=tDicingMarks,
                 cellsAtEdges=False)
file_string = str(waferVer)
filename = file_string.replace(' ', '_')

# Add pattern for ellipsometry check of SiO2 etching
size = 2000
rect = Rectangle((size / 2., size / 2.), (-size / 2., -size / 2.), layer=10)
rectCell = Cell('EtchCheckSquare')
rectCell.add(rect)
rect_layout = Layout('LIBRARY')
rect_layout.add(rectCell)
rect_layout.save(filename + '_etchCheck.gds')
rect_layout.add(rectCell)
# wafer.add(rectCell, origin=(0, -2000))

layout.add(wafer)
layout.save(filename + '.gds')

# Output down chip for doing aligned jobs
layout_down = Layout('LIBRARY')
layout_down.add(wafer.block_down)
layout_down.save(filename + '_downblock.gds')

# Output up chip for doing aligned jobs
layout_up = Layout('LIBRARY')
layout_up.add(wafer.block_up)
smField4.make_many_shapes(25, areas, pitch, shapes, skew, l_smBeam)

centerAlignField = Frame("CenterAlignField", (smFrameSize, smFrameSize), [])

# Add everything together to a top cell
topCell = Cell("TopCell")
# topCell.add(lgField)
smFrameSpacing = 400  # Spacing between the three small frames
dx = smFrameSpacing + smFrameSize
dy = smFrameSpacing + smFrameSize
topCell.add(smField1, origin=(-dx / 2., dy / 2.))
topCell.add(smField2, origin=(dx / 2., dy / 2.))
topCell.add(smField3, origin=(-dx / 2., -dy / 2.))
topCell.add(smField4, origin=(dx / 2., -dy / 2.))
# topCell.add(centerAlignField, origin=(0., 0.))

# %%Create the layout and output GDS file
layout = Layout('LIBRARY', precision=1e-10)

wafer = MBEWafer('MembranesWafer',
                 wafer_r=wafer_r,
                 cells=[topCell],
                 cell_gap=CELL_GAP,
                 mkWidth=tDicingMarks,
                 cellsAtEdges=False)
layout.add(wafer)

file_string = str(waferVer)
filename = file_string.replace(' ', '_') + '.gds'
layout.save(filename)