diff --git a/src/example3.py b/src/example3.py index e86f513..b0f75d0 100644 --- a/src/example3.py +++ b/src/example3.py @@ -8,9 +8,22 @@ Harness.add(Node('X2', num_pins=10, ports_left=True)) Harness.add(Cable('W1', num_wires=10, color_code='IEC')) Harness.objects['W1'].connect_all_straight('X1','X2') -Harness.add(Node('X3', num_pins=20, ports_right=True)) -Harness.add(Node('X4', num_pins=20, ports_left=True)) -Harness.add(Cable('W2', num_wires=20, color_code='DIN')) +Harness.add(Node('X3', num_pins=12, ports_right=True)) +Harness.add(Node('X4', num_pins=12, ports_left=True)) +Harness.add(Cable('W2', num_wires=12, color_code='DIN')) Harness.objects['W2'].connect_all_straight('X3','X4') +Harness.add(Node('X5', num_pins=20, ports_right=True)) +Harness.add(Node('X6', num_pins=20, ports_left=True)) +Harness.add(Cable('W3', num_wires=20, colors=('RD','YE','BU'))) +Harness.objects['W3'].connect_all_straight('X5','X6') + +Harness.add(Node('X7', num_pins=6, ports_right=True)) +Harness.add(Node('X8', num_pins=6, ports_left=True)) +Harness.add(Cable('W4', num_wires=6, length=1, mm2=1)) +Harness.objects['W4'].connect_all_straight('X7','X8') + + + + Harness.graphviz() diff --git a/src/wireviz.py b/src/wireviz.py index cf85a0b..f854c0f 100644 --- a/src/wireviz.py +++ b/src/wireviz.py @@ -175,26 +175,26 @@ class Cable: if num_wires is None: raise Exception('Unknown number of wires') else: + if color_code is None: + raise Exception('No color code') # choose color code if color_code not in COLOR_CODES: raise Exception('Unknown color code') else: cc = COLOR_CODES[color_code] - - cc = tuple(cc) - if num_wires <= len(cc): - self.colors = cc[:num_wires] - else: - n = num_wires / len(cc) + 1 - cc = cc * int(n) - self.colors = cc[:num_wires] - + n = num_wires else: # custom color pallet was specified + cc = colors if num_wires is None: # assume number of wires = number of items in custom pallet - self.colors = colors + n = len(cc) else: # number of wires was specified - # TODO: loop through colors if num_wires > len(colors) - self.colors = colors[:num_wires] + n = num_wires + + cc = tuple(cc) + if n > len(cc): + m = num_wires // len(cc) + 1 + cc = cc * int(m) + self.colors = cc[:n] def connect(self, from_name, from_pin, via, to_name, to_pin): if from_pin == 'auto': @@ -270,20 +270,23 @@ class Cable: else: l = [] for i,x in enumerate(self.colors,1): - if self.color_mode == 'full': - x = color_full[x].lower() - elif self.color_mode == 'FULL': - x = color_hex[x].upper() - elif self.color_mode == 'hex': - x = color_hex[x].lower() - elif self.color_mode == 'HEX': - x = color_hex[x].upper() - elif self.color_mode == 'short': - x = x.lower() - elif self.color_mode == 'SHORT': - x = x.upper() + if x in color_full: + if self.color_mode == 'full': + x = color_full[x].lower() + elif self.color_mode == 'FULL': + x = color_hex[x].upper() + elif self.color_mode == 'hex': + x = color_hex[x].lower() + elif self.color_mode == 'HEX': + x = color_hex[x].upper() + elif self.color_mode == 'short': + x = x.lower() + elif self.color_mode == 'SHORT': + x = x.upper() + else: + raise Exception('Unknown color mode') else: - raise Exception('Unknown color mode') + x = '' l.append('{wirecolor}'.format(wireno=i,wirecolor=x)) s = s + '|'.join(l) if self.shield == True: