[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-user: insane new plugin!



I've been daydreaming about having PCB shove wires around for me,
especially when I've routed a bus to a QFP and I need a via in the middle.

It finally dawned on me how I could do this, so I have made a plugin.
In the spirit of open source I hope someone now finishes it for me!

The idea is to start with a 'brush' of some kind that will sweep away
the unwanted wires.  Currently it only supports an initial circle, which
works well for vias, but internally it could support any polygon if you
could think of an interface for it.

The algorithm is:  Intersect the brush with all the wires on the current
layer (it's not looping over layers right now).  Pick one to start with
(ideally the closest to passing through the center) and then pick a
direction to shove it (ideally taking the shortest path around the
obstacle).  Draw new 45/90 wires around the obstacle and remove the old
wire.  Expand the brush to include the new area covered by the moved
wires and repeat as long as you keep hitting stuff.

What it *can* do (I've see at least once):  Work on 45/90 wires that
pass clean through the obstruction.  Work on some any-direction wires
depending on the geometry.  Make gaps in the middle of many-wire busses.
Push on the edge of many-wire busses.  Make big holes (eg want a mounting
hole?  Push a .250" hole into that bus).

What it *can't* do:  If lines turn or otherwise end within the obstruction
it gives up.  That's very fixable, it just means the wire search has to
join up turning segments and handle them as one.

I've seen it make the wrong decision about which way a wire should move,
and that usually leads to everything else being screwy.

You need to give a tiny (sub mil) extra slack if you really want to put
in a via because the 'brush' will be a 36-segment polygon circle that
(just like all other polygon circles PCB makes) is actually slightly
smaller than a real circle.  This could be minimized by using a more
accurate polygon circle or just having the DRC allow for the difference
(it already makes gerbers with those very polygon circles...).

Anyway, give it a try:

	http://ad7gd.net/geda/jostle.c

just move where you want a hole and use ':jostle(123,mil)' or similar.
So if you had a via diameter of 25mil and a minspace of 6 you'd move where
you wanted a via, and type ':jostle(37.5,mil)' and then click to place a
via in the same spot (the .5 avoids the drc error).

I almost forgot to send this.  In my sleep deprived state I'm all giddy
opening up unnecessary holes in the 4 layer board I'm working on...

-- 
Ben Jackson AD7GD
<ben@xxxxxxx>
http://www.ben.com/


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