Re: gEDA-user: Adding inner polygons to a plane

2011-05-13 Thread Martin Kupec
On Fri, May 13, 2011 at 12:04:39AM +0100, Peter Clifton wrote:
 I can't recall exactly why, but I recall being partly opposed to
 Z-ordering within a single layer before. It might be because it would
 tend to produce big diffs in the PCB file for Z-ordering changes.
Once you were opposing to me, when I was thinking about anti-object
flag, and you persuaded me to do anti-layer instead. Which I now see to
be a better way.

 Assigning numbers is another way to do it, but you do have to ensure
 numbers aren't duplicated, and ideally - don't have gaps.. Hmm..
You could assing polygons number and two polygons with the same number
would connect and with different numbers will keep clearance between
them. This is first step to make net-aware polygons and later tracks.

The first step can be completly independend of nets, just assign them
arbitrary identifier somehow manualy.

Martin Kupec


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-13 Thread Duncan Drennan
 Packages like Altium (which springs to mind), let you define a layer in
 terms of its _negative_, so you split up a power plane by defining the
 _boundary_ between the two (or more) regions.

Negative layers are great for defining planes, especially when you
want complex splits...and they don't need to be rendered.

The solder mask layer is output to gerber files as a negative layer.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-12 Thread Robert Spanton
On Wed, 2011-05-11 at 19:19 +0100, Peter Clifton wrote:
 Perhaps it would be possible to support a flag on the smaller,
 clippiING polygon which makes it bully other polygons away from it,

EAGLE does this by allowing the user to assign a numeric priority to a
polygon.  Polygons with higher priority get to bully.

 but again - it is not clear what to do in the case where two polygons
 with this flag touch each other. (Just short with each other I guess).

I suspect that shorting the polygons together would be the exact
opposite of what the user wanted most of the time.

Perhaps it should create a DRC violation, with neither of the polygons
rendering until the user has fixed the problem (with some kind of visual
indicator to show that this is happening!).  It seems to me that this
would result in the behaviour of least surprise and fewer broken PCBs.

Cheers,

Rob


signature.asc
Description: This is a digitally signed message part


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-12 Thread Peter Clifton
On Thu, 2011-05-12 at 14:05 +0100, Robert Spanton wrote:
 On Wed, 2011-05-11 at 19:19 +0100, Peter Clifton wrote:
  Perhaps it would be possible to support a flag on the smaller,
  clippiING polygon which makes it bully other polygons away from it,
 
 EAGLE does this by allowing the user to assign a numeric priority to a
 polygon.  Polygons with higher priority get to bully.
 
  but again - it is not clear what to do in the case where two polygons
  with this flag touch each other. (Just short with each other I guess).
 
 I suspect that shorting the polygons together would be the exact
 opposite of what the user wanted most of the time.

They would soon learn to stop drawing overlapping polygons though ;)

 Perhaps it should create a DRC violation, with neither of the polygons
 rendering until the user has fixed the problem (with some kind of visual
 indicator to show that this is happening!).  It seems to me that this
 would result in the behaviour of least surprise and fewer broken PCBs.

Shorting is not going to break anyone's PCB - its just one of many ways
we could operate, and would influence how the user draws their
geometry.

Perhaps a simple Z-Order (perhaps file location based) would suffice,
and we could add bring to front / send to back commands somewhere.

Top-most polygons clip and bully lower polygons etc..

I can't recall exactly why, but I recall being partly opposed to
Z-ordering within a single layer before. It might be because it would
tend to produce big diffs in the PCB file for Z-ordering changes.

Assigning numbers is another way to do it, but you do have to ensure
numbers aren't duplicated, and ideally - don't have gaps.. Hmm..

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)


signature.asc
Description: This is a digitally signed message part


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-11 Thread Peter Clifton
On Wed, 2011-05-11 at 19:05 +0100, Thomas Oldbury wrote:
 Sometimes, I want to add an inner polygon area to a plane in PCB. The
area might be a power supply which only has to cover a small area; e.g.
1.8V in a predominantly 3.3V area. However, if I just draw a polygon on
top of the plane, there is no cut-out formed and I get shorts. To do
what I want, I must cut a hole in the main polygon plane, then add my
smaller polygon into it. This is very time consuming and changing the
plane once created is very difficult. Is there a way to get PCB to
support nested polygons?

Not easily. For many power plane cases, these polygons won't actually be
truly nested, so it is impossible to infer which polygon the user wishes
to clip the other.

Perhaps it would be possible to support a flag on the smaller,
clippiING polygon which makes it bully other polygons away from it,
but again - it is not clear what to do in the case where two polygons
with this flag touch each other. (Just short with each other I guess).

This class of object would not be so much a pour, but behave more like
a line or arc segment. I'm guessing we would still need to retain
support for clipping it against pins, pads, lines and arcs.


Shouldn't take that much code to make it happen (I already implemented
a similar feature once before), I just need to hear that there is
general consensus that it is a sensible thing to do.


Often for the kind of inner layers you describe, you want some complex
boolean logic operation to produce the final shape from various sources.

Packages like Altium (which springs to mind), let you define a layer in
terms of its _negative_, so you split up a power plane by defining the
_boundary_ between the two (or more) regions.

Perhaps the way is to go more like mech-CAD systems in defining geometry
based upon a hierarchy of boolean operations.


-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)


signature.asc
Description: This is a digitally signed message part


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-11 Thread Russell Dill
   On Wed, May 11, 2011 at 11:19 AM, Peter Clifton [1]pc...@cam.ac.uk
   wrote:

   On Wed, 2011-05-11 at 19:05 +0100, Thomas Oldbury wrote:
Sometimes, I want to add an inner polygon area to a plane in PCB. The
�  � area might be a power supply which only has to cover a small
   area; e.g.
�  � 1.8V in a predominantly 3.3V area. However, if I just draw a
   polygon on
�  � top of the plane, there is no cut-out formed and I get shorts.
   To do
�  � what I want, I must cut a hole in the main polygon plane, then
   add my
�  � smaller polygon into it. This is very time consuming and
   changing the
�  � plane once created is very difficult. Is there a way to get PCB
   to
�  � support nested polygons?

 Not easily. For many power plane cases, these polygons won't
 actually be
 truly nested, so it is impossible to infer which polygon the user
 wishes
 to clip the other.
 Perhaps it would be possible to support a flag on the smaller,
 clippiING polygon which makes it bully other polygons away from
 it,
 but again - it is not clear what to do in the case where two
 polygons
 with this flag touch each other. (Just short with each other I
 guess).
 This class of object would not be so much a pour, but behave more
 like
 a line or arc segment. I'm guessing we would still need to retain
 support for clipping it against pins, pads, lines and arcs.
 Shouldn't take that much code to make it happen (I already
 implemented
 a similar feature once before), I just need to hear that there is
 general consensus that it is a sensible thing to do.

   I'm more in favor of anti-traces. They'd be equivalent to zero width
   traces, but still push polygon out of the way. Then you wouldn't need a
   nested polygon, just an anti-trace that goes around the border of the
   new region.

References

   1. mailto:pc...@cam.ac.uk


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-11 Thread DJ Delorie

One of the things I suggested for Peter's pours branch is to add
another level of polygon-ness.

To summarize, pours creates two layers of polygons - the layer the
user creates, and the cut up polygons caused by traces, vias, etc.
PCB's core sees the cut up polygons, not the user ones, so things like
DRC and connectivity work properly.

I suggested a layer of cut-lines between the user polys and the cut up
pols, thus:

Level 1: user-editable top-level polygons (whole polys)

Level 2: user-editable traces which slice up polygons (sliced polys)

Level 3: PCB PolygonType objects further cut up by polygon clearances
 etc (sliced  cleared polys) (i.e. what you see in the gerbers)

Level 4: output of polygon dicer (sliced, cleared, and diced polygons)
 (transient, used by exporters)

In this example, the user would create one board-sized whole polygon,
and suitable lines to slice it into the two power regions (3.3v and
1.8v) (sliced polys).  These two sliced polys would then be further
broken up by traces, vias, pins, etc, to make the final board.


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


Re: gEDA-user: Adding inner polygons to a plane

2011-05-11 Thread Peter Clifton
On Wed, 2011-05-11 at 15:17 -0400, DJ Delorie wrote:
 One of the things I suggested for Peter's pours branch is to add
 another level of polygon-ness.
 
 To summarize, pours creates two layers of polygons - the layer the
 user creates, and the cut up polygons caused by traces, vias, etc.
 PCB's core sees the cut up polygons, not the user ones, so things like
 DRC and connectivity work properly.
 
 I suggested a layer of cut-lines between the user polys and the cut up
 pols, thus:
 
 Level 1: user-editable top-level polygons (whole polys)
 
 Level 2: user-editable traces which slice up polygons (sliced polys)

Level 2 is the missing layer, and yes - it would be really neat to have.
I once had an anti-polygons branch, this would be more like
anti-tracks. In general, we probably ought to support anti-anything.

 Level 3: PCB PolygonType objects further cut up by polygon clearances
  etc (sliced  cleared polys) (i.e. what you see in the gerbers)
 
 Level 4: output of polygon dicer (sliced, cleared, and diced polygons)
  (transient, used by exporters)

Dicer? How quaint ;)

GL doesn't use it, PS export doesn't use it. In fact, only gerbv and PNG
really need it I think.

Actually, I suppose being fair - the GL render could use the dicer. It
could also use its Bentley-Ottman rasteriser (stolen from cairo), which
does effectively the same job, but much faster.

For now, it turns out the easiest way to render polygons efficiently is
with masking, then you only need to rasterise each contour (which
doesn't have holes).

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)


signature.asc
Description: This is a digitally signed message part


___
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user