Created
November 11, 2019 05:52
-
-
Save samt/db077785ddf99e2797c9d65ee49022d4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(module M.2-TEMPLATE (layer F.Cu) (tedit 5DC8ECDB) | |
(descr {{datasheet}}) | |
(tags {{tags}}) | |
(attr smd) | |
(fp_text reference REF** (at 0.05 -5.75) (layer F.SilkS) | |
(effects (font (size 1 1) (thickness 0.12))) | |
) | |
(fp_text value {{name}} (at 0 6) (layer F.Fab) | |
(effects (font (size 1 1) (thickness 0.15))) | |
) | |
(fp_text user "INSERT DIRECTION" (at 0 1.5) (layer Cmts.User) | |
(effects (font (size 0.5 0.5) (thickness 0.1))) | |
) | |
(fp_line (start -4.75 1.75) (end -5 1.25) (layer Dwgs.User) (width 0.1)) | |
(fp_line (start -5.25 1.75) (end -4.75 1.75) (layer Dwgs.User) (width 0.1)) | |
(fp_line (start -5 1.25) (end -5.25 1.75) (layer Dwgs.User) (width 0.1)) | |
(fp_text user "MODULE EDGE" (at 0 -1) (layer Cmts.User) | |
(effects (font (size 0.5 0.5) (thickness 0.1))) | |
) | |
(fp_line (start 8 -0.25) (end -8 -0.25) (layer Dwgs.User) (width 0.1)) | |
(fp_line (start -9.75 4) (end -11.5 4) (layer F.SilkS) (width 0.12)) | |
(fp_line (start 11.5 4) (end 9.75 4) (layer F.SilkS) (width 0.12)) | |
(fp_poly (pts (xy -9.25 -3) (xy -9 -2.5) (xy -9.5 -2.5)) (layer F.SilkS) (width 0.1)) | |
(fp_line (start 11.5 4) (end 11.5 -4.5) (layer F.SilkS) (width 0.12)) | |
(fp_line (start -11.5 4) (end -11.5 -4.5) (layer F.SilkS) (width 0.12)) | |
(fp_line (start 11.75 -5) (end -11.75 -5) (layer F.CrtYd) (width 0.05)) | |
(fp_line (start 11.75 5) (end 11.75 -5) (layer F.CrtYd) (width 0.05)) | |
(fp_line (start -11.75 5) (end 11.75 5) (layer F.CrtYd) (width 0.05)) | |
(fp_line (start -11.75 -5) (end -11.75 5) (layer F.CrtYd) (width 0.05)) | |
(fp_line (start 5.25 1.75) (end 5 1.25) (layer Dwgs.User) (width 0.1)) | |
(fp_line (start 4.75 1.75) (end 5.25 1.75) (layer Dwgs.User) (width 0.1)) | |
(fp_line (start 5 1.25) (end 4.75 1.75) (layer Dwgs.User) (width 0.1)) | |
(fp_text user %R (at 0 0) (layer F.Fab) | |
(effects (font (size 1 1) (thickness 0.15))) | |
) | |
(fp_line (start -11.25 -4.5) (end -11.25 3.75) (layer F.Fab) (width 0.1)) | |
(fp_line (start -9.5 4.5) (end 9.5 4.5) (layer F.Fab) (width 0.1)) | |
(fp_line (start -9.5 -4.25) (end 9.5 -4.25) (layer F.Fab) (width 0.1)) | |
(fp_line (start 11.25 -4.5) (end 11.25 3.75) (layer F.Fab) (width 0.1)) | |
(fp_line (start 11.25 3.75) (end 9.5 3.75) (layer F.Fab) (width 0.1)) | |
(fp_line (start 9.5 3.75) (end 9.5 4.5) (layer F.Fab) (width 0.1)) | |
(fp_line (start -9.5 3.75) (end -9.5 4.5) (layer F.Fab) (width 0.1)) | |
(fp_line (start -9.5 3.75) (end -11.25 3.75) (layer F.Fab) (width 0.1)) | |
(fp_line (start 11.25 -4.5) (end 9.5 -4.5) (layer F.Fab) (width 0.1)) | |
(fp_line (start 9.5 -4.5) (end 9.5 -4.25) (layer F.Fab) (width 0.1)) | |
(fp_line (start -9.5 -4.25) (end -9.5 -4.5) (layer F.Fab) (width 0.1)) | |
(fp_line (start -9.5 -4.5) (end -11.25 -4.5) (layer F.Fab) (width 0.1)) | |
(pad "" np_thru_hole circle (at 10 1.475) (size 1.6 1.6) (drill 1.6) (layers *.Cu *.Mask)) | |
(pad MP smd rect (at 10.35 -3.025) (size 1.2 2.75) (layers F.Cu F.Paste F.Mask)) | |
(pad MP smd rect (at -10.35 -3.025) (size 1.2 2.75) (layers F.Cu F.Paste F.Mask)) | |
(pad "" np_thru_hole circle (at -10 1.475) (size 1.1 1.1) (drill 1.1) (layers *.Cu *.Mask)) | |
(pad 75 smd rect (at 9.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 74 smd rect (at 9 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 73 smd rect (at 8.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 72 smd rect (at 8.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 71 smd rect (at 8.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 70 smd rect (at 8 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 69 smd rect (at 7.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 68 smd rect (at 7.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 67 smd rect (at 7.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 66 smd rect (at 7 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 65 smd rect (at 6.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 64 smd rect (at 6.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 63 smd rect (at 6.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 62 smd rect (at 6 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 61 smd rect (at 5.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 60 smd rect (at 5.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 59 smd rect (at 5.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 58 smd rect (at 5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 57 smd rect (at 4.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 56 smd rect (at 4.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 55 smd rect (at 4.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 54 smd rect (at 4 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 53 smd rect (at 3.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 52 smd rect (at 3.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 51 smd rect (at 3.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 50 smd rect (at 3 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 49 smd rect (at 2.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 48 smd rect (at 2.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 47 smd rect (at 2.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 46 smd rect (at 2 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 45 smd rect (at 1.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 44 smd rect (at 1.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 43 smd rect (at 1.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 42 smd rect (at 1 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 41 smd rect (at 0.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 40 smd rect (at 0.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 39 smd rect (at 0.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 38 smd rect (at 0 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 37 smd rect (at -0.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 36 smd rect (at -0.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 35 smd rect (at -0.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 34 smd rect (at -1 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 33 smd rect (at -1.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 32 smd rect (at -1.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 31 smd rect (at -1.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 30 smd rect (at -2 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 29 smd rect (at -2.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 28 smd rect (at -2.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 27 smd rect (at -2.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 26 smd rect (at -3 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 25 smd rect (at -3.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 24 smd rect (at -3.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 23 smd rect (at -3.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 22 smd rect (at -4 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 21 smd rect (at -4.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 20 smd rect (at -4.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 19 smd rect (at -4.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 18 smd rect (at -5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 17 smd rect (at -5.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 16 smd rect (at -5.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 15 smd rect (at -5.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 14 smd rect (at -6 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 13 smd rect (at -6.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 12 smd rect (at -6.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 11 smd rect (at -6.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 10 smd rect (at -7 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 9 smd rect (at -7.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 8 smd rect (at -7.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 7 smd rect (at -7.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 6 smd rect (at -8 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 5 smd rect (at -8.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 4 smd rect (at -8.5 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 3 smd rect (at -8.75 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 2 smd rect (at -9 4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(pad 1 smd rect (at -9.25 -4) (size 0.3 1.6) (layers F.Cu F.Paste F.Mask)) | |
(model ${KISYS3DMOD}/Connector_TE-Connectivity.3dshapes/{{name}}.wrl | |
(at (xyz 0 0 0)) | |
(scale (xyz 1 1 1)) | |
(rotate (xyz 0 0 0)) | |
) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const DATASHEET_BASE = 'https://www.te.com/commerce/DocumentDelivery/DDEController?Action=showdoc&DocId=Customer+Drawing%7F2199230%7FB2%7Fpdf%7FEnglish%7FENG_CD_2199230_B2.pdf%7F' | |
const KICAD_FOOTPRINT_REPO = '/Users/samt/Repos/kicad/kicad-footprints'; | |
function partToKey(part) { | |
switch (part) { | |
case '2199230-8': return 'A'; | |
case '2199230-3': return 'B'; | |
case '2199230-4': return 'E'; | |
case '1-2199230-5': return 'M'; | |
} | |
} | |
function keyToPins(key) { | |
switch (key) { | |
case 'A': return [8,9,10,11,12,13,14,15]; | |
case 'B': return [12,13,14,15,16,17,18,19]; | |
case 'E': return [24,25,26,27,28,29,30,31]; | |
case 'M': return [59,60,61,62,63,64,65,66]; | |
} | |
} | |
function keyToKeySilk(key) { | |
const line = { | |
A: { even: -7.5, odd: -7.25 }, | |
B: { even: -6.5, odd: -6.25 }, | |
E: { even: -3.5, odd: -3.25 }, | |
M: { even: 5.5, odd: 5.25 } | |
}; | |
return ( // semicolon insertion workaround | |
// Even line | |
` (fp_line (start ${line[key].even} 4) (end ${line[key].even + 1.5} 4) (layer F.SilkS) (width 0.12))\n` + | |
// Odd Line | |
` (fp_line (start ${line[key].odd} -4) (end ${line[key].odd + 1.5} -4) (layer F.SilkS) (width 0.12))\n` | |
); | |
} | |
function partToEntry(part) { | |
const key = partToKey(part); | |
const pins = keyToPins(key); | |
const name = `TE_Bus_M.2_${key}_H4.2_P0.5mm_Horizontal`; | |
const datasheet = DATASHEET_BASE + part; | |
const tags = `M.2 NGFF ${key} KEY`; | |
return { key, name, tags, datasheet, pins }; | |
} | |
const fs = require('fs'); | |
const variations = [ | |
partToEntry('2199230-8'), | |
partToEntry('2199230-3'), | |
partToEntry('2199230-4'), | |
partToEntry('1-2199230-5') | |
]; | |
const tedit = parseInt(Date.now() / 1000).toString(16).toUpperCase(); | |
const basefile = fs.readFileSync('./M.2-TEMPLATE.kicad_mod'); | |
const template = basefile.toString().replace( | |
/\(module\s[^\s]+\s\(layer F.Cu\)\s\(tedit\s[A-F0-9]+\)/g, | |
'(module {{name}} (layer F.Cu) (tedit {{tedit}})' | |
).replace( | |
/\(descr[^\)]+\)/, | |
'(descr "{{desc}}")' | |
).replace( | |
/\(tags[^\)]+\)/, | |
'(tags "{{tags}}")' | |
); | |
for (let v in variations) { | |
let { name, key, tags, pins, datasheet } = variations[v]; | |
let buffer = template | |
.replace(/\{\{name\}\}/g, name) | |
.replace(/\{\{desc\}\}/g, `M.2 connector ${key}-key ${datasheet}`) | |
.replace(/\{\{tags\}\}/g, tags) | |
.replace(/\{\{tedit\}\}/g, tedit) | |
.split('\n'); | |
let result = ''; | |
for (let b in buffer) { | |
let line = buffer[b]; | |
if (line.indexOf('(pad "" np_thru_hole circle (at 10 1.475)') !== -1) { | |
result += keyToKeySilk(key); | |
} | |
let matches = line.match(/pad ([0-9]{1,2})/); | |
if (matches !== null && pins.indexOf(parseInt(matches[1])) !== -1) { | |
// no op | |
} else { | |
result += line + '\n'; | |
} | |
} | |
fs.writeFileSync(`${KICAD_FOOTPRINT_REPO}/Connector_TE-Connectivity.pretty/${name}.kicad_mod`, result); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment