script from DJ to select elements by value in pcb
[hw/altusmetrum] / bin / select-elements-by-value
1 #!/usr/bin/perl
2 # -*- perl -*-
3
4 # In pcb-menu.res, add somewhere:
5 #
6 #    {"grep" a={"G" "<Key>g"} ExecuteFile(/tmp/pcb.grep)}
7
8 $reg = shift;
9 open(B, "board.bom");
10
11 $first = 1;
12
13 open(G, ">/tmp/pcb.grep");
14 print G "Unselect(All)\n";
15
16 while (<B>) {
17     chomp;
18     ($refdes, $value, $footprint, $device, $voltage, $manufacturer, $manufacturer_part_number, $vendor, $vendor_part_number, $qty) = split(':', $_);
19     
20     if ($first || /$reg/i) {
21         print "\033[34m" if $first;
22         printf("%-7s %-24s %-18s %s\n", $value, $manufacturer_part_number, $vendor_part_number, $refdes);
23         print "\033[0m" if $first;
24         if (!$first) {
25             for $r (split(',', $refdes)) {
26                 print G "Select(ElementByName,$r)\n";
27                 $count ++;
28             }
29         }
30     $first = 0;
31     }
32 }
33
34 print "\n\033[32m$count parts\033[0m\n";
35
36 close G;