Skip to content
Snippets Groups Projects
Commit 5c371cd0 authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

wip

parent 22d310f7
Branches
No related tags found
No related merge requests found
Pipeline #2606 passed
File moved
...@@ -19,16 +19,20 @@ This repository holds libraries of components commonly used in fab classes and l ...@@ -19,16 +19,20 @@ This repository holds libraries of components commonly used in fab classes and l
<div style="margin-left:5%;margin-right:5%;"> <div style="margin-left:5%;margin-right:5%;">
<b><a href=https://www.autodesk.com/products/eagle>Eagle</a>:</b> <a href="eagle/fab.lbr">fab.lbr</a> <b><a href=https://gitlab.cba.mit.edu/pub/libraries/tree/master/eagle>Eagle</a></b>
<p> <p>
<b><a href=http://kicad-pcb.org>KiCad</a>:</b> <a href="kicad/fab.mod">fab.mod</a> <a href="kicad/fab.lib">fab.lib</a> <b><a href=https://gitlab.cba.mit.edu/pub/libraries/tree/master/kicad>KiCad</a></b>
<p> <p>
<b><a href=http://kokompe.cba.mit.edu>Kokompe</a>:</b> <a href=kokompe/pcb.cad>pcb.cad</a> <b><a href=https://gitlab.cba.mit.edu/pub/libraries/tree/master/kokompe>Kokompe</a></b>
<p> <p>
<b><a href=https://www.mattkeeter.com/projects/kokopelli>Kokopelli</a>:</b> <a href=kokopelli/pcb.py>pcb.py</a> <b><a href=https://gitlab.cba.mit.edu/pub/libraries/tree/master/kokopelli>Kokopelli</a></b>
<p>
<b><a href=>Python</a></b>
#!/usr/bin/env python
#
# frep.py
# functional representation evaluation
#
# usage
# pcb.py | frep.py [dpi [filename]]
#
# Neil Gershenfeld 10/8/18
# (c) Massachusetts Institute of Technology 2018
#
# This work may be reproduced, modified, distributed,
# performed, and displayed for any purpose, but must
# acknowledge this project. Copyright is retained and
# must be preserved. The work is provided as is; no
# warranty is provided, and users accept all liability.
#
#
# import
#
import json,sys
from numpy import *
from PIL import Image
#
# read input
#
frep = json.load(sys.stdin)
#
# check arguments
#
if (frep['zmin'] != frep['zmax']):
print('> 2D not (yet) supported')
sys.exit()
if (frep['type'] != 'RGB'):
print('types other than RGB not (yet) supported')
sys.exit()
if (len(sys.argv) == 1):
print('output to out.png at 100 DPI')
filename = 'out.png'
dpi = 100
elif (len(sys.argv) == 2):
dpi = sys.argv[1]
filename = 'out.png'
print('output to out.png at '+dpi+'DPI')
dpi = int(dpi)
elif (len(sys.argv) == 3):
dpi = sys.argv[1]
filename = sys.argv[2]
print('output to '+filename+' at '+dpi+' DPI')
dpi = int(dpi)
#
# evaluate
#
print('evaluating ...')
xmin = frep['xmin']
xmax = frep['xmax']
ymin = frep['ymin']
ymax = frep['ymax']
units = float(frep['mm_per_unit'])
delta = (25.4/dpi)/units
x = arange(xmin,xmax,delta)
y = flip(arange(ymin,ymax,delta),0)
X = outer(ones(y.size),x)
Y = outer(y,ones(x.size))
Z = frep['zmin']
f = eval(frep['function'])
#
# construct image
#
m = zeros((y.size,x.size,3),dtype=uint8)
m[:,:,0] = (f & 255)
m[:,:,1] = ((f >> 8) & 255)
m[:,:,2] = ((f >> 16) & 255)
im = Image.fromarray(m,'RGB')
im.save(filename,dpi=[dpi,dpi])
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment