Render PCBs as beautiful, precise SVGs from Gerber / NC drill files
npm install pcb-stackup[![latest][pcb-stackup-latest-badge]][npm]
[![next][pcb-stackup-next-badge]][npm-next]
[![david][pcb-stackup-david-badge]][david]
> Render PCBs as beautiful, precise SVGs from Gerber / NC drill files
Part of the [tracespace][] collection of PCB visualization tools.
[tracespace]: https://github.com/tracespace/tracespace
[npm]: https://www.npmjs.com/package/pcb-stackup
[npm-next]: https://www.npmjs.com/package/pcb-stackup/v/next
[david]: https://david-dm.org/tracespace/tracespace?path=packages/pcb-stackup
[pcb-stackup-latest-badge]: https://flat.badgen.net/npm/v/pcb-stackup
[pcb-stackup-next-badge]: https://flat.badgen.net/npm/v/pcb-stackup/next
[pcb-stackup-david-badge]: https://flat.badgen.net/david/dep/tracespace/tracespace/packages/pcb-stackup
``shell`
npm install --save pcb-stackupor
yarn add pcb-stackup
Or, use a script tag:
`html`
!arduino-uno-top
!arduino-uno-bottom
After you clone and set-up the repository as detailed in development setup, you can run pcb-stackup's example script to render the top and bottom of an Arduino Uno PCB.
`shell`
cd tracespace/packages/pcb-stackup
yarn example
Arduino Uno design files used here under the terms of the Creative Commons Attribution Share-Alike license.
This module is designed to work in Node or in the browser with Browserify or
Webpack. The function takes three parameters: an array of layer objects an
optional settings object and a callback function.
`javascript
const fs = require('fs')
const pcbStackup = require('pcb-stackup')
const fileNames = [
'/path/to/board-F.Cu.gtl',
'/path/to/board-F.Mask.gts',
'/path/to/board-F.SilkS.gto',
'/path/to/board-F.Paste.gtp',
'/path/to/board-B.Cu.gbl',
'/path/to/board-B.Mask.gbs',
'/path/to/board-B.SilkS.gbo',
'/path/to/board-B.Paste.gbp',
'/path/to/board-Edge.Cuts.gm1',
'/path/to/board.drl',
'/path/to/board-NPTH.drl',
]
const layers = fileNames.map(filename => ({
filename,
gerber: fs.createReadStream(filename),
}))
pcbStackup(layers).then(stackup => {
console.log(stackup.top.svg) // logs "
If your board doesn't appear at all or looks weirdly distorted, try rendering it
with the options {maskWithOutline: false} or filling in gaps in the outline{outlineGapFill: 0.011}`.
with e.g.