def __createPasteAvoidViasInside(self): top_left_area = self.top_left_via + self.via_grid / 2 self.inner_grid = self.via_grid / Vector2D(self.paste_between_vias) if any(self.paste_rings_outside): self.inner_size = self.via_grid / Vector2D( self.paste_between_vias) * self.paste_reduction else: # inner_grid = mask_size/(inner_count) self.inner_size = self.paste_area_size / ( self.inner_count) * self.paste_reduction corner = ChamferSelPadGrid(0) corner.setCorners() pad = ChamferedPadGrid(number="", type=Pad.TYPE_SMT, center=[0, 0], size=self.inner_size, layers=['F.Paste'], chamfer_size=0, chamfer_selection=corner, pincount=self.paste_between_vias, grid=self.inner_grid, radius_ratio=self.radius_ratio, maximum_radius=self.maximum_radius) pad.chamferAvoidCircle(center=self.via_grid / 2, diameter=self.via_drill, clearance=self.via_clarance) count = [self.vias_in_mask[0] - 1, self.vias_in_mask[1] - 1] return ExposedPad.__createPasteGrids(original=pad, grid=self.via_grid, count=count, center=self.at)
def __createPasteIgnoreVia(self): nx = self.paste_layout[0] ny = self.paste_layout[1] sx = self.paste_area_size.x sy = self.paste_area_size.y paste_size = Vector2D([sx*self.paste_reduction/nx, sy*self.paste_reduction/ny])\ .round_to(self.size_round_base) dx = (sx - paste_size[0] * nx) / (nx) dy = (sy - paste_size[1] * ny) / (ny) paste_grid = Vector2D([paste_size[0] + dx, paste_size[1] + dy ]).round_to(self.grid_round_base) return [ ChamferedPadGrid(number="", type=Pad.TYPE_SMT, center=self.at, size=paste_size, layers=['F.Paste'], chamfer_size=0, chamfer_selection=0, pincount=self.paste_layout, grid=paste_grid, radius_ratio=self.radius_ratio, maximum_radius=self.maximum_radius) ]
def __createPasteOutsideY(self): pads = [] corner = ChamferSelPadGrid({ ChamferSelPadGrid.BOTTOM_LEFT: 1, ChamferSelPadGrid.BOTTOM_RIGHT: 1 }) x = self.at[0] - (self.via_layout[0] - 2) / 2 * self.via_grid[0] y = self.top_left_via[1] - self.ring_size[1] / 2 pad_side = ChamferedPadGrid( number="", type=Pad.TYPE_SMT, center=[x, y], size=[self.inner_size[0], self.outer_size[1]], layers=['F.Paste'], chamfer_size=0, chamfer_selection=corner, pincount=[self.paste_between_vias[0], self.paste_rings_outside[1]], grid=[self.inner_grid[0], self.outer_paste_grid[1]], radius_ratio=self.radius_ratio, maximum_radius=self.maximum_radius) if not self.kicad4_compatible: pad_side.chamferAvoidCircle(center=self.top_left_via, diameter=self.via_drill, clearance=self.via_clarance) pads.extend( ExposedPad.__createPasteGrids(original=pad_side, grid=self.via_grid, count=[self.via_layout[0] - 1, 1], center=[self.at['x'], y])) corner = ChamferSelPadGrid({ ChamferSelPadGrid.TOP_LEFT: 1, ChamferSelPadGrid.TOP_RIGHT: 1 }) pad_side.chamfer_selection = corner y = 2 * self.at[1] - y pads.extend( ExposedPad.__createPasteGrids(original=pad_side, grid=self.via_grid, count=[self.via_layout[0] - 1, 1], center=[self.at['x'], y])) return pads
def __createPasteOutsideCorners(self): pads = [] left = self.top_left_via[0] - self.ring_size[0] / 2 top = self.top_left_via[1] - self.ring_size[1] / 2 corner = [[{ ChamferSelPadGrid.BOTTOM_RIGHT: 1 }, { ChamferSelPadGrid.TOP_RIGHT: 1 }], [{ ChamferSelPadGrid.BOTTOM_LEFT: 1 }, { ChamferSelPadGrid.TOP_LEFT: 1 }]] pad_side = ChamferedPadGrid(number="", type=Pad.TYPE_SMT, center=[left, top], size=self.outer_size, layers=['F.Paste'], chamfer_size=0, chamfer_selection=0, pincount=self.paste_rings_outside, grid=self.outer_paste_grid, radius_ratio=self.radius_ratio, maximum_radius=self.maximum_radius) if not self.kicad4_compatible: pad_side.chamferAvoidCircle(center=self.top_left_via, diameter=self.via_drill, clearance=self.via_clarance) for idx_x in range(2): for idx_y in range(2): x = left if idx_x == 0 else 2 * self.at[0] - left y = top if idx_y == 0 else 2 * self.at[1] - top pad_side.center = Vector2D(x, y) pad_side.chamfer_selection = ChamferSelPadGrid( corner[idx_x][idx_y]) pads.append(copy(pad_side)) return pads