parent
6d62658212
commit
8490dbbda9
@ -0,0 +1,58 @@ |
||||
#!/bin/sh |
||||
|
||||
if test ! $# -eq 2 |
||||
then |
||||
echo "Need two arguments: a board file name and a tab file name" >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
board="$1" |
||||
tab="$2" |
||||
|
||||
if test ! -f "$board" |
||||
then |
||||
echo "Board file $board not found" >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
if test ! -f "$tab" |
||||
then |
||||
echo "Tab file $tab not found" >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
btmp=.tmp.$board |
||||
|
||||
awk -F "[ \t]*[;][ \t]*" -v "outfn=$btmp" ' |
||||
|
||||
BEGIN { sq = "'\''" } |
||||
|
||||
# quote s with single quotes and remove any single quote from it |
||||
# (pcb-rnd action syntax does not have escaping) |
||||
function squote(s) |
||||
{ |
||||
gsub("[" sq "]", ".", s) |
||||
return sq s sq |
||||
} |
||||
|
||||
# ignore comments |
||||
/^[ \t]*#/ { next } |
||||
|
||||
# generate an unselect-query-propset sequence for each line |
||||
(NF > 1) { |
||||
print "Unselect(all)" |
||||
print "query(select, " squote($1) ")" |
||||
for(n = 2; n <= NF; n++) { |
||||
if (split($n, A, "=") == 2) |
||||
print "propset(selection, " squote(A[1]) "," squote(A[2]) ")" |
||||
} |
||||
} |
||||
|
||||
END { |
||||
print "Unselect(all)" |
||||
print "Save(LayoutAs, " squote(outfn) ")" |
||||
} |
||||
|
||||
' < "$tab" | pcb-rnd --gui batch "$board" && mv "$btmp" "$board" |
||||
|
||||
|
@ -0,0 +1,5 @@ |
||||
@.a.footprint == "LEDC2012X80N.lht"; a/xy::jlcpcb::rotate=270; |
||||
@.a.footprint == "RESC1608X55N.lht"; a/xy::jlcpcb::rotate=90; |
||||
@.a.footprint == "CONNECTOR_USB_MICRO-B_C10418.lht"; a/xy::jlcpcb::translate=-1.2mm,0mm; |
||||
@.a.footprint == "CONNECTOR_USB_MICRO-B_C10418.lht"; a/xy::jlcpcb::rotate=270; |
||||
@.a.footprint == "CONNECTOR_USB-A-2.0_RECEPTACLE_C42428.lht"; a/xy::jlcpcb::translate=0mm,-1.7mm; |
Loading…
Reference in new issue