def part(m): m = pscad.wrapper(defaults.items() + m.items()) pad = pscad.rounded_square((D("0.8"), D("2.82")), m.round_off, center=True) pad_row = (pscad.left(D("3.5")) + pad + pscad.right(D("2.5")) + pad + pscad.right(2) + pad + pscad.right(D("2.5")) + pad) gnd_pin = pscad.donut(D("1.15"), D("1.40")) side = ( pscad.pin("5", m.clearance, m.mask, square=True) + ( pscad.up(D("14.15") / 2 - D("10.3")) + pscad.left(D("13.14") / 2) + gnd_pin ), pscad.silk(m.silk) + ( pscad.up(D("14.15") / 2) + pscad.line(D("13.90") / 2) + pscad.right(D("13.90") / 2) + pscad.line((0, D("10.30") - D("1.55"))) ) ) all = ( pscad.mirror([1, 0]) + pscad.pad(itertools.count(1), m.clearance, m.mask) + ( pscad.up(D("14.15") / 2 - D("10.3") - D("3.71")) + pad_row ), side + pscad.mirror([1, 0]) + side, ) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, 1), ) return all, silk
def brackets(sz, n, center=False): bracket = pscad.translate([sz[0] / 2, sz[1] / 2]) + ( pscad.line([-n / 2, 0]), pscad.line([0, -sz[1]]), pscad.up(sz[1]) + pscad.line([-n / 2, 0]) ) bracket = bracket, pscad.mirror([1, 0]) + bracket if not center: bracket = pscad.translate([sz[0] / 2, sz[1] / 2]) + bracket return bracket,
def part(m): m = pscad.wrapper(defaults.items() + m.items()) pin_names = (i for i in m.pins.split(',')) all = pscad.pad(pin_names, m.clearance, m.mask) + ( pscad.row(pscad.rounded_square((m.pad_w, m.pad_l), m.round_off, center=True), m.pitch, 2, center=True) ) if 'body_y' in m: body_lines = pscad.rotate(90) + pscad.row(pscad.rotate(90) + pscad.line(m.pitch, center=True), m.body_y, 2, center=True) else: body_lines = pscad.empty() courtyard = pscad.expand_to_grid(pscad.bound((all, body_lines)), m.placement, m.grid) courtyard_sz = (courtyard[1][0] - courtyard[0][0], courtyard[1][1] - courtyard[0][1]) if m.polarized: mark = ( pscad.right(courtyard[0][0]) + pscad.rotate(90) + pscad.circle(courtyard_sz[1] / D(6), sweep=180) ) else: mark = pscad.empty() silk = pscad.silk(m.silk) + ( pscad.translate(courtyard[0]) + patterns.brackets(courtyard_sz, m.pad_w), mark, body_lines ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) if 'skip' in m: skip = lambda name: re.match(m.skip, name) else: skip = None bga_pad = pscad.paste_fraction( pscad.circle(m.pad_size / 2), m.paste_fraction) row = pscad.row(bga_pad, m.pitch, m.n_x, center=True) all = (pscad.pad( bga_names(m.n_x, m.no_letter), m.clearance, m.mask, skip=skip) + pscad.rotate(270) + pscad.row( pscad.rotate(90) + row, m.pitch, m.n_y, center=True), pscad.silk(m.silk) + pscad.square( (m.body_x, m.body_y), center=True)) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, 1), pscad.translate([-m.body_x / 2, -m.pitch * (m.n_y - 1) / 2]) + pscad.left(m.silk * 2) + pscad.line([0, m.pitch * 2], center=True)) if m.invert: return pscad.mirror([1, 0]) + pscad.rotate(270) + (all, silk) return all, silk
def corners(sz, n, center=False): corner = pscad.translate([sz[0] / 2, sz[1] / 2]) + ( pscad.line([-n / 2, 0]), pscad.line([0, -n / 2]) ) corners = ( corner, pscad.mirror([0, 1]) + corner, pscad.mirror([1, 0]) + ( corner, pscad.mirror([0, 1]) + corner ) ) if not center: corners = pscad.translate([sz[0] / 2, sz[1] / 2]) + corners return corners,
def part(m): m = pscad.wrapper(defaults.items() + m.items()) thermal_size = (m.thermal_x, m.thermal_y) row = mlp_row(m, m.n / (4 if m.quad else 2)) if m.quad: pads = ( row, pscad.rotate(90) + row, pscad.rotate(180) + row, pscad.rotate(270) + row ) else: pads = row, pscad.rotate(180) + row all = pscad.pad(itertools.count(1), m.clearance, m.mask) + ( pads, patterns.thermal_pad(patterns.indent_pad(thermal_size, m.indent), thermal_size, m.paste_fraction, m.paste_max) ), pscad.silk(m.silk) + patterns.corners((m.body_x, m.body_y), m.pad_l, center=True) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, m.pad_w * D(2)), pscad.translate([-m.body_x / D(2), m.body_y / D(2)]) + pscad.down(m.silk * D(2)) + pscad.line(m.pad_l * D("0.7")) ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) pad1 = pscad.rounded_square([D("0.7"), D("1.5")], m.round_off, center=True) pad1_row = pscad.pad(itertools.count(1), m.clearance, m.mask) + ( pscad.row(pad1, D("1.5"), 6, center=True) ) pad2 = pscad.rounded_square([D("0.8"), 1], m.round_off, center=True) pad2_row = pscad.pad("7", m.clearance, m.mask) + ( pscad.rotate(90) + pscad.row(pad2, D("2.1"), 2, center=True) ) bore = pscad.hole(m.clearance, 0) + pscad.circle(D("0.9") / 2) bore_row = pscad.row(bore, 5, 2, center = True) pads = ( bore_row, pscad.up(1 + D("1.5") / 2) + pad1_row, pscad.left(D("11.8") / 2) + pad2_row, pscad.right(D("11.8") / 2) + pad2_row ) all = ( pads, pscad.silk(m.silk) + pscad.square((D("11.3"), D("2.6")), center=True) ) tick = pscad.line((0, D("0.5")), center=True) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, 1), pscad.down(D("1.3")) + pscad.row(tick, D("1.5"), 5, center=True) ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) if 'pads_x' in m: pads_x = m.pads_x elif m.quad: pads_x = m.n / 4 else: pads_x = 0 pads_y = m.n / 2 - pads_x if 'width' in m: width = m.width else: width = m.height thermal_size = (m.thermal_x, m.thermal_y) row_y = mlp_row(m, pads_y, m.height) if m.quad: row_x = mlp_row(m, pads_x, width) pads = ( row_y, pscad.rotate(90) + row_x, pscad.rotate(180) + row_y, pscad.rotate(270) + row_x ) else: pads = row_y, pscad.rotate(180) + row_y pin_list = range(m.start_pin, m.n - m.start_pin + 3) + range(1, m.start_pin) + [int(m.n) + 1] all = pscad.pad(itertools.cycle(pin_list), m.clearance, m.mask) + ( pads, patterns.thermal_pad(patterns.indent_pad(thermal_size, m.indent), thermal_size, m.paste_fraction, m.paste_max) ), pscad.silk(m.silk) + patterns.corners((m.body_x, m.body_y), m.pad_l, center=True) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, m.pad_w * 2), pscad.translate([-m.body_x / 2, m.body_y / 2]) + pscad.down(m.silk * 2) + pscad.line(m.pad_l * D("0.7")) ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) pad_row = pscad.rotate(180) + pscad.row(pscad.rounded_square( (D("0.5"), D("2.0")), m.round_off, center=True), D("0.8"), 5, center=True) gnd_row = pscad.row(pscad.donut(I("0.034"), I("0.045")), D("5.3"), 2) side = ( pscad.pin("G", m.clearance, m.mask, square=True) + ( pscad.left(D("3.6")) + pscad.up(2) + pscad.rotate(-90) + gnd_row, ), pscad.hole(m.clearance, 0) + ( pscad.left(D("1.7")) + pscad.down(D("1.3")) + pscad.circle(I("0.018")) ), pscad.silk(m.silk) + ( pscad.left(D("3.6")) + pscad.up(D("4.6")) + pscad.polygon([(0, 0), (0, D("1.3")), (0, D("3.9")), (0, D("6.6"))], [(0, 1), (2, 3)]) ) ) all = ( pscad.pad(itertools.count(1), m.clearance, m.mask) + ( pscad.down(D("3.5")) + pad_row ), side + pscad.mirror([1, 0]) + side, pscad.silk(m.silk) + ( pscad.up(D("4.6")) + pscad.line(D("7.2"), center=True), ) ) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, 1), ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) try: pin_count = m.n pin_names = itertools.count(1) except: pin_count = len(m.pins.split(',')) pin_names = (i for i in m.pins.split(',')) try: body_y = m.body_y except: body_y = m.width - m.pad_l - m.silk * D(3) pad_row = pscad.row(pscad.rounded_square( (m.pad_w, m.pad_l), m.round_off, center=True), m.pitch, pin_count / 2, center=True) if body_y > m.width - m.pad_l - m.silk * D(2): edge = m.body_x / D(2) - m.pitch * pin_count / 4 body = patterns.brackets([m.body_x, body_y], edge, center=True) else: body = pscad.square([m.body_x, body_y], center=True) all = pscad.pad(pin_names, m.clearance, m.mask) + ( pscad.down(m.width / D(2)) + pad_row, pscad.up(m.width / D(2)) + pscad.rotate(180) + pad_row ), pscad.silk(m.silk) + body silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, m.pad_w * D(2)), pscad.down(m.width / D(2)) + pscad.left(m.silk + m.pitch * pin_count / 4) + pscad.line([0, m.pad_l * D("0.7")], center=True) ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) pitch = D("1.27") width = D("6.61") pad_size0 = [D("0.61"), D("1.27")] pad_size1 = [D("0.61"), D("1.02")] pad_size2 = [D("1.65"), D("3.81")] body = [D("5.0"), D("6.25")] thermal_pad = pscad.paste_fraction(pscad.rounded_square(pad_size2, m.round_off, center=True), D("0.5")) all = ( pscad.pad(itertools.count(1), m.clearance, m.mask) + pscad.down((width - pad_size0[1]) / D(2)) + pscad.row(pscad.rounded_square(pad_size0, m.round_off, center=True), pitch, 4, center=True), pscad.pad((i for i in [6, 6, 5, 5]), m.clearance, m.mask) + pscad.up((width - pad_size1[1]) / D(2)) + pscad.row(pscad.rounded_square(pad_size1, m.round_off, center=True), pitch, 4, center=True), pscad.pad((i for i in [6, 5]), m.clearance, m.mask) + pscad.down(width / D(2)) + pscad.up(pad_size0[1] + D("0.82") + pad_size2[1] / D(2)) + pscad.row(thermal_pad, D("0.61") + pad_size2[0], 2, center=True), pscad.silk(m.silk) + patterns.brackets(body, D("0.2"), center=True) ) silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, D("0.5")), pscad.down(width / D(2) + m.silk) + pscad.left(pitch * D("1.5")) + pscad.line(pad_size0[0], center=True) ) return all, silk
def part(m): m = pscad.wrapper(defaults.items() + m.items()) try: pin_count = m.n pin_names = itertools.count(1) except: pin_count = len(m.pins.split(',')) pin_names = (i for i in m.pins.split(',')) if 'pads_x' in m: pads_x = m.pads_x elif m.quad: pads_x = pin_count / 4 else: pads_x = 0 pads_y = pin_count / 2 - pads_x try: body_y = m.body_y except: body_y = m.width - m.pad_l - m.silk * 3 if 'height' in m: height = m.height else: height = m.width pad = pscad.rounded_square((m.pad_w, m.pad_l), m.round_off, center=True) row_y = pscad.down(m.width / 2) + pscad.row( pscad.paste_fraction(pad, (1,m.pad_paste_fraction)), m.pitch, pads_y, center=True) if m.quad: row_x = pscad.down(height / 2) + pscad.row( pscad.paste_fraction(pad, (1,m.pad_paste_fraction)), m.pitch, pads_x, center=True) pads = pscad.pad(pin_names, m.clearance, m.mask) + ( row_y, pscad.rotate(90) + row_x, pscad.rotate(180) + row_y, pscad.rotate(270) + row_x ) else: pads = pscad.pad(pin_names, m.clearance, m.mask) + ( row_y, pscad.rotate(180) + row_y ) try: if m.quad: raise Exception() if body_y > m.width - m.pad_l - m.silk * 2: edge = m.body_x / 2 - m.pitch * D(pin_count) / 4 body = patterns.brackets([m.body_x, body_y], edge, center=True) else: body = pscad.square([m.body_x, body_y], center=True) all = pads, pscad.silk(m.silk) + body except: all = pads try: corners = m.corners except: corners = m.pad_w * 2 silk = pscad.silk(m.silk) + ( patterns.placement_courtyard(all, m.placement, m.grid, corners), pscad.down(m.width / 2) + pscad.left(m.silk + m.pitch * pads_y / 2) + pscad.line([0, m.pad_l * D("0.7")], center=True) ) return all, silk