[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: PCB paste layer, revisited.
DJ Delorie wrote:
>>> My current workflow is ps -> dxf via converter.
>
> Then ps-bloat will work for you.
Well, it reduces the pain, but it isn't sufficient to make the problem
go away. I could pick a bloat that helps TQFP's (or pick your pad
family) but still be left with hand editing others, like voltage regulators.
>
>>>> That's why multi-pins have paste and mask specified separately from
>>>> copper, for each layer.
>>> So how would all that be specified in the footprint?
>
> There's nothing in there yet - at all.
>
> But I'm thinking a whole new syntax for the new item:
<syntax snip>
Well, I can see that it is general. Its really a whole new footprint
syntax. Rather than dup'ing pins, I think it would be better to define
a pattern for and then instantiate pins. And it might make more sense
to create a new element type that allows more freedom in creating a
block structured syntax. The end result would be a much more general
way of describing a footprint. Being able to cleanly specify keep-outs
(both 2D and 3D) would be a radical improvement.
But... I'm not particularly in the mood to boil the ocean right now. I
want to build robots. To build robots, I need PCB's. To get PCB's, I
need gerbers. To get gerbers, I use pcb. I'm willing to crank out some
code that gets me closer to robots. Getting a working solder stencil
with minimal intervention gets me closer to robots.
I think a simple paste[] directive could be implemented within the
current architecture and syntax of footprints, and be upward compatible
with MultiPin functionality in the future.
So, here is an 0603 from my current library, with Paste directives. It
is 100% equivalent to today's functionality, because the Paste
directives are copy of the Pad directives. Obvious, this is a silly
example, the only reason to use a Paste directive is to get a
*different* paste aperture.
Element["" "0603 1.6mm x 0.8mm, 0.3mm terminal" "" "" 0 0 0 0 0 100 ""]
(
# Generated 13-June-2007 gedasymbols.org two pad footprint
generator
# C = 8 mil
# M = 6 mil
# PL = 2.0mm
# PT = 0.5mm
# PW = 1.0mm
# SO = 8 mil
# SW = 10 mil
Pad[-2953 984 -2953 -984 1968 1600 3168 "1" "1" "square"]
Pad[2953 984 2953 -984 1968 1600 3168 "2" "2" "square"]
Paste[-2953 984 -2953 -984 1968 1600 3168 "1" "1" "square"]
Paste[2953 984 2953 -984 1968 1600 3168 "2" "2" "square"]
ElementLine[-3937 -3268 5237 -3268 1000]
ElementLine[-3937 3268 5237 3268 1000]
ElementLine[5237 -3268 5237 3268 1000]
ElementLine[-5237 -1968 -5237 1968 1000]
ElementArc[-3937 -1968 1300 1300 0 -90 1000]
ElementArc[-3937 1968 1300 1300 0 90 1000]
)
Seems to me that the implementation is something like this:
1) tweak flex and bison to recognize "Paste"
2) clone Pad data structure allocation and manipulation code
3) during parse, tuck away paste information as encountered
4) during parse, if an element is closed without encountering a paste
directive, synthesize paste directives that are copies of the pad
directives. (Preserves upward compatibility with existing footprint.)
5) tweak the printout code to look at the paste data instead of the pad
data.
-dave
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user