def _createPin1MarkerLine(self): # # Add pin 1 marker line # x1 = self.at.x - 0.5 y1 = self.at.y - 0.5 # new_node = Line(start=Point2D(round(x1, 2), round(y1 + self.p1m, 2)), end=Point2D(round(x1, 2), round(y1, 2)), layer='F.SilkS', width=self.FSilkSWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(round(x1, 2), round(y1, 2)), end=Point2D(round(x1 + self.p1m, 2), round(y1, 2)), layer='F.SilkS', width=self.FSilkSWidth) new_node._parent = self self.virtual_childs.append(new_node)
def _createPin1MarkerLine(self): # # Add pin 1 marker line # x1 = self.at.x - 0.5 y1 = self.at.y - 0.5 # new_node = Line(start=Point2D(x1, y1 + self.p1m), end=Point2D(x1, y1), layer='F.SilkS', width=self.FSilkSWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x1, y1), end=Point2D(x1 + self.p1m, y1), layer='F.SilkS', width=self.FSilkSWidth) new_node._parent = self self.virtual_childs.append(new_node)
def _createChildNodes(self, polygone_line): nodes = [] for line_start, line_end in zip(polygone_line, polygone_line[1:]): new_node = Line(start=line_start, end=line_end, layer=self.layer, width=self.width) new_node._parent = self nodes.append(new_node) return nodes
def _createChildNodes(self, polygone_line, **kwargs): nodes = [] for line_start, line_end in zip(polygone_line, polygone_line[1:]): new_node = Line(start=line_start, end=line_end, **kwargs) new_node._parent = self nodes.append(new_node) return nodes
def _createFFabLine(self): ffabline = [] self.boxffabline = [] # # x = self.at.x y = self.at.y w = self.size.x h = self.size.y self.boxffabline.append( koaLine(x, y, x + w, y, 'F.Fab', self.FFabWidth)) self.boxffabline.append( koaLine(x + w, y, x + w, y + h, 'F.Fab', self.FFabWidth)) self.boxffabline.append( koaLine(x + w, y + h, x, y + h, 'F.Fab', self.FFabWidth)) self.boxffabline.append( koaLine(x, y + h, x, y, 'F.Fab', self.FFabWidth)) # # Add a chamfer # dd = 0.5 if w < 2.0: dd = w / 3.0 if h < 2.0: dd = h / 3.0 # x1 = x + dd y1 = y + dd w1 = w - dd ffabline.append(koaLine(x1, y, x1 + w1, y, 'F.Fab', self.FFabWidth)) ffabline.append( koaLine(x1 + w1, y, x1 + w1, y + h, 'F.Fab', self.FFabWidth)) ffabline.append( koaLine(x + w, y + h, x, y + h, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x, y + h, x, y1, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x, y1, x1, y, 'F.Fab', self.FFabWidth)) # # for n in ffabline: new_node = Line(start=Point2D(n.sx, n.sy), end=Point2D(n.ex, n.ey), layer=n.layer, width=n.width) if n.width < 0.0: new_node = Line(start=Point2D(n.sx, n.sy), end=Point2D(n.ex, n.ey), layer=n.layer) new_node._parent = self self.virtual_childs.append(new_node)
def _createFFabLine(self): ffabline = [] self.boxffabline = [] # # x = self.at.x y = self.at.y w = self.size.x h = self.size.y self.boxffabline.append(koaLine(x, y, x + w, y, 'F.Fab', self.FFabWidth)) self.boxffabline.append(koaLine(x + w, y, x + w, y + h, 'F.Fab', self.FFabWidth)) self.boxffabline.append(koaLine(x + w, y + h, x, y + h, 'F.Fab', self.FFabWidth)) self.boxffabline.append(koaLine(x, y + h, x, y, 'F.Fab', self.FFabWidth)) # # Add a chamfer # dd = 0.5 if w < 2.0: dd = w / 3.0 if h < 2.0: dd = h / 3.0 # # x0 = x + dd y0 = y x9 = x0 y9 = y0 # x1 = x + w y1 = y x2 = x1 y2 = y1 # x3 = x + w y3 = y + h x4 = x3 y4 = y3 # x5 = x y5 = y + h x6 = x5 y6 = y5 # x7 = x y7 = y + dd x8 = x7 y8 = y7 # # for nn in self.corners: if nn[0] == 'ULP': x0 = x + nn[1] x9 = x0 y8 = y + nn[2] y9 = y8 y7 = y8 new_node = Line(start=Point2D(x9, y9), end=Point2D(x0, y0), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'ULR': x0 = x + nn[1] y7 = y + nn[1] x8 = x7 x9 = x7 y8 = y7 y9 = y7 new_node = Arc(center=Point2D(x0, y7), start=Point2D(x7, y7), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'URP': x1 = (x + w) - nn[1] y2 = y + nn[2] new_node = Line(start=Point2D(x1, y1), end=Point2D(x1, y2), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x1, y2), end=Point2D(x2, y2), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'URR': x1 = (x + w) - nn[1] y2 = y + nn[1] new_node = Arc(center=Point2D(x1, y2), start=Point2D(x1, y1), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LRP': x4 = (x + w) - nn[1] y3 = (y + h) - nn[1] new_node = Line(start=Point2D(x3, y3), end=Point2D(x4, y3), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x4, y3), end=Point2D(x4, y4), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LRR': x4 = (x + w) - nn[1] y3 = (y + h) - nn[1] new_node = Arc(center=Point2D(x4, y3), start=Point2D(x3, y3), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LLR': x5 = x + nn[1] y6 = (y + h) - nn[1] new_node = Arc(center=Point2D(x5, y6), start=Point2D(x5, y5), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LLP': x5 = x + nn[1] y6 = (y + h) - nn[2] new_node = Line(start=Point2D(x5, y5), end=Point2D(x5, y6), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x5, y6), end=Point2D(x6, y6), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) ffabline.append(koaLine(x0, y0, x1, y1, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x2, y2, x3, y3, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x4, y4, x5, y5, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x6, y6, x7, y7, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x8, y8, x9, y9, 'F.Fab', self.FFabWidth)) # # for n in ffabline: new_node = Line(start=Point2D(n.sx, n.sy), end=Point2D(n.ex, n.ey), layer=n.layer, width=n.width) if n.width < 0.0: new_node = Line(start=Point2D(n.sx, n.sy), end=Point2D(n.ex, n.ey), layer=n.layer) new_node._parent = self self.virtual_childs.append(new_node)
def _createFCrtYdLine(self): self.fcrtydline = [] # # # # Check all holes and pads, if a pad or hole is on the silk line # then jump over the pad/hole # for n in self.boxffabline: x1 = min(n.sx, n.ex) y1 = min(n.sy, n.ey) x2 = max(n.sx, n.ex) y2 = max(n.sy, n.ey) # # if (x1 < 0.0 and y1 < 0.0 and y2 < 0.0) or (x1 < 0.0 and y1 > 0.0 and y2 > 0.0): # # Top and bottom line # x1_t = x1 - 0.25 x2_t = x2 + 0.25 # if y1 < 0.0: # Top line y1_t = y1 - 0.25 y2_t = y2 - 0.25 else: # Bottom line y1_t = y1 + 0.25 y2_t = y2 + 0.25 # EndLine = True while EndLine: px1 = 10000000.0 py1 = 10000000.0 px2 = 10000000.0 py2 = 10000000.0 foundPad = False for n in self.pad: n_min_x = n.at.x - (n.size.x / 2.0) n_min_y = n.at.y - (n.size.y / 2.0) n_max_x = n_min_x + n.size.x n_max_y = n_min_y + n.size.y dd = max(0.25, n.solder_mask_margin) if (n_min_y - dd) <= y1_t and ( n_max_y + dd ) > y1_t and n_max_x > x1_t and n_min_x < x2_t: # # This pad is in SilkS line's path # if n_min_x < px1: px1 = n_min_x py1 = n_min_y px2 = n_max_x py2 = n_max_y foundPad = True if foundPad: # # Found at least one pad that is in SilkS's line # if (px1 - dd) > x1_t: # # It does not cover the start point # self.fsilksline.append( koaLine(x1_t, y1_t, px1 - dd, y2_t, 'F.CrtYd', self.FSilkSWidth)) if y1 < 0.0: # Top line self.fsilksline.append( koaLine(px1 - dd, y2_t, px1 - dd, py1 - dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px1 - dd, py1 - dd, px2 + dd, py1 - dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px2 + dd, py1 - dd, px2 + dd, y2_t, 'F.CrtYd', self.FSilkSWidth)) else: # Bottom line self.fsilksline.append( koaLine(px1 - dd, y2_t, px1 - dd, py2 + dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px1 - dd, py2 + dd, px2 + dd, py2 + dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px2 + dd, py2 + dd, px2 + dd, y2_t, 'F.CrtYd', self.FSilkSWidth)) x1_t = px2 + dd else: # # No pads was in the way # self.fsilksline.append( koaLine(x1_t, y1_t, x2_t, y2_t, 'F.CrtYd', self.FSilkSWidth)) EndLine = False if x1_t >= x2: EndLine = False if (x1 < 0.0 and y1 < 0.0 and y2 > 0.0) or (x1 > 0.0 and y1 < 0.0 and y2 > 0.0): # # Left and right line # y1_t = y1 - 0.25 y2_t = y2 + 0.25 # if x1 < 0.0: # Left line x1_t = x1 - 0.25 x2_t = x1 - 0.25 else: # Right line x1_t = x1 + 0.25 x2_t = x2 + 0.25 # EndLine = True while EndLine: px1 = 10000000.0 py1 = 10000000.0 px2 = 10000000.0 py2 = 10000000.0 foundPad = False for n in self.pad: n_min_x = n.at.x - (n.size.x / 2.0) n_min_y = n.at.y - (n.size.y / 2.0) n_max_x = n_min_x + n.size.x n_max_y = n_min_y + n.size.y dd = max(0.25, n.solder_mask_margin) if (n_min_x <= x1_t) and ( n_max_x > x1_t) and n_max_y > y1_t and n_min_y < y2_t: # # This pad is in SilkS line's path # if n_min_y < py1: px1 = n_min_x py1 = n_min_y px2 = n_max_x py2 = n_max_y foundPad = True if foundPad: # # Found at least one pad that is in SilkS's line # if (py1 - dd) > y1_t: # # It does not cover the start point # self.fsilksline.append( koaLine(x1_t, y1_t, x2_t, py1 - dd, 'F.CrtYd', self.FSilkSWidth)) if x1 < 0.0: # Left line self.fsilksline.append( koaLine(x2_t, py1 - dd, px1 - dd, py1 - dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px1 - dd, py1 - dd, px1 - dd, py2 + dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px1 - dd, py2 + dd, x2_t, py2 + dd, 'F.CrtYd', self.FSilkSWidth)) else: # Right line self.fsilksline.append( koaLine(x2_t, py1 - dd, px2 + dd, py1 - dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px2 + dd, py1 - dd, px2 + dd, py2 + dd, 'F.CrtYd', self.FSilkSWidth)) self.fsilksline.append( koaLine(px2 + dd, py2 + dd, x2_t, py2 + dd, 'F.CrtYd', self.FSilkSWidth)) y1_t = py2 + dd else: # # No pads was in the way # self.fsilksline.append( koaLine(x1_t, y1_t, x2_t, y2_t, 'F.CrtYd', self.FSilkSWidth)) EndLine = False if y1_t >= y2: EndLine = False # # for n in self.fsilksline: new_node = Line(start=Point2D(n.sx, n.sy), end=Point2D(n.ex, n.ey), layer=n.layer, width=n.width) if n.width < 0.0: new_node = Line(start=Point2D(n.sx, n.sy), end=Point2D(n.ex, n.ey), layer=n.layer) new_node._parent = self self.virtual_childs.append(new_node)
def _createFFabLine(self): ffabline = [] self.boxffabline = [] # # x = self.at.x y = self.at.y w = self.size.x h = self.size.y self.boxffabline.append(koaLine(x, y, x + w, y, 'F.Fab', self.FFabWidth)) self.boxffabline.append(koaLine(x + w, y, x + w, y + h, 'F.Fab', self.FFabWidth)) self.boxffabline.append(koaLine(x + w, y + h, x, y + h, 'F.Fab', self.FFabWidth)) self.boxffabline.append(koaLine(x, y + h, x, y, 'F.Fab', self.FFabWidth)) # # Add a chamfer # dd = w * 0.25 if dd > 1.0: dd = 1.0 if w < 2.0: dd = w / 3.0 if h < 2.0: dd = h / 3.0 # # x0 = x + dd y0 = y x9 = x0 y9 = y0 # x1 = x + w y1 = y x2 = x1 y2 = y1 # x3 = x + w y3 = y + h x4 = x3 y4 = y3 # x5 = x y5 = y + h x6 = x5 y6 = y5 # x7 = x y7 = y + dd x8 = x7 y8 = y7 # # for nn in self.corners: if nn[0] == 'ULP': x0 = x + nn[1] x9 = x0 y8 = y + nn[2] y9 = y8 y7 = y8 new_node = Line(start=Point2D(x9, y9), end=Point2D(x0, y0), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'ULR': x0 = x + nn[1] y7 = y + nn[1] x8 = x7 x9 = x7 y8 = y7 y9 = y7 new_node = Arc(center=Point2D(x0, y7), start=Point2D(x7, y7), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'URP': x1 = (x + w) - nn[1] y2 = y + nn[2] new_node = Line(start=Point2D(x1, y1), end=Point2D(x1, y2), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x1, y2), end=Point2D(x2, y2), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'URR': x1 = (x + w) - nn[1] y2 = y + nn[1] new_node = Arc(center=Point2D(x1, y2), start=Point2D(x1, y1), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LRP': x4 = (x + w) - nn[1] y3 = (y + h) - nn[1] new_node = Line(start=Point2D(x3, y3), end=Point2D(x4, y3), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x4, y3), end=Point2D(x4, y4), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LRR': x4 = (x + w) - nn[1] y3 = (y + h) - nn[1] new_node = Arc(center=Point2D(x4, y3), start=Point2D(x3, y3), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LLR': x5 = x + nn[1] y6 = (y + h) - nn[1] new_node = Arc(center=Point2D(x5, y6), start=Point2D(x5, y5), layer='F.Fab', width=self.FFabWidth, angle=90.0) new_node._parent = self self.virtual_childs.append(new_node) if nn[0] == 'LLP': x5 = x + nn[1] y6 = (y + h) - nn[2] new_node = Line(start=Point2D(x5, y5), end=Point2D(x5, y6), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) # new_node = Line(start=Point2D(x5, y6), end=Point2D(x6, y6), layer='F.Fab', width=self.FFabWidth) new_node._parent = self self.virtual_childs.append(new_node) ffabline.append(koaLine(x0, y0, x1, y1, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x2, y2, x3, y3, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x4, y4, x5, y5, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x6, y6, x7, y7, 'F.Fab', self.FFabWidth)) ffabline.append(koaLine(x8, y8, x9, y9, 'F.Fab', self.FFabWidth)) # # for n in ffabline: new_node = Line(start=Point2D(round(n.sx, 2), round(n.sy, 2)), end=Point2D(round(n.ex, 2), round(n.ey, 2)), layer=n.layer, width=n.width) if n.width < 0.0: new_node = Line(start=Point2D(round(n.sx, 2), round(n.sy, 2)), end=Point2D(round(n.ex, 2), round(n.ey, 2)), layer=n.layer) new_node._parent = self self.virtual_childs.append(new_node)