Skip to content

Instantly share code, notes, and snippets.

@mcous
Created September 24, 2015 10:49

Revisions

  1. mcous created this gist Sep 24, 2015.
    8 changes: 8 additions & 0 deletions index.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    <!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>
    38 changes: 38 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    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)
    32 changes: 32 additions & 0 deletions style.css
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    .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;
    }