From a8b9fc03c72881ce97cecf38dc3fa3215d53dd4c Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Sat, 13 Jun 2020 18:07:49 +0200 Subject: [PATCH] Add shield parameter to BOM generation --- src/wireviz.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/wireviz.py b/src/wireviz.py index 6a220b0..6e007ec 100755 --- a/src/wireviz.py +++ b/src/wireviz.py @@ -284,20 +284,21 @@ class Harness: bom = bom + '\n' # list cables - bom = bom + 'Gauge\tUnit\tWirecount\tTotal length\tQty\tDesignators\n' - bom = bom + '---\t---\t---\t---\t---\t---\n' + bom = bom + 'Gauge\tUnit\tWirecount\tShield\tTotal length\tQty\tDesignators\n' + bom = bom + '---\t---\t---\t---\t---\t---\t---\n' gauges = Counter([v.gauge_and_unit for v in self.cables.values()]) for gauge in gauges.keys(): - wirecounts = Counter([v.wirecount for v in self.cables.values() if v.gauge_and_unit == gauge]) - for wirecount in wirecounts.keys(): + wirecounts_and_shields = Counter([v.wirecount_and_shield for v in self.cables.values() if v.gauge_and_unit == gauge]) + for wirecount_and_shield in wirecounts_and_shields.keys(): # print(' ', gauge, wirecount, ':', wirecounts[wirecount]) - lengths = [v.length for v in self.cables.values() if v.gauge_and_unit == gauge and v.wirecount == wirecount] - designators = [k for k,v in self.cables.items() if v.gauge_and_unit == gauge and v.wirecount == wirecount] + lengths = [v.length for v in self.cables.values() if v.gauge_and_unit == gauge and v.wirecount_and_shield == wirecount_and_shield] + designators = [k for k,v in self.cables.items() if v.gauge_and_unit == gauge and v.wirecount_and_shield == wirecount_and_shield] # print(' ', 'Lengths:', lengths) # print(' ', 'Total lengths:', sum(lengths)) - bom = bom + '{gauge}\t{gauge_unit}\t{wirecount}\t{len_total}\t{qty}\t{designators}\n'.format(gauge=gauge[0], + bom = bom + '{gauge}\t{gauge_unit}\t{wirecount}\t{shield}\t{len_total}\t{qty}\t{designators}\n'.format(gauge=gauge[0], gauge_unit=gauge[1], - wirecount=wirecount, + wirecount=wirecount_and_shield[0], + shield=wirecount_and_shield[1], len_total=round(sum(lengths),3), qty=len(lengths), designators=', '.join(designators)) @@ -367,6 +368,7 @@ class Cable: else: pass # gauge not specified + # for BOM generation self.gauge_and_unit = (self.gauge, self.gauge_unit) @@ -390,12 +392,14 @@ class Cable: self.colors = self.colors * int(m) # cut off excess after looping self.colors = self.colors[:self.wirecount] - else: # wirecount implicit in length of color list if not self.colors: raise Exception('Unknown number of wires. Must specify wirecount or colors (implicit length)') self.wirecount = len(self.colors) + # for BOM generation + self.wirecount_and_shield = (self.wirecount, self.shield) + def connect(self, from_name, from_pin, via_pin, to_name, to_pin): from_pin = int2tuple(from_pin) via_pin = int2tuple(via_pin)