60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
from itertools import chain
|
|
from kicad_sym import read_txt
|
|
from kicad_footprint import *
|
|
|
|
def finger(number, x, y, s):
|
|
width = 0.7
|
|
height = 7.0
|
|
return pad(number, x, y, width, height, s)
|
|
|
|
def number_side(number):
|
|
if number[0] == 'A':
|
|
return side.back
|
|
elif number[0] == 'B':
|
|
return side.front
|
|
|
|
def pads(lines):
|
|
spacing = 1.0
|
|
x = 0.65 + (0.7 / 2.0)
|
|
y = 3.5
|
|
for (number, name, type) in lines:
|
|
yield finger(number, x, y, number_side(number))
|
|
x += spacing
|
|
if '36' in number:
|
|
x += 0.65 + (0.7 / 2) + 6
|
|
|
|
def cut(x0, y0, x1, y1):
|
|
return fp_line(x0, y0, x1, y1, 0.10, "Edge.Cuts")
|
|
|
|
def cuts():
|
|
yield cut(0, -4,
|
|
0, 8)
|
|
yield cut(37, -4,
|
|
37, 8)
|
|
yield cut(37 + 6, -4,
|
|
37 + 6, 8)
|
|
yield cut(37 + 6 + 32, -4,
|
|
37 + 6 + 32, 8)
|
|
|
|
yield cut(0, 8,
|
|
37, 8)
|
|
|
|
yield cut(37, -4,
|
|
37 + 6, -4)
|
|
|
|
yield cut(37 + 6, 8,
|
|
37 + 6 + 32, 8)
|
|
|
|
lines = read_txt("cn1.txt")
|
|
from pprint import pprint
|
|
a_pads = filter(lambda l: 'A' in l[0], lines)
|
|
b_pads = filter(lambda l: 'B' in l[0], lines)
|
|
print(footprint("SATURN_CN1", "SATURN_CN1",
|
|
"\n".join(chain(pads(a_pads),
|
|
pads(b_pads),
|
|
cuts(),
|
|
)
|
|
)
|
|
)
|
|
)
|