script from DJ to select elements by value in pcb
authorBdale Garbee <bdale@gag.com>
Wed, 23 Jan 2013 23:52:25 +0000 (16:52 -0700)
committerBdale Garbee <bdale@gag.com>
Wed, 23 Jan 2013 23:52:25 +0000 (16:52 -0700)
bin/select-elements-by-value [new file with mode: 0755]

diff --git a/bin/select-elements-by-value b/bin/select-elements-by-value
new file mode 100755 (executable)
index 0000000..4de3d00
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+# -*- perl -*-
+
+# In pcb-menu.res, add somewhere:
+#
+#    {"grep" a={"G" "<Key>g"} ExecuteFile(/tmp/pcb.grep)}
+
+$reg = shift;
+open(B, "board.bom");
+
+$first = 1;
+
+open(G, ">/tmp/pcb.grep");
+print G "Unselect(All)\n";
+
+while (<B>) {
+    chomp;
+    ($refdes, $value, $footprint, $device, $voltage, $manufacturer, $manufacturer_part_number, $vendor, $vendor_part_number, $qty) = split(':', $_);
+    
+    if ($first || /$reg/i) {
+       print "\033[34m" if $first;
+       printf("%-7s %-24s %-18s %s\n", $value, $manufacturer_part_number, $vendor_part_number, $refdes);
+       print "\033[0m" if $first;
+       if (!$first) {
+           for $r (split(',', $refdes)) {
+               print G "Select(ElementByName,$r)\n";
+               $count ++;
+           }
+       }
+    $first = 0;
+    }
+}
+
+print "\n\033[32m$count parts\033[0m\n";
+
+close G;