From 8405b06d2f7287b248391bd1b338392cf3e3edb6 Mon Sep 17 00:00:00 2001 From: Marco Massarelli Date: Wed, 10 May 2023 14:16:44 -0400 Subject: [PATCH] Add known working diode footprint --- ergogen/footprints/ diode.js | 85 ++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 ergogen/footprints/ diode.js diff --git a/ergogen/footprints/ diode.js b/ergogen/footprints/ diode.js new file mode 100644 index 0000000..dc290ee --- /dev/null +++ b/ergogen/footprints/ diode.js @@ -0,0 +1,85 @@ +module.exports = { + params: { + designator: 'D', + from: undefined, + to: undefined, + smd: true, + tht: true, + side: 'both' + }, + body: p => { + + const header = ` + + (module ComboDiode (layer F.Cu) (tedit 5B24D78E) + + + ${p.at /* parametric position */} + + ${'' /* footprint reference */} + (fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) + (fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) + ` + const symbol_f = ` + ${''/* diode symbols */} + (fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1)) + ` + const symbol_b = ` + (fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1)) + (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1)) + (fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1)) + ` + + const smd_f = ` + ${''/* SMD pads on both sides */} + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to.str}) + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from.str}) + ` + const smd_b = ` + (pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from.str}) + (pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to.str}) + ` + const tht = ` + ${''/* THT terminals */} + (pad 1 thru_hole rect (at -3.81 0 ${p.rot}) (size 1.778 1.778) (drill 0.9906) (layers *.Cu *.Mask) ${p.to.str}) + (pad 2 thru_hole circle (at 3.81 0 ${p.rot}) (size 1.905 1.905) (drill 0.9906) (layers *.Cu *.Mask) ${p.from.str}) + ` + const end = ` + ) + + ` + let final = header; + if (p.side == 'both' || p.side == 'F') { + final += symbol_f; + } + if (p.side == 'both' || p.side == 'B') { + final += symbol_b; + } + if (p.smd) { + if (p.side == 'both') { + final += smd_f; + final += smd_b; + } else if (p.side == 'F') { + final += smd_f; + } else if (p.side == 'B') { + final += smd_b; + } + } + if (p.tht) { + final += tht; + } + final += end; + return final; + + } +} \ No newline at end of file