[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: PCB paste layer, revisited.
On Sat, 2007-10-13 at 20:37 -0400, DJ Delorie wrote:
> > > My current workflow is ps -> dxf via converter.
>
> But I'm thinking a whole new syntax for the new item:
>
> MultiPin ( ... )
>
> It will have to be structured, like a resource file (or perhaps we
> switch to that, which would make things easier) because each layer is
> built, like Elements are built from lines, arcs, pads, and pins.
> There are a lot of things you *can* put in, but you won't always put
> them *all* in, and each layer (copper, paste, etc) can be described in
> terms of many shapes, like circles, arcs, polygons, lines, anti-lines,
> etc.
>
And pads for inner layers (and anti-pad clearances) with different
annulus dimensions in the padstack.
> Example syntax:
>
> Element [] (
>
> MultiPin (
> Name("foo");
> Number(45);
> # Layer("topcopper") (
Layer (0) ( <-- use layer numbers to by-pass the trouble of
determining the layer names.
> ElementLine [];
> ElementLine [];
> ElementLine [];
> ElementLine [];
> ElementArc [];
> Polygon [ ... ]
> )
> Layer("plateddrill") (
> Drill [];
> )
> Layer("paste") (
> Polygon [ ... ];
Layer("frontsilk") ( <-- to allow for stuff to be printed.
)
Layer("backsilk") ( <-- see above.
> )
> )
>
> )
>
> But that's just scribbles off the top of my head.
>
> I'm also thinking we'd need to support a "common" pin definition
> somehow, so we can instantiate N pins without describing all N of
> them:
>
> MultiPinDup ("foo" 4500 1500);
>
> Then, I'm thinking we use the same syntax at the element level to add
> copper, mask, anti-mask, silk, keepouts, etc - to the element itself.
>
>
FWIW, I think we could use the attribute mechanism (as in gschem) to
apply/override stuff to a pin/pad on a specified layer.
An example for pin to show the principle:
<example>
Element[0x0 "LED_T1T75" "" "" 0 0 12000 -7000 0 100 0x0]
(
Pin[5000 0 7500 2000 9500 4600 "" "1" 0x01]
(
Attribute("Pad" "2 2000 7500") <-- "layernumber clearance annulus"
)
Pin[-5000 0 7500 2000 9500 4600 "" "2" 0x01]
(
Attribute("Pad" "2 2000 7500")
)
ElementLine[10000 5700 10000 -5700 1000]
ElementArc[0 0 11500 11500 210 300 1000]
)
</example>
I don't know how terrible this would break the file format, the
Attribute is there already.
And I don't know if the parse expects attributes attached to a pin.
Another example for pad:
<example>
Element["" "0603 1.6mm x 0.8mm, 0.3mm terminal" "" "" 0 0 0 0 0 100 ""]
(
Pad[-2953 984 -2953 -984 1968 1600 3168 "1" "1" "square"]
(
Attribute("Paste" "-2953 984 -2953 -984 1768 1800 3168")
)
Pad[2953 984 2953 -984 1968 1600 3168 "2" "2" "square"]
(
Attribute("Paste" "2953 984 2953 -984 1768 1800 3168")
)
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]
)
</example>
Or just add a "Paste" tag to the file format:
<example>
Element["" "0603 1.6mm x 0.8mm, 0.3mm terminal" "" "" 0 0 0 0 0 100 ""]
(
Pad[-2953 984 -2953 -984 1968 1600 3168 "1" "1" "square"]
(
Paste[-2953 984 -2953 -984 1768 1800 3168]
)
Pad[2953 984 2953 -984 1968 1600 3168 "2" "2" "square"]
(
Paste[2953 984 2953 -984 1768 1800 3168]
)
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]
)
</example>
Kind regards,
Bert Timmerman.
> _______________________________________________
> geda-user mailing list
> geda-user@xxxxxxxxxxxxxx
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user