def parse_footprint(self, filename): # logger.info('Footprint: {f:s}'.format(f=os.path.basename(filename))) try: footprint = KicadMod(filename) except FileNotFoundError: logger.fatal( "EXIT: problem reading footprint file {fn:s}".format(fn=filename) ) sys.exit(1) try: long_reference = footprint.models[0]["file"] except IndexError: if footprint.attribute == "virtual": # count as model found self.model_found += 1 else: logger.warning( "- No model file specified in {fp:s}".format( fp=os.path.basename(filename) ) ) self.no_model_specified += 1 return None try: # Accept both forward and backward slash characters in path long_reference = "/".join(long_reference.split("\\")) return os.path.basename(long_reference) # TODO: determine, which specific problem could happen above ("ValueError" is just a guess) except ValueError: logger.warning("- Invalid model reference {f:s}".format(f=long_reference)) self.invalid_model_path += 1 return None
def check_library(filename: str, rules, metrics: List[str], args) -> Tuple[int, int]: """ Returns (error count, warning count) """ if not os.path.exists(filename): printer.red("File does not exist: %s" % filename) return (1, 0) if not filename.endswith(".kicad_mod"): printer.red("File is not a .kicad_mod : %s" % filename) return (1, 0) if args.errors: module = KicadMod(filename) else: try: module = KicadMod(filename) except Exception as e: printer.red("Could not parse footprint: %s. (%s)" % (filename, e)) if args.verbose: # printer.red("Error: " + str(e)) traceback.print_exc() return (1, 0) if args.rotate != 0: module.rotateFootprint(int(args.rotate)) printer.green( "rotated footprint by {deg} degrees".format(deg=int(args.rotate))) # check which kind of tests we want to run if args.unittest: (ec, wc) = do_unittest(module, rules, metrics) else: (ec, wc) = do_rulecheck(module, rules, metrics) # done checking the footpint metrics.append("{lib}.errors {n}".format(lib=module.name, n=ec)) metrics.append("{lib}.warnings {n}".format(lib=module.name, n=wc)) return (ec, wc)
parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pincount = int(args.pincount[0]) pad_spacing = 2 start_pos_x = -(pincount-1)*pad_spacing/2 end_pos_x = (pincount-1)*pad_spacing/2 # SMT type shrouded header, Side entry type footprint_name = 'JST_PH_S{pincount}B-PH-SM4-TB_{pincount:02}x2.00mm_Angled'.format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst ph') kicad_mod.setCenterPos({'x':0, 'y':5.55/2}) # set general values kicad_mod.addText('reference', 'REF**', {'x':start_pos_x-0.5, 'y':-3-0.225}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':8.5+0.275}, 'F.Fab') # create Silkscreen kicad_mod.addPolygoneLine([{'x':start_pos_x+0.5, 'y':7} ,{'x':start_pos_x+0.5, 'y':6} # 2.75 ,{'x':end_pos_x-0.5, 'y':6} ,{'x':end_pos_x-0.5, 'y':7}]
# http://www.jst-mfg.com/product/pdf/eng/eZE.pdf # ZE connector, top-entry SMD pitch = 1.5 for pincount in range(2, 17): jst = "BM{pincount:02}B-ZESS-TBT".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Straight".format(pincount=pincount, pitch=pitch) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setAttribute("smd") # this is an SMD part111one desc = "JST ZE series connector, " + jst + ", 1.50mm pitch, top entry surface mount" kicad_mod.setDescription(desc) kicad_mod.setTags("connector jst ze top vertical straight smt surface mount") # dimensions A = (pincount - 1) * 1.5 B = A + 6 # y-coords calculated based on drawing in datasheet # middle point of pads py = -6.7 # middle point of mechanical pads my = -1.65
A = (pincount - 1) * 1.25 B = 3.25 + pincount * 1.25 #A and B should be 0.1mm resolution A = int(A / 0.1) * 0.1 B = int(B / 0.1) * 0.1 jst_name = "SM{pincount:02}B-GHS-TB".format(pincount=pincount) # SMT type shrouded header, footprint_name = "JST_GH_" + jst_name + "_{pincount:02}x1.25mm_Angled".format( pincount=pincount) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST GH series connector, " + jst_name + ", side entry type") kicad_mod.setAttribute('smd') kicad_mod.setTags( 'connector jst GH SMT side horizontal entry 1.25mm pitch') kicad_mod.setCenterPos({'x': 0, 'y': -2.95}) # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -6.75}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 1.5}, 'F.Fab') #create outline # create Courtyard # output kicad model
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pitch = 2.50 for pincount in range(2, 16): jst = "S{pincount:02}B-EH".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Angled".format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, side entry") kicad_mod.setTags('connector jst eh side horizontal angled') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': 4}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 6}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, { 'x': dia,
pitch = 2.50 for pincount in range(2,16): jst = "S{pincount:02}B-EH".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Angled".format(pincount=pincount) print(footprint_name) A = (pincount - 1) * pitch B = A + 5.0 kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, side entry") kicad_mod.setTags('connector jst eh side horizontal angled') # set general values kicad_mod.addText('reference', 'REF**', {'x':A/2, 'y':3}, 'F.SilkS') kicad_mod.addText('user', '%R', {'x':A/2, 'y':-2}, 'F.Fab') kicad_mod.addText('value', footprint_name, {'x':A/2, 'y':-8}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, {'x':dia, 'y':dia})
pitch = 1.25 manu = "Hirose" suffix = "Straight" desc = "Hirose DF13 series connector, 1.25mm pitch, top entry PTH" tags = "connector hirose df13 top straight vertical through thru hole" for pincount in range(2,16): part = "DF13-{pincount:02}P-1.25DSA".format(pincount=pincount) footprint_name = "{0}_{1}_{2:02}x{3:.2f}mm_{4}".format(manu,part,pincount,pitch,suffix) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) A = (pincount - 1) * pitch B = A + 2.9 # set general values kicad_mod.addText('reference', 'REF**', {'x':A/2, 'y':-4}, 'F.SilkS') #kicad_mod.addText('user', '%R', {'x':A/2, 'y':-4}, 'F.Fab') kicad_mod.addText('value', footprint_name, {'x':A/2, 'y':2.5}, 'F.Fab') drill = 0.6 x_dia = 0.95 y_dia = 1.25
import argparse from kicad_mod import KicadMod, createNumberedPadsTHT parser = argparse.ArgumentParser() parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pincount = int(args.pincount[0]) # Through-hole type shrouded header, Top entry type footprint_name = 'JST_PH_B{pincount}B-PH-K_{pincount:02}x2.00mm_Straight'.format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") kicad_mod.setTags('connector jst ph') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':(pincount-1)*2/2, 'y':4}, 'F.Fab') # create Silkscreen kicad_mod.addRectLine({'x':-1.95, 'y':2.8}, {'x':(pincount-1)*2+1.95, 'y':-1.7}, 'F.SilkS', 0.15) kicad_mod.addPolygoneLine([{'x':0.5, 'y':-1.7} ,{'x':0.5, 'y':-1.2} ,{'x':-1.45, 'y':-1.2} ,{'x':-1.45, 'y':2.3} ,{'x':(pincount-1)*2+1.45, 'y':2.3}
A = (pincount - 1) * 1.25 B = 3.25 + pincount * 1.25 #A and B should be 0.1mm resolution A = int(A / 0.1) * 0.1 B = int(B / 0.1) * 0.1 jst_name = "BM{pincount:02}B-GHS-TBT".format(pincount=pincount) # SMT type shrouded header, footprint_name = "JST_GH_" + jst_name + "_{pincount:02}x1.25mm_Straight".format( pincount=pincount) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST GH series connector, " + jst_name + ", top entry type") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst GH SMT top vertical entry 1.25mm pitch') kicad_mod.setCenterPos({'x': 0, 'y': 3.075}) #draw outline on the F.Fab layer y1 = 4.25 / 2 + 2.25 y2 = y1 - 4.25 kicad_mod.addRectLine({ 'x': -B / 2, 'y': y1 }, { 'x': B / 2,
parser = argparse.ArgumentParser() parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.farnell.com/cad/360651.pdf pincount = int(args.pincount[0]) pad_spacing = 2.54 start_pos_x = 0 end_pos_x = pad_spacing*(pincount-2)/2 # Through-hole type shrouded header, Top entry type footprint_name = "Multicomp_MC9A22-{pincount:02g}34_2x{pincount_half:02g}x2.54mm_Angled".format(pincount=pincount, pincount_half=pincount/2) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription('http://www.farnell.com/cad/360651.pdf') kicad_mod.setTags('connector multicomp MC9A MC9A22') # set general values kicad_mod.addText('reference', 'REF**', {'x':start_pos_x-3, 'y':-15}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':end_pos_x/2., 'y':-5.5}, 'F.Fab') # create Silkscreen # outline kicad_mod.addRectLine({'x':start_pos_x-3.87-1.2, 'y':-pad_spacing-1.8}, {'x':end_pos_x+3.87+1.2, 'y':-pad_spacing-1.8-8.9}, 'F.SilkS', 0.15) # slot(s)
parser.add_argument( '-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pincount = int(args.pincount[0]) # Through-hole type shrouded header, Side entry type footprint_name = 'JST_PH_S{pincount}B-PH-K_{pincount:02}x2.00mm_Angled'.format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") kicad_mod.setTags('connector jst ph') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -2.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, { 'x': (pincount - 1) * 2 / 2, 'y': 7.5 }, 'F.Fab') # create Silkscreen kicad_mod.addPolygoneLine([{ 'x': 0.5, 'y': 6.25 }, {
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf drill = 0.8 size = 1.35 pitch = 2.00 for rows in [1,2]: for pincount in range(2,41): #range(1,21): # Through-hole type shrouded header, Top entry type footprint_name = 'Pin_Header_Straight_{rows:01}x{pincount:02}_Pitch2.00mm'.format(rows=rows,pincount=pincount) kicad_mod = KicadMod(footprint_name) if rows == 1: rlabel = "single" elif rows == 2: rlabel = "double" kicad_mod.setDescription("Through hole pin header, {rows}x{pincount:02}, 2.00mm pitch, ".format(rows=rows,pincount=pincount) + rlabel + " row") kicad_mod.setTags("pin header " + rlabel + " row") # 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):
# http://www.jst-mfg.com/product/pdf/eng/eZE.pdf pitch = 1.5 for pincount in range(2, 17): jst = "S{pincount:02}B-ZESK-2D".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Angled".format( pincount=pincount, pitch=pitch) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST ZE series connector, " + jst + ", 1.50mm pitch, side entry through hole") kicad_mod.setTags( 'connector jst ze side horizontal angled tht through thru hole') #dimensions A = (pincount - 1) * 1.5 B = A + 4.5 #outline x1 = -1.55 - 0.7 x2 = x1 + B xMid = x1 + B / 2
manu = "Hirose" suffix = "Angled" desc = "Hirose DF13 DS series connector, 1.25mm pitch, side entry PTH" tags = "connector hirose df13 side angled horizontal through thru hole" for pincount in range(2, 16): part = "DF13-{pincount:02}P-125DS".format(pincount=pincount) footprint_name = "{0}_{1}_{2:02}x{3:.2f}mm_{4}".format( manu, part, pincount, pitch, suffix) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': 3.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 5}, 'F.Fab') drill = 0.6 x_dia = 0.95 y_dia = 1.25 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, { 'x': x_dia,
if pincount < 6: part += "00" else: part += "50" part += "{0:02}".format(pincount) desc = "Molex Pico-EZmate series connector, 1.20mm pitch, side entry SMT, P/N: " + part tags = "connector molex pico ezmate side angled horizontal surface mount SMD SMT" footprint_name = "{0}_{1:02}x{2:.2f}mm_{3}".format(manu,pincount,pitch,suffix) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) kicad_mod.setAttribute('smd') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-3.75}, 'F.SilkS') #kicad_mod.addText('user', '%R', {'x':0, 'y':-4.5}, 'F.Fab') kicad_mod.addText('value', footprint_name, {'x':0, 'y':3.5}, 'F.Fab') #pin pad size pad_w = 0.7 pad_h = 1.2 #component values
sys.path.append(os.path.join(sys.path[0],"..","..","kicad_mod")) from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pitch = 2.50 for pincount in range(2,16): jst = "S{pincount:02}B-EH".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Angled".format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, side entry") kicad_mod.setTags('connector jst eh side horizontal angled') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':4}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':6}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, {'x':dia, 'y':dia}) A = (pincount - 1) * pitch
pad_w = 0.6 pad_h = 1.8 A = (pincount - 1) * 1.25 B = 3.25 + pincount * 1.25 #A and B should be 0.1mm resolution A = int(A/0.1) * 0.1 B = int(B/0.1) * 0.1 jst_name = "BM{pincount:02}B-GHS-TBT".format(pincount=pincount) # SMT type shrouded header, footprint_name = "JST_GH_" + jst_name + "_{pincount:02}x1.25mm_Straight".format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST GH series connector, " + jst_name + ", top entry type") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst GH SMT top vertical entry 1.25mm pitch') kicad_mod.setCenterPos({'x':0, 'y':-3.075}) # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-7.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':1.5}, 'F.Fab') #create outline # create Courtyard # output kicad model #create pads
pad_w = 0.6 pad_h = 1.8 A = (pincount - 1) * 1.25 B = 3.25 + pincount * 1.25 # A and B should be 0.1mm resolution A = int(A / 0.1) * 0.1 B = int(B / 0.1) * 0.1 jst_name = "SM{pincount:02}B-GHS-TB".format(pincount=pincount) # SMT type shrouded header, footprint_name = "JST_GH_" + jst_name + "_{pincount:02}x1.25mm_Angled".format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST GH series connector, " + jst_name + ", side entry type") kicad_mod.setAttribute("smd") kicad_mod.setTags("connector jst GH SMT side horizontal entry 1.25mm pitch") kicad_mod.setCenterPos({"x": 0, "y": -2.95}) # set general values kicad_mod.addText("reference", "REF**", {"x": 0, "y": -7.5}, "F.SilkS") kicad_mod.addText("value", footprint_name, {"x": 0, "y": 1.5}, "F.Fab") # create outline # create Courtyard # output kicad model # create pads
sys.path.append(os.path.join(sys.path[0],"..","..","kicad_mod")) from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pitch = 2.50 for pincount in range(2,16): jst = "B{pincount:02}B-EH-A".format(pincount=pincount) # Through-hole type shrouded header, Top entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Straight".format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, top entry") kicad_mod.setTags('connector jst eh top vertical straight') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':5}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, {'x':dia, 'y':dia}) A = (pincount - 1) * pitch
# -*- coding: utf-8 -*- import os import re from kicad_mod import KicadMod dir_kicad_pins = "/usr/share/kicad/modules/Pin_Headers.pretty/" dir_my_pins = "./" re_filenames = re.compile(r"Pin_Header_Straight_(\d)x(\d\d).kicad_mod") for filename in os.walk(dir_kicad_pins).next()[2]: matches = re_filenames.match(filename) if matches: module = KicadMod(dir_kicad_pins + filename) shape = matches.groups() # Change all drill sizes to 1mm for pad in module.pads: pad['drill']['size'] = {'x': 1., 'y': 1.} module.name = "pin-{}x{}-sq".format(shape[0], shape[1]) module.description = "Header pin. 2.54mm pitch. 1mm drills. Shape {}x{}. Square pin 1.".format( shape[0], shape[1]) module.value['value'] = module.name module.save(filename="{}{}.kicad_mod".format(dir_my_pins, module.name)) # Now create a similar module without the square pin for pad in module.pads: pad['shape'] = 'oval'
help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.farnell.com/datasheets/1520732.pdf pincount = int(args.pincount[0]) pad_spacing = 2.54 start_pos_x = 0 end_pos_x = pad_spacing * (pincount - 2) / 2 # Through-hole type shrouded header, Top entry type footprint_name = 'Multicomp_MC9A12-{pincount:02g}34_2x{pincount_half:02g}x2.54mm_Straight'.format( pincount=pincount, pincount_half=pincount / 2) # TODO: name kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription('http://www.farnell.com/datasheets/1520732.pdf') kicad_mod.setTags('connector multicomp MC9A MC9A12') # set general values kicad_mod.addText('reference', 'REF**', { 'x': start_pos_x - 3, 'y': -7 }, 'F.SilkS') kicad_mod.addText('value', footprint_name, { 'x': end_pos_x / 2., 'y': 5 }, 'F.Fab') # create Silkscreen
parser = argparse.ArgumentParser() parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.molex.com/pdm_docs/sd/022272021_sd.pdf pincount = int(args.pincount[0]) pad_spacing = 2.54 start_pos_x = 0 end_pos_x = (pincount-1)*pad_spacing # Through-hole type shrouded header, Top entry type footprint_name = 'Molex_KK_6410-{pincount:02g}'.format(pincount=pincount) # TODO: name kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("Connector Headers with Friction Lock, 22-27-2{pincount:02g}1, http://www.molex.com/pdm_docs/sd/022272021_sd.pdf".format(pincount=pincount)) kicad_mod.setTags('connector molex kk_6410 22-27-2{pincount:02g}1'.format(pincount=pincount)) # set general values kicad_mod.addText('reference', 'REF**', {'x':start_pos_x+1, 'y':-4.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':(pincount-1)*pad_spacing/2., 'y':4.5}, 'F.Fab') # create Silkscreen kicad_mod.addRectLine({'x':start_pos_x-2.54/2-0.1, 'y':-3.02}, {'x':end_pos_x+2.54/2+0.1, 'y':2.98}, 'F.SilkS', 0.15) #ramps if pincount <= 6: # single ramp kicad_mod.addPolygoneLine([{'x':start_pos_x, 'y':2.98}
minPins = 3 if boss: minPins = 2 for pincount in range(minPins, 17): if boss: suffix = "1D" else: suffix = "D" jst = "B{pincount:02}B-ZESK-{suff}".format(pincount=pincount, suff=suffix) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Straight".format( pincount=pincount, pitch=pitch) kicad_mod = KicadMod(footprint_name) desc = "JST ZE series connector, " + jst + ", 1.50mm pitch, top entry through hole" if boss: desc += " with boss" kicad_mod.setDescription(desc) kicad_mod.setTags( 'connector jst ze top vertical straight tht through thru hole') #dimensions A = (pincount - 1) * 1.5 B = A + 4.5 #outline x1 = -1.55 - 0.7 x2 = x1 + B
pitch = 2.50 for pincount in range(2, 16): jst = "B{pincount:02}B-EH-A".format(pincount=pincount) # Through-hole type shrouded header, Top entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Straight".format(pincount=pincount) print(footprint_name) A = (pincount - 1) * pitch B = A + 5.0 kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, top entry") kicad_mod.setTags("connector jst eh top vertical straight") # set general values kicad_mod.addText("reference", "REF**", {"x": 0, "y": -3}, "F.SilkS") kicad_mod.addText("value", footprint_name, {"x": A / 2, "y": 3.5}, "F.Fab") drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, {"x": dia, "y": dia}) x1 = -2.5
pitch = 2.50 for pincount in range(2,16): jst = "S{pincount:02}B-EH".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Angled".format(pincount=pincount) print(footprint_name) A = (pincount - 1) * pitch B = A + 5.0 kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, side entry") kicad_mod.setTags('connector jst eh side horizontal angled') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':A/2, 'y':-8}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, {'x':dia, 'y':dia}) x1 = -2.5
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/eZE.pdf pitch = 1.5 for pincount in range(2,17): jst = "S{pincount:02}B-ZESK-2D".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Angled".format(pincount=pincount, pitch=pitch) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST ZE series connector, " + jst + ", 1.50mm pitch, side entry through hole") kicad_mod.setTags('connector jst ze side horizontal angled tht through thru hole') #dimensions A = (pincount - 1) * 1.5 B = A + 4.5 #outline x1 = -1.55 - 0.7 x2 = x1 + B xMid = x1 + B/2 y2 = 3.7 + 3.65 y1 = y2 - 7.8 - 0.2
parser.add_argument( '-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pincount = int(args.pincount[0]) # Through-hole type shrouded header, Top entry type footprint_name = 'JST_PH_B{pincount}B-PH-K_{pincount:02}x2.00mm_Straight'.format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") kicad_mod.setTags('connector jst ph') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, { 'x': (pincount - 1) * 2 / 2, 'y': 4 }, 'F.Fab') # create Silkscreen kicad_mod.addRectLine({ 'x': -1.95, 'y': 2.8 }, {
suffix="1D" minPins = 2 else: suffix="D" minPins=3 if pincount < minPins: continue jst = "B{pincount:02}B-ZESK-{suff}".format(pincount=pincount,suff=suffix) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Straight".format(pincount=pincount, pitch=pitch) print(footprint_name) kicad_mod = KicadMod(footprint_name) desc = "JST ZE series connector, " + jst + ", 1.50mm pitch, top entry through hole" if boss: desc += " with boss" kicad_mod.setDescription(desc) kicad_mod.setTags('connector jst ze top vertical straight tht through thru hole') #dimensions A = (pincount - 1) * 1.5 B = A + 4.5 #outline x1 = -1.55 - 0.7 x2 = x1 + B
help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.molex.com/pdm_docs/sd/022272021_sd.pdf pincount = int(args.pincount[0]) pad_spacing = 2.54 start_pos_x = 0 end_pos_x = (pincount - 1) * pad_spacing # Through-hole type shrouded header, Top entry type footprint_name = 'Molex_KK_6410-{pincount:02g}'.format( pincount=pincount) # TODO: name kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription( "Connector Headers with Friction Lock, 22-27-2{pincount:02g}1, http://www.molex.com/pdm_docs/sd/022272021_sd.pdf" .format(pincount=pincount)) kicad_mod.setTags( 'connector molex kk_6410 22-27-2{pincount:02g}1'.format(pincount=pincount)) # set general values kicad_mod.addText('reference', 'REF**', { 'x': start_pos_x + 1, 'y': -4.5 }, 'F.SilkS') kicad_mod.addText('value', footprint_name, { 'x': (pincount - 1) * pad_spacing / 2., 'y': 4.5 }, 'F.Fab')
series = "Panelmate" suffix = "Angled" for pincount in [2,3,4,5,6,7,8,9,10,12,14,15,18,20,30]: part = "53780-{0:02}70".format(pincount) desc = "{0:} {1}".format(manu,series) desc += " series connector, {0:.2f}mm pitch, side entry SMT, P/N: {1:}".format(pitch,part) tags = "connector molex panelmate side angled horizontal surface mount SMD SMT" footprint_name = "{0}_{1:02}x{2:.2f}mm_{3}".format(manu+"_"+series,pincount,pitch,suffix) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) kicad_mod.setAttribute('smd') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-4}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':7}, 'F.Fab') #pin pad size pad_w = 0.8 pad_h = 2.0 #component values A = (pincount - 1) * pitch
pad_h = 1.8 A = (pincount - 1) * 1.25 B = 3.25 + pincount * 1.25 #A and B should be 0.1mm resolution A = int(A / 0.1) * 0.1 B = int(B / 0.1) * 0.1 jst_name = "BM{pincount:02}B-GHS-TBT".format(pincount=pincount) # SMT type shrouded header, footprint_name = "JST_GH_" + jst_name + "_{pincount:02}x1.25mm_Straight".format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST GH series connector, " + jst_name + ", top entry type") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst GH SMT top vertical entry 1.25mm pitch') kicad_mod.setCenterPos({'x': 0, 'y': -3.075}) # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -7.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 1.5}, 'F.Fab') #create outline # create Courtyard # output kicad model
from kicad_mod import KicadMod, createNumberedPadsSMD # http://www.jst-mfg.com/product/pdf/eng/eZE.pdf #ZE connector, top-entry SMD pitch = 1.5 for pincount in range(2,17): jst = "BM{pincount:02}B-ZESS-TBT".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Straight".format(pincount=pincount, pitch=pitch) kicad_mod = KicadMod(footprint_name) kicad_mod.setAttribute('smd') #this is an SMD part111one desc = "JST ZE series connector, " + jst + ", 1.50mm pitch, top entry surface mount" kicad_mod.setDescription(desc) kicad_mod.setTags('connector jst ze top vertical straight smt surface mount') #dimensions A = (pincount - 1) * 1.5 B = A + 6 #y-coords calculated based on drawing in datasheet #middle point of pads py = -6.7 #middle point of mechanical pads my = -1.65
# http://www.jst-mfg.com/product/pdf/eng/eZE.pdf #ZE connector, top-entry SMD pitch = 1.5 for pincount in range(2, 17): jst = "BM{pincount:02}B-ZESS-TBT".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Straight".format( pincount=pincount, pitch=pitch) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setAttribute('smd') #this is an SMD part111one desc = "JST ZE series connector, " + jst + ", 1.50mm pitch, top entry surface mount" kicad_mod.setDescription(desc) kicad_mod.setTags( 'connector jst ze top vertical straight smt surface mount') #dimensions A = (pincount - 1) * 1.5 B = A + 6 #y-coords calculated based on drawing in datasheet #middle point of pads py = -6.7 #middle point of mechanical pads my = -1.65
parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/eSH.pdf pincount = int(args.pincount[0]) pad_spacing = 1. start_pos_x = -(pincount-1)*pad_spacing/2. end_pos_x = (pincount-1)*pad_spacing/2. # SMT type shrouded header, Top entry type footprint_name = 'JST_SH_BM{pincount:02g}B-SRSS-TB_{pincount:02g}x1.00mm_Straight'.format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/eSH.pdf") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst sh') kicad_mod.setCenterPos({'x':0, 'y':2.525/2}) # set general values kicad_mod.addText('reference', 'REF**', {'x':start_pos_x, 'y':-2-0.2375}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':4.5+0.2625}, 'F.Fab') # create Silkscreen kicad_mod.addLine({'x':start_pos_x-0.4, 'y':-0.7}, {'x':end_pos_x+0.4, 'y':-0.7}, 'F.SilkS', 0.15) kicad_mod.addPolygoneLine([{'x':start_pos_x-1.5, 'y':1.2} ,{'x':start_pos_x-1.5, 'y':2.2} ,{'x':start_pos_x-0.6, 'y':2.2}]
pad_spacing = 1 start_pos_x = -(pincount-1)*pad_spacing/2 end_pos_x = (pincount-1)*pad_spacing/2 pad_w = 0.6 pad_h = 1.4 B = 2.8 + pincount A = (pincount - 1) * 1.0 jst_name = "SM{pincount:02}B-SHLS-TF".format(pincount=pincount) # SMT type shrouded header, Side entry type (normal type) footprint_name = "JST_SHL_" + jst_name + "_{pincount:02}x1.00mm_Angled".format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST SHL series connector, " + jst_name) kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst SHL SMT side horizontal entry 1.0mm pitch') kicad_mod.setCenterPos({'x':0, 'y':-3.1125}) # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-6.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':2}, 'F.Fab') #create outline # create Courtyard # output kicad model #create pads
parser = argparse.ArgumentParser() parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.farnell.com/datasheets/1520732.pdf pincount = int(args.pincount[0]) pad_spacing = 2.54 start_pos_x = 0 end_pos_x = pad_spacing*(pincount-2)/2 # Through-hole type shrouded header, Top entry type footprint_name = 'Multicomp_MC9A12-{pincount:02g}34_2x{pincount_half:02g}x2.54mm_Straight'.format(pincount=pincount, pincount_half=pincount/2) # TODO: name kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription('http://www.farnell.com/datasheets/1520732.pdf') kicad_mod.setTags('connector multicomp MC9A MC9A12') # set general values kicad_mod.addText('reference', 'REF**', {'x':start_pos_x-3, 'y':-7}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':end_pos_x/2., 'y':5}, 'F.Fab') # create Silkscreen # outline kicad_mod.addRectLine({'x':start_pos_x-3.87-1.2, 'y':3.2}, {'x':end_pos_x+3.87+1.2, 'y':-pad_spacing-3.2}, 'F.SilkS', 0.15) # slot(s) if pincount < 60: kicad_mod.addPolygoneLine([{'x':((start_pos_x+end_pos_x)/2)-4.45/2, 'y':3.2}
action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pincount = int(args.pincount[0]) pad_spacing = 2 start_pos_x = -(pincount - 1) * pad_spacing / 2 end_pos_x = (pincount - 1) * pad_spacing / 2 # SMT type shrouded header, Top entry type footprint_name = 'JST_PH_B{pincount}B-PH-SM4-TB_{pincount:02}x2.00mm_Straight'.format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst ph') kicad_mod.setCenterPos({'x': 0, 'y': (4.75 - 1.9 + 0.6) / 2}) # set general values kicad_mod.addText('reference', 'REF**', { 'x': start_pos_x - 0.5, 'y': -3 - 0.275 }, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 7 - 0.025}, 'F.Fab') # create Silkscreen kicad_mod.addPolygoneLine([{
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf drill = 0.8 size = 1.35 pitch = 2.00 for rows in [1, 2]: for pincount in range(2, 41): #range(1,21): # Through-hole type shrouded header, Top entry type footprint_name = 'Pin_Header_Straight_{rows:01}x{pincount:02}_Pitch2.00mm'.format( rows=rows, pincount=pincount) kicad_mod = KicadMod(footprint_name) if rows == 1: rlabel = "single" elif rows == 2: rlabel = "double" kicad_mod.setDescription( "Through hole pin header, {rows}x{pincount:02}, 2.00mm pitch, ". format(rows=rows, pincount=pincount) + rlabel + " row") kicad_mod.setTags("pin header " + rlabel + " row") # 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')
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf drill = 0.8 size = 1.35 pitch = 2.00 for rows in [1, 2]: for pincount in range(2, 41): #range(1,21): # Through-hole type shrouded header, Top entry type footprint_name = 'Socket_Strip_Straight_{rows:01}x{pincount:02}_Pitch2.00mm'.format( rows=rows, pincount=pincount) kicad_mod = KicadMod(footprint_name) if rows == 1: rlabel = "single" elif rows == 2: rlabel = "double" kicad_mod.setDescription( "Through hole socket strip, {rows}x{pincount:02}, 2.00mm pitch, ". format(rows=rows, pincount=pincount) + rlabel + " row") kicad_mod.setTags("socket strip " + rlabel + " row") # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': -5}, 'F.Fab')
pitch = 2.50 for pincount in range(2, 16): jst = "B{pincount:02}B-EH-A".format(pincount=pincount) # Through-hole type shrouded header, Top entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Straight".format( pincount=pincount) print(footprint_name) A = (pincount - 1) * pitch B = A + 5.0 kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, top entry") kicad_mod.setTags('connector jst eh top vertical straight') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': A / 2, 'y': 3.5}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, { 'x': dia,
manu = "Hirose" suffix = "Straight" desc = "Hirose DF13 series connector, 1.25mm pitch, top entry SMT" tags = "connector hirose df13 top straight vertical surface mount SMD SMT" for pincount in range(2,16): part = "DF13C-{pincount:02}P-1.25V".format(pincount=pincount) footprint_name = "{0}_{1}_{2:02}x{3:.2f}mm_{4}".format(manu,part,pincount,pitch,suffix) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) kicad_mod.setAttribute('smd') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-3.1}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':4.9}, 'F.Fab') #pin pad size pad_w = 0.7 pad_h = 1.8 kicad_mod.setCenterPos({'x':0,'y':0.4})
action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/eSH.pdf pincount = int(args.pincount[0]) pad_spacing = 1. start_pos_x = -(pincount - 1) * pad_spacing / 2. end_pos_x = (pincount - 1) * pad_spacing / 2. # SMT type shrouded header, Top entry type footprint_name = 'JST_SH_SM{pincount:02g}B-SRSS-TB_{pincount:02g}x1.00mm_Angled'.format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/eSH.pdf") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst sh') kicad_mod.setCenterPos({'x': 0, 'y': 3.875 / 2}) # set general values kicad_mod.addText('reference', 'REF**', { 'x': start_pos_x, 'y': -2 - 0.0625 }, 'F.SilkS') kicad_mod.addText('value', footprint_name, { 'x': 0, 'y': 6.2 + 0.2375 }, 'F.Fab')
# http://www.jst-mfg.com/product/pdf/eng/ePH.pdf drill = 0.8 size = 1.35 pitch = 2.00 for rows in [1, 2]: for pincount in range(2, 41): # range(1,21): # Through-hole type shrouded header, Top entry type footprint_name = "Socket_Strip_Straight_{rows:01}x{pincount:02}_Pitch2.00mm".format( rows=rows, pincount=pincount ) kicad_mod = KicadMod(footprint_name) if rows == 1: rlabel = "single" elif rows == 2: rlabel = "double" kicad_mod.setDescription( "Through hole socket strip, {rows}x{pincount:02}, 2.00mm pitch, ".format(rows=rows, pincount=pincount) + rlabel + " row" ) kicad_mod.setTags("socket strip " + rlabel + " row") # set general values kicad_mod.addText("reference", "REF**", {"x": 0, "y": -3}, "F.SilkS")
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/eZE.pdf pitch = 1.5 for pincount in range(2, 17): jst = "S{pincount:02}B-ZESK-2D".format(pincount=pincount) # Through-hole type shrouded header, side entry type footprint_name = "JST_ZE_" + jst + "_{pincount:02}x{pitch:02}mm_Angled".format( pincount=pincount, pitch=pitch) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST ZE series connector, " + jst + ", 1.50mm pitch, side entry through hole") kicad_mod.setTags( 'connector jst ze side horizontal angled tht through thru hole') #dimensions A = (pincount - 1) * 1.5 B = A + 4.5 #outline x1 = -1.55 - 0.7 x2 = x1 + B xMid = x1 + B / 2
start_pos_x = -(pincount - 1) * pad_spacing / 2 end_pos_x = (pincount - 1) * pad_spacing / 2 pad_w = 0.6 pad_h = 1.4 B = 2.8 + pincount A = (pincount - 1) * 1.0 jst_name = "SM{pincount:02}B-SHLS-TF".format(pincount=pincount) # SMT type shrouded header, Side entry type (normal type) footprint_name = "JST_SHL_" + jst_name + "_{pincount:02}x1.00mm_Angled".format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST SHL series connector, " + jst_name) kicad_mod.setAttribute('smd') kicad_mod.setTags( 'connector jst SHL SMT side horizontal entry 1.0mm pitch') kicad_mod.setCenterPos({'x': 0, 'y': -3.1125}) # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -6.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 2}, 'F.Fab') #create outline # create Courtyard # output kicad model
if pincount < 6: part += "00" else: part += "50" part += "{0:02}".format(pincount) desc = "Molex Pico-EZmate series connector, 1.20mm pitch, side entry SMT, P/N: " + part tags = "connector molex pico ezmate side angled horizontal surface mount SMD SMT" footprint_name = "{0}_{1:02}x{2:.2f}mm_{3}".format(manu, pincount, pitch, suffix) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) kicad_mod.setAttribute('smd') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -3.75}, 'F.SilkS') #kicad_mod.addText('user', '%R', {'x':0, 'y':-4.5}, 'F.Fab') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 3.5}, 'F.Fab') #pin pad size pad_w = 0.7 pad_h = 1.2 #component values
import argparse from kicad_mod import KicadMod, createNumberedPadsTHT parser = argparse.ArgumentParser() parser.add_argument('pincount', help='number of pins of the jst connector', type=int, nargs=1) parser.add_argument('-v', '--verbose', help='show extra information while generating the footprint', action='store_true') #TODO args = parser.parse_args() # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pincount = int(args.pincount[0]) # Through-hole type shrouded header, Side entry type footprint_name = 'JST_PH_S{pincount}B-PH-K_{pincount:02}x2.00mm_Angled'.format(pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("http://www.jst-mfg.com/product/pdf/eng/ePH.pdf") kicad_mod.setTags('connector jst ph') # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':-2.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':(pincount-1)*2/2, 'y':7.5}, 'F.Fab') # create Silkscreen kicad_mod.addPolygoneLine([{'x':0.5, 'y':6.25} ,{'x':0.5, 'y':2} ,{'x':(pincount-1)*2-0.5, 'y':2} ,{'x':(pincount-1)*2-0.5, 'y':6.25}] ,'F.SilkS', 0.15) kicad_mod.addPolygoneLine([{'x':-0.9, 'y':0.25}
from kicad_mod import KicadMod, createNumberedPadsTHT # http://www.jst-mfg.com/product/pdf/eng/ePH.pdf pitch = 2.50 for pincount in range(2, 16): jst = "B{pincount:02}B-EH-A".format(pincount=pincount) # Through-hole type shrouded header, Top entry type footprint_name = "JST_EH_" + jst + "_{pincount:02}x2.50mm_Straight".format( pincount=pincount) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST EH series connector, " + jst + ", 2.50mm pitch, top entry") kicad_mod.setTags('connector jst eh top vertical straight') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -3}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 5}, 'F.Fab') drill = 0.9 dia = 1.85 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, { 'x': dia,
for pincount in [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 18, 20, 30]: part = "53780-{0:02}70".format(pincount) desc = "{0:} {1}".format(manu, series) desc += " series connector, {0:.2f}mm pitch, side entry SMT, P/N: {1:}".format( pitch, part) tags = "conn molex panelmate" footprint_name = "{0}-{1}_{2:02}x{3:.2f}mm_{4}".format( manu + "_" + series, part, pincount, pitch, suffix) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) kicad_mod.setAttribute('smd') # set general values kicad_mod.addText('reference', 'REF**', {'x': 0, 'y': -3}, 'F.SilkS') #kicad_mod.addText('user', '%R', {'x':0, 'y':-3}, 'F.Fab') kicad_mod.addText('value', footprint_name, {'x': 0, 'y': 7}, 'F.Fab') #pin pad size pad_w = 0.8 pad_h = 1.9 #component values
A = (pincount - 1) * 1.25 B = 3.25 + pincount * 1.25 #A and B should be 0.1mm resolution A = int(A/0.1) * 0.1 B = int(B/0.1) * 0.1 jst_name = "BM{pincount:02}B-GHS-TBT".format(pincount=pincount) # SMT type shrouded header, footprint_name = "JST_GH_" + jst_name + "_{pincount:02}x1.25mm_Straight".format(pincount=pincount) print(footprint_name) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription("JST GH series connector, " + jst_name + ", top entry type") kicad_mod.setAttribute('smd') kicad_mod.setTags('connector jst GH SMT top vertical entry 1.25mm pitch') kicad_mod.setCenterPos({'x':0, 'y':-3.075}) #draw outline on the F.Fab layer y1 = -4.25 / 2 - 2.25 y2 = y1 + 4.25 kicad_mod.addRectLine( {'x': -B/2,'y': y1}, {'x': B/2,'y': y2}, 'F.Fab', 0.15 )
for f in os.listdir(lib_dir): # File types to copy across allowed = ['.md', '.txt', '.kicad_mod'] if not any([f.lower().endswith(x) for x in allowed]): continue fp_file = os.path.join(lib_dir, f) files.append(fp_file) if f.endswith('.kicad_mod'): try: fp = KicadMod(fp_file) footprints.append(fp) except: print("Error loading {fp}".format(fp=fp_file)) # Skip to the next one continue if args.download: archive_dir = os.path.abspath(os.path.join(args.download, 'footprints')) if not os.path.exists(archive_dir): os.makedirs(archive_dir) archive_file = lib_name + '.pretty.7z'
pitch = 1.25 manu = "Hirose" suffix = "Angled" desc = "Hirose DF13 DS series connector, 1.25mm pitch, side entry PTH" tags = "connector hirose df13 side angled horizontal through thru hole" for pincount in range(2,16): part = "DF13-{pincount:02}P-125DS".format(pincount=pincount) footprint_name = "{0}_{1}_{2:02}x{3:.2f}mm_{4}".format(manu,part,pincount,pitch,suffix) kicad_mod = KicadMod(footprint_name) kicad_mod.setDescription(desc) kicad_mod.setTags(tags) # set general values kicad_mod.addText('reference', 'REF**', {'x':0, 'y':3.5}, 'F.SilkS') kicad_mod.addText('value', footprint_name, {'x':0, 'y':5}, 'F.Fab') drill = 0.6 x_dia = 0.95 y_dia = 1.25 # create pads createNumberedPadsTHT(kicad_mod, pincount, pitch, drill, {'x':x_dia, 'y':y_dia})