Improve color looping

This commit is contained in:
Daniel Rojas 2020-05-22 20:22:28 +02:00
parent 81b2cb5423
commit 049d439d7c
2 changed files with 44 additions and 28 deletions

View File

@ -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()

View File

@ -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]
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
n = len(cc)
else: # number of wires was specified
n = num_wires
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]
else: # custom color pallet was specified
if num_wires is None: # assume number of wires = number of items in custom pallet
self.colors = colors
else: # number of wires was specified
# TODO: loop through colors if num_wires > len(colors)
self.colors = colors[:num_wires]
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,6 +270,7 @@ class Cable:
else:
l = []
for i,x in enumerate(self.colors,1):
if x in color_full:
if self.color_mode == 'full':
x = color_full[x].lower()
elif self.color_mode == 'FULL':
@ -284,6 +285,8 @@ class Cable:
x = x.upper()
else:
raise Exception('Unknown color mode')
else:
x = ''
l.append('<w{wireno}>{wirecolor}'.format(wireno=i,wirecolor=x))
s = s + '|'.join(l)
if self.shield == True: