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@moria.seul.org > http://www.seul.org/cgi-bin/mailman/listinfo/geda-user _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user