#!/bin/sh PATH=$PATH:/home/qi/cae-tools/cameo PATH=$PATH:/home/qi/cae-tools/gp2rml # # Parameters: # # NAME KiCad project name, required # X0, Y0 lower left corner of raw board, default: 0mm 0mm # X, Y position in array, default: 0 0 # XN, YN number of boards in X/Y direction, default: 1 1 # Z0 tool height when in contact with the surface # ROT board rotation, default: 0 degrees # DRILL drill diameter range, default: 13mil,14mil # MILL_IN diameter of mill for work inside the board, default: 35mil # MILL_OUT diameter of mill for board edge, default: 35mil # BOARD_Z board tickness, default: 0.8 mm # ANY set to "any" to use all remaining paths for milling, # irrespective of tool size. Default: unset / empty string. # CLEARANCE tool clearance above PCB surface, default: 2mm # while [ "$1" ]; do eval "$1" shift done if ! [ "$NAME" ]; then echo "NAME is required" 1>&2 exit 1 fi : ${X0:=0} ${Y0:=0} : ${X:=0} ${Y:=0} : ${XN:=1} ${YN:=1} : ${Z0:=-57.4} : ${DRILL:="13mil 14mil"} : ${MILL_IN:=35mil} : ${MILL_OUT:=35mil} : ${BOARD_Z:=0.8mm} : ${CLEARANCE:=2mm} rot= if [ "$ROT" ]; then rot="rotate $ROT" fi edges=$NAME.gp [ -r "$edges" ] || edges= for n in PCB_Edges.gbr Edge_Cuts.gbr Edge_Cuts.pho Edge.Cuts.gm1; do if [ -r "../$NAME-$n" ]; then edges=../$NAME-$n break fi done if [ ! "$edges" ]; then echo "no edges file found" 1>&2 exit 1 fi write=write yi=0 while [ $yi -lt $YN ]; do xi=0 while [ $xi -lt $XN ]; do cameo <mill.rml || exit gp2rml $CLEARANCE 0.1 0.5 drill.gp >drill.rml || exit cat <Makefile.mkmk SPOOL=/home/moko/svn.openmoko.org/developers/werner/cncmap/spool/spool CNGT=/home/qi/cae-tools/cngt/cngt .PHONY: mill drill cng plot dplot mill: PORT=/dev/ttyUSB0 \$(SPOOL) mill.rml drill: PORT=/dev/ttyUSB0 \$(SPOOL) drill.rml cng: \$(CNGT) $Z0 20 mill.gp plot: echo 'set size ratio -1; \ plot "drill.gp" with points, "mill.gp" with lines' | \\ gnuplot -persist dplot: echo 'set size ratio -1; \ plot "< sed /^\$\$/d drill.gp" with linespoints' | \\ gnuplot -persist clean:: rm -f mill.gp mill.rml drill.gp drill.rml EOF