r5749 - in developers/werner/cncmap: . tpath

werner at docs.openmoko.org werner at docs.openmoko.org
Wed Dec 2 22:02:58 CET 2009

Author: werner
Date: 2009-12-02 22:02:58 +0100 (Wed, 02 Dec 2009)
New Revision: 5749

Added some thoughts about tool path generation. For further study.
For now, we limp along with what cam.py can do.

Added: developers/werner/cncmap/tpath/NOTES
--- developers/werner/cncmap/tpath/NOTES	                        (rev 0)
+++ developers/werner/cncmap/tpath/NOTES	2009-12-02 21:02:58 UTC (rev 5749)
@@ -0,0 +1,41 @@
+Tool path generation means to take the strokes defining traces, pads,
+rings, etc., from the Gerber and converting them to strokes defining
+outlines. This is difficult.
+http://web.media.mit.edu/~neilg/fab/dist/cam.py does this kind of work
+for us, but it has a number of limitations:
+- only one strategy for solving conflicts (see below)
+- doesn't detect if connectivity of result doesn't match original
+- can produce unclean cuts (see below)
+- cannot operate completely in batch mode
+- restrictive license (requires permission for commercial use)
+Conflicts arise when we cannot just draw an outline around the traces,
+but have to remove either more or less material. Most of the conflicts
+are trivial, and resolving them doesn't compromise the accuracy of the
+result, e.g., leaving material on the inside of an angle < 180 deg.
+However, if the bit diameter exceeds the minimum clearance, we may
+have a number of places where we have to choose between either cutting
+into the traces or leaving bridges. If the nominal clearance is unknown,
+we may not even know in advance whether a given bit will cause conflicts
+or not.
+cam.py avoids cutting into traces, but doesn't warn if this leaves
+bridges connecting areas not connected in the original.
+Also, in many cases, it would be desirable to accept cutting into traces
+only where observing nominal clearance causes a conflict, but to follow
+the rules in all other cases.
+The only resolution strategy supported by cam.py is to globally reduce
+the nominal bit size, until conflicts disappear. Unfortunately, this
+means that we will cut into all traces, no matter whether they would
+have suitable clearance or not.
+Last but not least, cam.py may leave behind narrow "islands" between
+traces. These islands are not connected to anything, but if they're
+fine enough, they may partially separate from the substrate, bend, and
+thus make unexpected connections. It would be desirable to remove all
+such narrow structures in a cleanup pass.

More information about the commitlog mailing list