dxf? (was: Re: gEDA-user: Making an odd-shaped PCB)
Dave N6NZ
n6nz at arrl.net
Mon Feb 5 22:33:36 EST 2007
Very interesting thread. Taking it a little off topic...
A question that has come up in the past is the idea of importing data
from a mechanical package to get board outline, etc. As it turns out,
I'm working on another project where I have been using dxflib, which is
a C++ dxf reading library.
What would pcb like to see from a .dxf file? I'm thinking that
exporting board outline and mounting holes and nothing else from a dxf
file would be straightforward. How might that be injected into pcb?
One idea: with the code I already have, I could turn out a simple widget
that:
1) looked for a particular layer name in a .dxf file, and ignored the rest.
2) extracted lines, arcs, and circles, and ignored all other drawing
entities and all entity attributes. Presumably, lines and arcs would
form a board outline, and circles would represent drills for mounting
screws.
3) wrote out some cheesy well-formed XML that could be imported into pcb
via something magical, or put through a style sheet to make something
pcb wants, or some such. Alternatively, the program could write
something in a native pcb format. Or somebody that understands the pcb
format could volunteer to do a native back-end.
-dave
DJ Delorie wrote:
>> As my design enters the pre-layout stage, I have a number of stupid
>> newbie questions about PCB.
>
> Hey! You're not a stupid newbie. It takes expirience to be stupid.
>
>> Here is my first stupid newbie question. The board that I need to make
>> is not rectangular, but has an odd shape. (See my previous post about
>> copying someone else's form factor.) How does one capture the odd shape
>> (cutouts and shaved corners) in PCB?
>
> Rename one of your drawing layers to be "outline". Draw the outline
> on that layer, in 10 mil copper lines.
>
>> 1. How are odd-shaped boards generally made? Does the PCB manufacturer
>> make a rectangular board first and then cut/shave/file it down as
>> necessary?
>
> No, what usually happens is your board is made on a big panel with
> other customer's boards. Then, a CNC mill cuts out each board
> according to its outline.
>
> You normally have to tell the fab which gerber is your outline, since
> they normally have a human looking at it and programming the CNC
> router from it.
>
>> 2. In the .pcb file there is a PCB() or PCB[] record specifying the
>> board size. Should I set it to the size that the rectangular board
>> would have had if the answer to Q1 was 'yes', or something different?
>> (A little larger?)
>
> That's the size of the layout area on the screen. By default, this is
> also the size of your board, but if you create an "outline" layer, PCB
> uses that instead.
>
>> 3. In this mailing list traffic I have overheard something called the
>> outline or fab layer. What exactly is it and how does it work? And
>> first of all, are "outline layer" and "fab layer" two different terms
>> for the same thing, or are they two different things?
>
> If you name a layer "outline", PCB treats it different. For example,
> it uses it to draw the outline on the "fab" drawing (the fab page in
> postscript, or the fab gerber file).
>
>> 4. What should the outline layer look like? Is it a set of lines and
>> arcs forming a closed path that encircles the complete shape of the
>> finished PCB, however odd it is, or just the cutouts? This question
>> links back to question 2, and is best illustrated by an example.
>
> It should be a series of 10 mil lines and arcs, the *centerline* of
> which describes the outline. By "outline" I mean any cut edge,
> internal or external. Each FAB has a way of having you tell them
> which drawing/file is the outline, often by tagging one of the gerbers
> or submitting a README file.
>
>> Suppose my finished board needs to look like this:
>>
>> |<---------------------- 7672 mils ----------------------->|
>> A| |B
>> --+-----------------------------------+----------------------+--
>> ^ | | AC mains | ^
>> | | | connector | | 2040 mils
>> | | This line is imaginary <--| | |
>> | | | V
>> 6 | +----------------------+--
>> 5 | |E ^ |F
>> 6 | |<--|-- 2600 mils ---->|
>> 0 | | |
>> | |
>> m | | 4
>> i | | 5
>> l | | 2
>> s | | 0 mils
>> | | |
>> | | | |
>> V | | V
>> --+-----------------------------------+----
>> C| |D
>> |<----------- 5072 mils ----------->|
>>
>> (This is actually a simplification, the real thing is even more complex!)
>>
>> Here's what my question boils down to: should I make the "total board
>> size" as reckoned by PCB 7672 x 6560 mils (7672 mils = AB distance, 6560
>> = AC distance), or something larger?
>
> Either. If you make it larger, you'll be able to, for example, have
> elements whose silkscreen goes beyond the edge of the final board.
>
> If I choose the exact ABxAC
>> dimensions as my PCB size, that'll be the hard boundary of the "world"
>> within which PCB will allow me to draw on any layer, right? In that
>> case how would I draw the whole ACDEFB shape on the outline layer?
>
> You can draw *on* the edge of the world boundary, just not *past* it.
>
>> Or can one have lines on a layer that run exactly along the edge of
>> the drawable universe?
>
> Yes.
>
>> Or should my outline layer depict just the DEF
>> cutout (i.e., consist of just two lines: DE and EF), with all other
>> edges and corners specified implicitly by the "total board size"
>> setting?
>
> No. An outline layer *replaces* the default outline, it does not
> *augment* it.
>
>> 5. Is the fab/outline layer identified by a special magic layer name in
>> PCB? Is it "fab" or "outline" or what?
>
> The outline layer is called "outline". The fab drawing is created by
> PCB as an output layer, as a combination of the outline layer, a drill
> reference, and some other info.
>
>
> _______________________________________________
> geda-user mailing list
> geda-user at moria.seul.org
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
>
>
More information about the geda-user
mailing list