<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Tuke/pcb/point.py</filename>
    </added>
    <added>
      <filename>Tuke/pcb/trace/trace.py</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -20,4 +20,4 @@
 from footprint import Footprint
 from pad import Pad
 from pin import Pin
-#from two_hole import TwoHole
+from point import Point</diff>
      <filename>Tuke/pcb/__init__.py</filename>
    </modified>
    <modified>
      <diff>@@ -20,3 +20,4 @@
 from basetrace import BaseTrace
 
 from airtrace import AirTrace
+from trace import Trace</diff>
      <filename>Tuke/pcb/trace/__init__.py</filename>
    </modified>
    <modified>
      <diff>@@ -31,11 +31,13 @@ stdout.
 &quot;&quot;&quot;
 
 from Tuke import Id
-from Tuke.geometry import translate,V
+from Tuke.units import MIL
+from Tuke.geometry import translate,V,centerof
 from Tuke.sch import Component,Pin,Symbol
 from Tuke.library.footprint import Dil
 
-from Tuke.pcb.trace import AirTrace
+from Tuke.pcb.trace import Trace
+from Tuke.pcb import Point
 
 class Led(Symbol):
     def _init(self):
@@ -45,7 +47,7 @@ class Led(Symbol):
 
 class LedGrid(Component):
     __required__ = ('rows','cols')
-    __defaults__ = {'spacing':0.5}
+    __defaults__ = {'spacing':600 * MIL}
     __version__ = (0,0)
     __baseversion__ = (0,0)
     def _init(self):
@@ -53,33 +55,50 @@ class LedGrid(Component):
         bottom_leds = []
 
         def dt(a,b):
-            t = self.add(AirTrace())
+            t = self.add(Trace(thickness=20 * MIL))
             t.set_endpoints(a,b)
 
         for x in xrange(self.cols):
             prev = None
             for y in xrange(self.rows):
                 l = Led(id=Id('LED%s_%s' % (str(x),str(y))))
-                translate(l,V((x * self.spacing) - ((self.cols - 1) * self.spacing / 2),(y * self.spacing) - ((self.rows - 1) * self.spacing / 2)))
+                translate(l,V((x * self.spacing) - ((self.cols - 1) * self.spacing / 2),
+                              (y * self.spacing) - ((self.rows - 0) * self.spacing / 2)))
                 l = self.add(l)
 
                 if prev is None:
                     top_leds.append(l)
                 else:
-                    dt(prev.cathode,l.anode)
+                    dt(prev.footprint._2,l.footprint._1)
 
                 prev = l
 
             bottom_leds.append(prev)
 
+        # Create offset points for the common anodes and cathodes.
+        top_points = []
+        for t in top_leds:
+            p = Point()
+            translate(p,centerof(t.footprint._1) + V(0,-self.spacing / 2))
+            p = self.add(p)
+            dt(t.footprint._1,p)
+            top_points.append(p)
+        bottom_points = []
+        for t in bottom_leds:
+            p = Point()
+            translate(p,centerof(t.footprint._2) + V(0,self.spacing / 2))
+            p = self.add(p)
+            dt(t.footprint._2,p)
+            bottom_points.append(p)
+
         # Link common anodes and cathodes
         p = None
-        for i in top_leds:
+        for i in top_points:
             if p is not None:
-                dt(p.anode,l.anode)
+                dt(p,i)
             p = i
         p = None
-        for i in bottom_leds:
+        for i in bottom_points:
             if p is not None:
-                dt(p.cathode,i.cathode)
+                dt(p,i)
             p = i </diff>
      <filename>examples/LedGrid/ledgrid.py</filename>
    </modified>
    <modified>
      <diff>@@ -37,6 +37,7 @@ import sys
 from Tuke import rndId
 from Tuke.units import *
 from LedGrid import Led,LedGrid
+from Tuke.export import to_gerber
 
 if __name__ == &quot;__main__&quot;:
     import sys
@@ -44,6 +45,14 @@ if __name__ == &quot;__main__&quot;:
     rows = int(sys.argv[1])
     cols = int(sys.argv[2])
 
-    grid = LedGrid(rows=rows,cols=cols,spacing=0.5 * IN, id=rndId())
+    grid = LedGrid(rows=rows,cols=cols, id=rndId())
 
-    grid.serialize(sys.stdout,full=True),
+    if len(sys.argv) == 4:
+        gerbs = to_gerber(grid)
+
+        for k in gerbs:
+            f = open(sys.argv[3] + '.' + k,'w')
+
+            f.write(gerbs[k])
+    else:
+        grid.serialize(sys.stdout,full=True),</diff>
      <filename>examples/led_grid</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6b27d4f4e63dc9385a1da468826247f48c70b022</id>
    </parent>
  </parents>
  <author>
    <name>Peter Todd</name>
    <email>pete@petertodd.org</email>
  </author>
  <url>http://github.com/retep/tuke/commit/eac8f8560dc9d3d1c7f5a6b05077da1f88c00fbe</url>
  <id>eac8f8560dc9d3d1c7f5a6b05077da1f88c00fbe</id>
  <committed-date>2008-04-28T18:08:30-07:00</committed-date>
  <authored-date>2008-04-28T18:08:30-07:00</authored-date>
  <message>led_grid now outputs traces!

Implemented Trace and Point to achieve this.</message>
  <tree>97302e77a369034cab40e7a1ed6a8d8d79114369</tree>
  <committer>
    <name>Peter Todd</name>
    <email>pete@petertodd.org</email>
  </committer>
</commit>
