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