Commit 5c371cd0 authored by Neil Gershenfeld's avatar Neil Gershenfeld

wip

parent 22d310f7
Pipeline #2606 passed with stage
in 1 second
...@@ -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 source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment