diff --git a/cam/Makefile b/cam/Makefile new file mode 100644 index 0000000..00c827b --- /dev/null +++ b/cam/Makefile @@ -0,0 +1,4 @@ +.PHONY: pcb + +pcb: + ./doit >job diff --git a/cam/doit b/cam/doit new file mode 100755 index 0000000..1e24532 --- /dev/null +++ b/cam/doit @@ -0,0 +1,21 @@ +#!/bin/sh -e +DIR=/home/moko/svn.openmoko.org/developers/werner/cncmap +RECT=$DIR/rect/rect +ALIGN=$DIR/align/align +ZMAP=$DIR/zmap/zmap +GP2RML=$DIR/gp2rml/gp2rml + +GEN=${1:-./pcb.pl} + +rdata="12.10 8.90 -55.90 12.30 81.50 -55.80 111.70 11.30 -55.60" +# we need quite a large Z adjustment due to the table's vertical flexibility +Z=-56.30 + +rect=`$RECT $rdata | awk '{$3 = ""; print}'` + +$GEN | + awk '{ if ($3 != "") $3 += '$Z'; print $0; }' | + $ALIGN 0 1 $rect | + # angle, reference (lower left corner), rect + $GP2RML 1.5 0.1 0.1 + # clearance, xy speed, z speed diff --git a/cam/pcb.pl b/cam/pcb.pl new file mode 100755 index 0000000..48a4cc3 --- /dev/null +++ b/cam/pcb.pl @@ -0,0 +1,69 @@ +#!/usr/bin/perl + +$d = 2.54/1000*12; +$r = $d/2+0.1; + + +sub orig +{ + $x0 = $_[0]; + $y0 = $_[1]; +} + + +sub mil +{ + return $_[0]/1000*25.4; +} + + +sub cut +{ + if (defined $x) { + if ($x == $_[0]+$x0 && $y == $_[1]+$y0) { + shift @_; + shift @_; + } else { + print "\n"; + } + } + while (@_) { + $x = shift @_; + $y = shift @_; + ($x, $y) = (-$y, $x); + $x += $x0; + $y += $y0; + print "$x $y $z\n"; + } +} + + +sub one +{ + &cut( + &mil( 0)-$r, &mil( 0)-$r, + &mil( 0)-$r, &mil(620)+$r, + &mil( 810)+$r, &mil(620)+$r, + &mil( 850) , &mil(580)+$r, + &mil( 890)-$r, &mil(620)+$r, + &mil(1300)+$r, &mil(620)+$r, + &mil(1490)+$r, &mil(430)+$r, + &mil(1630)+$r, &mil(430)+$r, + &mil(1630)+$r, &mil(360)+$r, + &mil(1850)-$r, &mil(360)+$r, + &mil(1850)-$r, &mil(430)+$r, + &mil(2150)+$r, &mil(430)+$r, + &mil(2150)+$r, &mil(-70)-$r, + &mil( 890)-$r, &mil(-70)-$r, + &mil( 890)-$r, &mil( 0)-$r, + &mil( 850) , &mil( 40)-$r, + &mil( 810)+$r, &mil( 0)-$r, + &mil( 0)-$r, &mil( 0)-$r); +} + + +$z = -0.8 +# x: corner offset, compensation for rotation, array position +# y: corner offet +&orig(5+16+22*2, 5) +&one;