Skip to content

Instantly share code, notes, and snippets.

@mcous
Created September 24, 2015 10:49
Show Gist options
  • Save mcous/ef394980a9f0e5634aa4 to your computer and use it in GitHub Desktop.
Save mcous/ef394980a9f0e5634aa4 to your computer and use it in GitHub Desktop.
Generating PCB stackups to use external stylesheets
<!doctype html>
<html>
<head></head>
<body>
<object data="top.svg" type="image/svg+xml"></object>
<object data="bottom.svg" type="image/svg+xml"></object>
</body>
</html>
var fs = require('fs')
var path = require('path')
var gerberToSvg = require('gerber-to-svg')
var pcbStackup = require('pcb-stackup')
var idLayer = require('pcb-stackup/lib/layer-types').identify
// use the test files from pcb-stackup
var gerberPaths = [
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-F_Cu.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-F_Mask.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-F_SilkS.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-F_Paste.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-B_Cu.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-B_Mask.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-B_SilkS.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-B_Paste.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-Edge_Cuts.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup.drl.json'),
path.join(__dirname, './node_modules/pcb-stackup/test/gerbers/board/stackup-NPTH.drl.json')
]
var layers = []
gerberPaths.forEach(function(filename) {
var gerberObj = require(filename)
var layerType = idLayer(filename)
layers.push({type: layerType, svg: gerberObj})
})
// generate stackup
var stackup = pcbStackup(layers, 'stackup')
// add stylesheet
var top = '<?xml-stylesheet href="style.css" type="text/css"?>' + gerberToSvg(stackup.top)
var bottom = '<?xml-stylesheet href="style.css" type="text/css"?>' + gerberToSvg(stackup.bottom)
fs.writeFileSync(path.join(__dirname, 'top.svg'), top)
fs.writeFileSync(path.join(__dirname, 'bottom.svg'), bottom)
.thing {
color: green;
}
.stackup_board-fr4 {
color: dimgrey;
}
.stackup_board-cu {
color: lightgrey;
}
.stackup_board-cf {
color: goldenrod;
}
.stackup_board-sm {
color: darkgreen;
opacity: 0.75;
}
.stackup_board-ss {
color: white;
}
.stackup_board-sp {
color: silver;
}
.stackup_board-out {
color: black;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment