Created
July 1, 2024 11:46
-
-
Save daguiam/503e9550d0af552900eda3a798f9bcf1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pya | |
import sys | |
import os | |
from matplotlib import pyplot as plt | |
import numpy as np | |
from scipy.constants import micro, nano, milli | |
from scipy import ndimage | |
def create_poly_dicing_corner(length, width): | |
poly = pya.DPolygon([ | |
pya.DPoint(0, 0), pya.DPoint(0, length), pya.DPoint(width, length), | |
pya.DPoint(width, width), pya.DPoint(length, width), pya.DPoint(length, width), | |
pya.DPoint(length, 0) | |
]) | |
return poly | |
def create_corners_cell(layout, field_width, field_height, corner_length, corner_width, layer="layer127"): | |
cell_corner_single = layout.create_cell('corner_instance') | |
cell_corner = layout.create_cell('corners') | |
layer_corners = layout.layer(layer) | |
corner_polygon = create_poly_dicing_corner(corner_length, corner_width) | |
cell_corner_single.shapes(layer_corners).insert(corner_polygon) | |
instance = pya.DCellInstArray(cell_corner_single.cell_index(), | |
pya.DTrans(pya.DTrans.R0, pya.DPoint(-field_width/2, -field_height/2)) | |
) | |
cell_corner.insert(instance) | |
instance = pya.DCellInstArray(cell_corner_single.cell_index(), | |
pya.DTrans(pya.DTrans.R270, pya.DPoint(-field_width/2, field_height/2)) | |
) | |
cell_corner.insert(instance) | |
instance = pya.DCellInstArray(cell_corner_single.cell_index(), | |
pya.DTrans(pya.DTrans.R180, pya.DPoint(field_width/2, field_height/2)) | |
) | |
cell_corner.insert(instance) | |
instance = pya.DCellInstArray(cell_corner_single.cell_index(), | |
pya.DTrans(pya.DTrans.R90, pya.DPoint(field_width/2, -field_height/2)) | |
) | |
cell_corner.insert(instance) | |
cell_corner.flatten(-1, True) | |
return cell_corner | |
def create_label_cell(layout, text, position=(0,0), rotate=True, mag=1000, layer="layer127"): | |
cell_label = layout.create_cell('label') | |
layer_label = layout.layer(layer) | |
gen = pya.TextGenerator.default_generator() | |
region = gen.text(text, layout.dbu, mag) | |
if rotate: | |
cell_label.shapes(layer_label).insert(region, pya.DTrans(pya.DTrans.R90,pya.DVector(position[0], position[1]))) | |
else: | |
cell_label.shapes(layer_label).insert(region, pya.DTrans(pya.DVector(position[0], position[1]))) | |
return cell_label | |
filename = "Dammann_5x5mm 11x13 with 0.7deg pitch_centered.dxf" | |
# loads filename | |
layout = pya.Layout() | |
layout.read(filename) | |
# get top cell | |
top = layout.top_cell() | |
corner_length = 500#*micro | |
corner_width = 100#*micro | |
field_width = 10000 #*micro | |
field_height = 10000 #*micro | |
trans = pya.Trans(pya.Point(0,0)) | |
layer = "mask" | |
cell = create_corners_cell(layout, field_width, field_height, corner_length, corner_width, layer) | |
top.insert(pya.DCellInstArray(cell.cell_index(), trans)) | |
label = os.path.splitext(filename)[0] | |
label = "P1_13x11_50um_633nm" | |
cell = create_label_cell(layout, label, position=(-4000, -4000), rotate=False, mag=400, layer=layer) | |
top.insert(pya.DCellInstArray(cell.cell_index(), trans)) | |
# top.flatten(-1, True) | |
outfilename = "text2.dxf" | |
layout.write(outfilename) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment