# create pads createNumberedPadsSMD(kicad_mod, pincount, pitch, { 'x': pad_w, 'y': pad_h }, -1.9 / 2) #add mounting pads (no number) mpad_w = 1.3 mpad_h = 3.35 mpad_x = A / 2 + 2.2 + 1.3 / 2 mpad_y = 2.25 + 3.35 / 2 + 0.005 kicad_mod.addPad('""', 'smd', 'rect', { 'x': mpad_x, 'y': mpad_y }, { 'x': mpad_w, 'y': mpad_h }, 0, ['F.Cu', 'F.Paste', 'F.Mask']) kicad_mod.addPad('""', 'smd', 'rect', { 'x': -mpad_x, 'y': mpad_y }, { 'x': mpad_w, 'y': mpad_h }, 0, ['F.Cu', 'F.Paste', 'F.Mask']) x1 = -B / 2 y1 = -0.4 x2 = B / 2 y2 = 5.5
# add the pads for r in range(rows): for p in range(pincount): Y = r * pitch X = p * pitch num = r + 1 + (p * rows) if num == 1: type = "rect" else: type = "circle" kicad_mod.addPad( num, "thru_hole", type, {"x": X, "y": Y}, {"x": size, "y": size}, drill, ["*.Cu", "*.Mask"] ) # add an outline around the pins y1 = -1 x1 = -1 x2 = (rows - 1) * pitch + 1 y2 = (pincount - 1) * pitch + 1 if rows == 1: kicad_mod.addPolygoneLine([{"y": x1, "x": y1 + pitch}, {"y": x2, "x": y1 + pitch}]) elif rows == 2: kicad_mod.addPolygoneLine( [
'x': round_to(start_pos_x - 3.87 - 1.2 - 0.5, 0.05), 'y': 3.2 + 0.5 }, { 'x': round_to(end_pos_x + 3.87 + 1.2 + 0.5, 0.05), 'y': round_to(-pad_spacing - 3.2 - 0.5, 0.05) }, 'F.CrtYd', 0.05) # create pads pad_diameter = 1 pad_size = {'x': 1.7, 'y': 1.7} for pad_number in range(1, pincount, 2): pad_pos_x = (pad_number - 1) / 2 * pad_spacing if pad_number == 1: kicad_mod.addPad(pad_number, 'thru_hole', 'rect', { 'x': pad_pos_x, 'y': 0 }, pad_size, pad_diameter, ['*.Cu', '*.Mask', 'F.SilkS']) else: kicad_mod.addPad(pad_number, 'thru_hole', 'circle', { 'x': pad_pos_x, 'y': 0 }, pad_size, pad_diameter, ['*.Cu', '*.Mask', 'F.SilkS']) kicad_mod.addPad(pad_number + 1, 'thru_hole', 'circle', { 'x': pad_pos_x, 'y': -pad_spacing }, pad_size, pad_diameter, ['*.Cu', '*.Mask', 'F.SilkS']) # output kicad model print(kicad_mod)
#add the pads for r in range(rows): for p in range(pincount): Y = r * pitch X = p * pitch num = r + 1 + (p * rows) if (num == 1): type = "rect" else: type = "circle" kicad_mod.addPad(num, "thru_hole", type, { 'x': X, 'y': Y }, { 'x': size, 'y': size }, drill, ['*.Cu', '*.Mask']) #add an outline around the pins y1 = -1 x1 = -1 x2 = (rows - 1) * pitch + 1 y2 = (pincount - 1) * pitch + 1 if rows == 1: kicad_mod.addPolygoneLine([{ 'y': x1, 'x': y1 + pitch
kicad_mod.setCenterPos({'x':0,'y':0.4}) #component values A = (pincount - 1) * pitch B = A + 2.9 # create pads createNumberedPadsSMD(kicad_mod, pincount, pitch, {'x':pad_w,'y':pad_h},-1) #add mounting pads (no number) mpad_w = 1.6 mpad_h = 2.2 mpad_x = (B/2) + (mpad_w/2) mpad_y = 1.8 kicad_mod.addPad('""', 'smd', 'rect', {'x':mpad_x, 'y':mpad_y}, {'x':mpad_w, 'y':mpad_h}, 0, ['F.Cu', 'F.Paste', 'F.Mask']) kicad_mod.addPad('""', 'smd', 'rect', {'x':-mpad_x, 'y':mpad_y}, {'x':mpad_w, 'y':mpad_h}, 0, ['F.Cu', 'F.Paste', 'F.Mask']) A = (pincount - 1) * pitch B = A + 2.9 + 1.5 x1 = -B/2 y1 = 0 x2 = B / 2 y2 = 3.5 #draw the connector outline on the F.Fab layer kicad_mod.addRectLine( {'x': x1,'y': y1}, {'x': x2,'y': y2},
,{'x':end_pos_x+2.95-0.8, 'y':-0.6} ,{'x':end_pos_x+2.95, 'y':-0.6} ,{'x':end_pos_x+2.95, 'y':3.5}] ,'F.SilkS', 0.15) kicad_mod.addLine({'x':end_pos_x+2.95-0.8, 'y':1}, {'x':end_pos_x+2.95, 'y':1}, 'F.SilkS', 0.15) kicad_mod.addLine({'x':start_pos_x-1.2, 'y':7}, {'x':end_pos_x+1.2, 'y':7}, 'F.SilkS', 0.15) kicad_mod.addRectLine({'x':start_pos_x-1.2, 'y':2.1}, {'x':start_pos_x-0.2, 'y':5.5}, 'F.SilkS', 0.15) kicad_mod.addRectLine({'x':end_pos_x+1.2, 'y':2.1}, {'x':end_pos_x+0.2, 'y':5.5}, 'F.SilkS', 0.15) for i in range(0, pincount-1): middle_x = start_pos_x+1+i*2 start_x = middle_x-0.1 end_x = middle_x+0.1 kicad_mod.addLine({'x':start_x, 'y':1}, {'x':end_x, 'y':1}, 'F.SilkS', 0.15) kicad_mod.addCircle({'x':start_pos_x-2.95+0.8+0.75, 'y':0.25}, {'x':0.25, 'y':0}, 'F.SilkS', 0.15) # create Courtyard kicad_mod.addRectLine({'x':start_pos_x-1.6-1.6-0.5, 'y':7.25+0.275+0.25}, {'x':end_pos_x+1.6+1.6+0.5, 'y':-1.75-0.275-0.25}, 'F.CrtYd', 0.05) # create pads createNumberedPadsSMD(kicad_mod, pincount, 2, {'x':1, 'y':3.5}, 0) kicad_mod.addPad('""', 'smd', 'rect', {'x':start_pos_x-1.6-1.6/2, 'y':5.55}, {'x':1.6, 'y':3.4}, 0, ['F.Cu', 'F.Paste', 'F.Mask']) kicad_mod.addPad('""', 'smd', 'rect', {'x':end_pos_x+1.6+1.6/2, 'y':5.55}, {'x':1.6, 'y':3.4}, 0, ['F.Cu', 'F.Paste', 'F.Mask']) # output kicad model print(kicad_mod)
{ 'x': start_pos_x - 1.6 - 1.6 - 0.5, 'y': 5.6 + 0.275 + 0.25 }, { 'x': end_pos_x + 1.6 + 1.6 + 0.5, 'y': -1.9 - 0.275 - 0.25 }, 'F.CrtYd', 0.05) # create pads createNumberedPadsSMD(kicad_mod, pincount, 2, { 'x': 1, 'y': 5.5 }, 4.75 - 1.9) #TODO y kicad_mod.addPad('""', 'smd', 'rect', { 'x': start_pos_x - 1.6 - 1.6 / 2, 'y': 0.6 }, { 'x': 1.6, 'y': 3 }, 0, ['F.Cu', 'F.Paste', 'F.Mask']) kicad_mod.addPad('""', 'smd', 'rect', { 'x': end_pos_x + 1.6 + 1.6 / 2, 'y': 0.6 }, { 'x': 1.6, 'y': 3 }, 0, ['F.Cu', 'F.Paste', 'F.Mask']) # output kicad model print(kicad_mod)
{ 'x': start_pos_x - 0.7 - 1.2 - 0.5, 'y': 4.775 + 0.5 + 0.0125 }, { 'x': end_pos_x + 0.7 + 1.2 + 0.5, 'y': -0.775 - 0.5 - 0.0375 }, 'F.CrtYd', 0.05) # create pads createNumberedPadsSMD(kicad_mod, pincount, pad_spacing, { 'x': 0.6, 'y': 1.55 }, 0) kicad_mod.addPad('""', 'smd', 'rect', { 'x': start_pos_x - 0.7 - 1.2 / 2, 'y': 3.875 }, { 'x': 1.2, 'y': 1.8 }, 0, ['F.Cu', 'F.Paste', 'F.Mask']) kicad_mod.addPad('""', 'smd', 'rect', { 'x': end_pos_x + 0.7 + 1.2 / 2, 'y': 3.875 }, { 'x': 1.2, 'y': 1.8 }, 0, ['F.Cu', 'F.Paste', 'F.Mask']) # output kicad model print(kicad_mod)
kicad_mod.addLine({'x':start_pos_x-2.4-0.25, 'y':-pad_spacing-3.2-0.1}, {'x':start_pos_x-2.4+0.25, 'y':-pad_spacing-3.2-0.1}, 'F.SilkS', 0.15) # triangle which is pointing at 1 kicad_mod.addPolygoneLine([{'x':start_pos_x-2.2, 'y':0.6} ,{'x':start_pos_x-2.2, 'y':-0.6} ,{'x':start_pos_x-1.6, 'y':0} ,{'x':start_pos_x-2.2, 'y':0.6}], 'F.SilkS', 0.15) # create Courtyard def round_to(n, precision): correction = 0.5 if n >= 0 else -0.5 return int( n/precision+correction ) * precision kicad_mod.addRectLine({'x':round_to(start_pos_x-3.87-1.2-0.5,0.05), 'y':3.2+0.5}, {'x':round_to(end_pos_x+3.87+1.2+0.5,0.05), 'y':round_to(-pad_spacing-3.2-0.5,0.05)}, 'F.CrtYd', 0.05) # create pads pad_diameter = 1 pad_size = {'x':1.7, 'y':1.7} for pad_number in range(1, pincount, 2): pad_pos_x = (pad_number-1)/2*pad_spacing if pad_number == 1: kicad_mod.addPad(pad_number, 'thru_hole', 'rect', {'x':pad_pos_x, 'y':0}, pad_size, pad_diameter, ['*.Cu', '*.Mask', 'F.SilkS']) else: kicad_mod.addPad(pad_number, 'thru_hole', 'circle', {'x':pad_pos_x, 'y':0}, pad_size, pad_diameter, ['*.Cu', '*.Mask', 'F.SilkS']) kicad_mod.addPad(pad_number+1, 'thru_hole', 'circle', {'x':pad_pos_x, 'y':-pad_spacing}, pad_size, pad_diameter, ['*.Cu', '*.Mask', 'F.SilkS']) # output kicad model print(kicad_mod)
kicad_mod.addRectLine({'x':end_pos_x+1, 'y':1.6}, {'x':end_pos_x+1.5, 'y':1.6}, 'F.SilkS', 0.15) kicad_mod.addPolygoneLine([{'x':start_pos_x-0.4, 'y':0.2} ,{'x':start_pos_x-0.4, 'y':-0.3} ,{'x':end_pos_x+0.4, 'y':-0.3} ,{'x':end_pos_x+0.4, 'y':0.2}] ,'F.SilkS', 0.15) kicad_mod.addPolygoneLine([{'x':start_pos_x-0.4, 'y':0.8} ,{'x':start_pos_x-0.4, 'y':2.525-1.55/2-0.3} ,{'x':end_pos_x+0.4, 'y':2.525-1.55/2-0.3} ,{'x':end_pos_x+0.4, 'y':0.8}] ,'F.SilkS', 0.15) for i in range(0, pincount): middle_x = start_pos_x+i*pad_spacing kicad_mod.addLine({'x':middle_x, 'y':0.2}, {'x':middle_x, 'y':0.4}, 'F.SilkS', 0.15) kicad_mod.addCircle({'x':start_pos_x-1, 'y':2.2+0.65}, {'x':0.25, 'y':0}, 'F.SilkS', 0.15) # create Courtyard kicad_mod.addRectLine({'x':start_pos_x-0.7-1.2-0.5, 'y':3.3+0.5+0.0125}, {'x':end_pos_x+0.7+1.2+0.5, 'y':-0.9-0.5-0.0375}, 'F.CrtYd', 0.05) # create pads createNumberedPadsSMD(kicad_mod, pincount, pad_spacing, {'x':0.6, 'y':1.55}, 2.525) kicad_mod.addPad('""', 'smd', 'rect', {'x':start_pos_x-0.7-1.2/2, 'y':0}, {'x':1.2, 'y':1.8}, 0, ['F.Cu', 'F.Paste', 'F.Mask']) kicad_mod.addPad('""', 'smd', 'rect', {'x':end_pos_x+0.7+1.2/2, 'y':0}, {'x':1.2, 'y':1.8}, 0, ['F.Cu', 'F.Paste', 'F.Mask']) # output kicad model print(kicad_mod)
# create outline # create Courtyard # output kicad model # create pads createNumberedPadsSMD(kicad_mod, pincount, pad_spacing, {"x": pad_w, "y": pad_h}, -4.55) # add mounting pads (no number) mpad_w = 1.0 mpad_h = 2.8 mpad_x = (B / 2) - (mpad_w / 2) mpad_y = -1.35 kicad_mod.addPad( '""', "smd", "rect", {"x": mpad_x, "y": mpad_y}, {"x": mpad_w, "y": mpad_h}, 0, ["F.Cu", "F.Paste", "F.Mask"] ) kicad_mod.addPad( '""', "smd", "rect", {"x": -mpad_x, "y": mpad_y}, {"x": mpad_w, "y": mpad_h}, 0, ["F.Cu", "F.Paste", "F.Mask"] ) T = 0.5 # add bottom line kicad_mod.addPolygoneLine([{"x": -B / 2 + mpad_w + 0.6, "y": -0.1}, {"x": B / 2 - mpad_w - 0.6, "y": -0.1}]) # add left line kicad_mod.addPolygoneLine( [ {"x": -B / 2 - 0.1, "y": -3.3}, {"x": -B / 2 - 0.1, "y": -4.4},
# set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':-3}, 'F.Fab') #add the pads for r in range(rows): for p in range(pincount): X = r * pitch Y = p * pitch num = r + 1 + (p * rows) if num == 1: type = "rect" else: type = "circle" kicad_mod.addPad(num, "thru_hole", type, {'x':X,'y':Y}, {'x':size,'y':size}, drill, ['*.Cu', '*.Mask']) #add an outline around the pins y1 = -1 x1 = -1 x2 = (rows - 1) * pitch + 1 y2 = (pincount - 1) * pitch + 1 if rows == 1: kicad_mod.addPolygoneLine([{'x':x1,'y':y1 + pitch},{'x':x2,'y':y1+pitch}]) elif rows == 2: kicad_mod.addPolygoneLine([{'x':x1,'y':y1 + pitch}, {'x':x1 + pitch,'y':y1+pitch}, {'x':x1 + pitch,'y':y1},