Index: trunk/pcblib/parametric/bga =================================================================== --- trunk/pcblib/parametric/bga (revision 7826) +++ trunk/pcblib/parametric/bga (revision 7827) @@ -62,7 +62,12 @@ #@@thumbsize:automap2 3 #@@thumbnum:automap2 1 +#@@param:alphabet the alphabet automap may use for rows; use A..Z if unspecified, else use the letters in this alphabet (in order). List letters without separator, e.g. ABCDEF +#@@preview_args:automap2 3,3,automap=alnum,alphabet=QDT +#@@thumbsize:automap2 3 +#@@thumbnum:automap2 1 + #@@include common.awk awk -f `dirname $0`/common.awk -f `dirname $0`/bga.awk -v "args=$*" -v gen=`basename $0` -v "genfull=$0" Index: trunk/pcblib/parametric/bga.awk =================================================================== --- trunk/pcblib/parametric/bga.awk (revision 7826) +++ trunk/pcblib/parametric/bga.awk (revision 7827) @@ -1,8 +1,8 @@ function pinalpha(p, s) { - if (p >= 26) - s = pinalpha(int(p/26)-1) - return s sprintf("%c", 65 + (p % 26)) + if (p >= alphabet_len) + s = pinalpha(int(p/alphabet_len)-1) + return s sprintf("%s", substr(alphabet, (p % alphabet_len)+1, 1)) } function automap(algo, pivot, revx, revy ,xx,yy) @@ -33,7 +33,7 @@ set_arg(P, "?balldia", "0.35mm") set_arg(P, "?silkmark", "arc") - proc_args(P, "nx,ny,spacing,balldia,silkmark,map,width,height,automap,automap2", "") + proc_args(P, "nx,ny,spacing,balldia,silkmark,map,width,height,automap,automap2,alphabet", "") step = parse_dim(P["spacing"]) @@ -42,6 +42,11 @@ nx = int(P["nx"]) ny = int(P["ny"]) + alphabet = P["alphabet"] + if (alphabet == "") + alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + alphabet_len = length(alphabet) + if (P["map"] != "") { v = split(P["map"], A, ":") x = 0