mirror of
https://github.com/TECHNOFAB11/ergogen.git
synced 2025-12-11 23:50:05 +01:00
KiCad8 PCB template
This commit is contained in:
parent
fa3f1111bf
commit
1da40bce6f
3 changed files with 140 additions and 0 deletions
|
|
@ -39,6 +39,9 @@
|
|||
"all": true,
|
||||
"include": [
|
||||
"src/**/*.js"
|
||||
],
|
||||
"exclude": [
|
||||
"src/templates/kicad8.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
### Major
|
||||
|
||||
- Un-exclude kicad8 template during default kicad version switch!
|
||||
- Merge, generalize, uniform-ize and externalize footprints!
|
||||
- onnx-like incremental opset versioning
|
||||
- Template for creating them, built-in variables they can use, documentation, external links, etc.
|
||||
|
|
|
|||
136
src/templates/kicad8.js
Normal file
136
src/templates/kicad8.js
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
const m = require('makerjs')
|
||||
|
||||
module.exports = {
|
||||
|
||||
convert_outline: (model, layer) => {
|
||||
const grs = []
|
||||
const xy = val => `${val[0]} ${-val[1]}`
|
||||
m.model.walk(model, {
|
||||
onPath: wp => {
|
||||
const p = wp.pathContext
|
||||
switch (p.type) {
|
||||
case 'line':
|
||||
grs.push(`(gr_line (start ${xy(p.origin)}) (end ${xy(p.end)}) (layer ${layer}) (stroke (width 0.15) (type default)))`)
|
||||
break
|
||||
case 'arc':
|
||||
const arc_center = p.origin
|
||||
const angle_start = p.startAngle > p.endAngle ? p.startAngle - 360 : p.startAngle
|
||||
const angle_diff = Math.abs(p.endAngle - angle_start)
|
||||
const arc_start = m.point.rotate(m.point.add(arc_center, [p.radius, 0]), angle_start, arc_center)
|
||||
const arc_mid = m.point.rotate(arc_start, angle_diff / 2, arc_center)
|
||||
const arc_end = m.point.rotate(arc_start, angle_diff, arc_center)
|
||||
grs.push(`(gr_arc (start ${xy(arc_start)}) (mid ${xy(arc_mid)}) (end ${xy(arc_end)}) (layer ${layer}) (stroke (width 0.15) (type default)))`)
|
||||
break
|
||||
case 'circle':
|
||||
const circle_center = p.origin
|
||||
const circle_end = m.point.add(circle_center, [p.radius, 0])
|
||||
grs.push(`(gr_circle (center ${xy(circle_center)}) (end ${xy(circle_end)}) (layer ${layer}) (stroke (width 0.15) (type default)) (fill none))`)
|
||||
break
|
||||
default:
|
||||
throw new Error(`Can't convert path type "${p.type}" to kicad!`)
|
||||
}
|
||||
}
|
||||
})
|
||||
return grs.join('\n')
|
||||
},
|
||||
|
||||
body: params => {
|
||||
const date_text = new Date().toISOString().slice(0, 10)
|
||||
const net_text = params.nets.join('\n')
|
||||
const footprint_text = params.footprints.join('\n')
|
||||
const outline_text = Object.values(params.outlines).join('\n')
|
||||
|
||||
return `
|
||||
|
||||
(kicad_pcb
|
||||
(version 20240108)
|
||||
(generator "ergogen")
|
||||
(generator_version "4.0.5")
|
||||
(general
|
||||
(thickness 1.6)
|
||||
(legacy_teardrops no)
|
||||
)
|
||||
(paper "A3")
|
||||
(title_block
|
||||
(title "${params.name}")
|
||||
(date "${date_text}")
|
||||
(rev "${params.version}")
|
||||
(company "${params.author}")
|
||||
)
|
||||
|
||||
(layers
|
||||
(0 "F.Cu" signal)
|
||||
(31 "B.Cu" signal)
|
||||
(32 "B.Adhes" user "B.Adhesive")
|
||||
(33 "F.Adhes" user "F.Adhesive")
|
||||
(34 "B.Paste" user)
|
||||
(35 "F.Paste" user)
|
||||
(36 "B.SilkS" user "B.Silkscreen")
|
||||
(37 "F.SilkS" user "F.Silkscreen")
|
||||
(38 "B.Mask" user)
|
||||
(39 "F.Mask" user)
|
||||
(40 "Dwgs.User" user "User.Drawings")
|
||||
(41 "Cmts.User" user "User.Comments")
|
||||
(42 "Eco1.User" user "User.Eco1")
|
||||
(43 "Eco2.User" user "User.Eco2")
|
||||
(44 "Edge.Cuts" user)
|
||||
(45 "Margin" user)
|
||||
(46 "B.CrtYd" user "B.Courtyard")
|
||||
(47 "F.CrtYd" user "F.Courtyard")
|
||||
(48 "B.Fab" user)
|
||||
(49 "F.Fab" user)
|
||||
)
|
||||
|
||||
(setup
|
||||
(pad_to_mask_clearance 0.05)
|
||||
(allow_soldermask_bridges_in_footprints no)
|
||||
(pcbplotparams
|
||||
(layerselection 0x00010fc_ffffffff)
|
||||
(plot_on_all_layers_selection 0x0000000_00000000)
|
||||
(disableapertmacros no)
|
||||
(usegerberextensions no)
|
||||
(usegerberattributes yes)
|
||||
(usegerberadvancedattributes yes)
|
||||
(creategerberjobfile yes)
|
||||
(dashed_line_dash_ratio 12.000000)
|
||||
(dashed_line_gap_ratio 3.000000)
|
||||
(svgprecision 4)
|
||||
(plotframeref no)
|
||||
(viasonmask no)
|
||||
(mode 1)
|
||||
(useauxorigin no)
|
||||
(hpglpennumber 1)
|
||||
(hpglpenspeed 20)
|
||||
(hpglpendiameter 15.000000)
|
||||
(pdf_front_fp_property_popups yes)
|
||||
(pdf_back_fp_property_popups yes)
|
||||
(dxfpolygonmode yes)
|
||||
(dxfimperialunits yes)
|
||||
(dxfusepcbnewfont yes)
|
||||
(psnegative no)
|
||||
(psa4output no)
|
||||
(plotreference yes)
|
||||
(plotvalue yes)
|
||||
(plotfptext yes)
|
||||
(plotinvisibletext no)
|
||||
(sketchpadsonfab no)
|
||||
(subtractmaskfromsilk no)
|
||||
(outputformat 1)
|
||||
(mirror no)
|
||||
(drillshape 1)
|
||||
(scaleselection 1)
|
||||
(outputdirectory "")
|
||||
)
|
||||
)
|
||||
|
||||
${net_text}
|
||||
|
||||
${footprint_text}
|
||||
${outline_text}
|
||||
|
||||
)
|
||||
|
||||
`
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue