Add ability to define loops on connectors
This commit is contained in:
parent
59816cfb6d
commit
075d9ed9db
@ -5,7 +5,13 @@ digraph G {
|
|||||||
|
|
||||||
|
|
||||||
X1[label="X1 | {{DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI} | {<p1>1|<p2>2|<p3>3|<p4>4|<p5>5|<p6>6|<p7>7|<p8>8|<p9>9}}}"]
|
X1[label="X1 | {{DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI} | {<p1>1|<p2>2|<p3>3|<p4>4|<p5>5|<p6>6|<p7>7|<p8>8|<p9>9}}}"]
|
||||||
|
|
||||||
X2[label="X2 | {{<p1>1|<p2>2|<p3>3|<p4>4|<p5>5|<p6>6} | {|||||}}}"]
|
X2[label="X2 | {{<p1>1|<p2>2|<p3>3|<p4>4|<p5>5|<p6>6} | {|||||}}}"]
|
||||||
|
|
||||||
|
{edge[style=bold]
|
||||||
|
X2:p5:w -> X2:p6:w
|
||||||
|
}
|
||||||
|
|
||||||
W1[label="W1 | {{<w1i>1|<w2i>2|<w3i>3|<w4i>4} | {WH|BN|GN|Shield} | {<w1o>1|<w2o>2|<w3o>3|<w4o>4}}}"]
|
W1[label="W1 | {{<w1i>1|<w2i>2|<w3i>3|<w4i>4} | {WH|BN|GN|Shield} | {<w1o>1|<w2o>2|<w3o>3|<w4o>4}}}"]
|
||||||
|
|
||||||
{edge[style=bold]
|
{edge[style=bold]
|
||||||
|
|||||||
@ -3,13 +3,12 @@ import wireviz
|
|||||||
PINOUT_SERIAL = ('DCD','RX','TX','DTR','GND','DSR','RTS','CTS','RI')
|
PINOUT_SERIAL = ('DCD','RX','TX','DTR','GND','DSR','RTS','CTS','RI')
|
||||||
COLORS_WEIRD = ("infrared","ultraviolet","transparent","invisible")
|
COLORS_WEIRD = ("infrared","ultraviolet","transparent","invisible")
|
||||||
|
|
||||||
|
# example 1
|
||||||
X1 = wireviz.Node("X1", pinout=PINOUT_SERIAL, ports_right=True)
|
X1 = wireviz.Node("X1", pinout=PINOUT_SERIAL, ports_right=True)
|
||||||
X2 = wireviz.Node("X2", num_pins=6, ports_left=True)
|
X2 = wireviz.Node("X2", num_pins=6, ports_left=True)
|
||||||
|
|
||||||
W1 = wireviz.Cable("W1", num_wires=3, color_code="DIN", shield=True)
|
W1 = wireviz.Cable("W1", num_wires=3, color_code="DIN", shield=True)
|
||||||
|
|
||||||
W1.connect(X1,(2,3,5),(1,2,3),X2,(1,3,2))
|
W1.connect(X1,(2,3,5),(1,2,3),X2,(1,3,2))
|
||||||
|
X2.loop(5,6)
|
||||||
objects = [X1, X2, W1]
|
objects = [X1, X2, W1]
|
||||||
|
|
||||||
with open('output/output.dot','w') as f:
|
with open('output/output.dot','w') as f:
|
||||||
|
|||||||
@ -22,6 +22,7 @@ class Node:
|
|||||||
self.name = name
|
self.name = name
|
||||||
self.ports_left = ports_left
|
self.ports_left = ports_left
|
||||||
self.ports_right = ports_right
|
self.ports_right = ports_right
|
||||||
|
self.loops = []
|
||||||
|
|
||||||
if pinout is None:
|
if pinout is None:
|
||||||
self.pinout = ("",) * num_pins
|
self.pinout = ("",) * num_pins
|
||||||
@ -32,6 +33,18 @@ class Node:
|
|||||||
else:
|
else:
|
||||||
self.pinout = pinout
|
self.pinout = pinout
|
||||||
|
|
||||||
|
def loop(self, from_pin, to_pin, side=None):
|
||||||
|
if self.ports_left == True and self.ports_right == False:
|
||||||
|
loop_side = 'w' # west = left
|
||||||
|
elif self.ports_left == False and self.ports_right == True:
|
||||||
|
loop_side = 'e' # east = right
|
||||||
|
elif self.ports_left == True and self.ports_right == True:
|
||||||
|
if side == None:
|
||||||
|
raise Exception("Must specify side of loop")
|
||||||
|
else:
|
||||||
|
loop_side = side
|
||||||
|
self.loops.append((from_pin, to_pin, loop_side))
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "{} = {} {}".format(self.name, len(self.pinout), self.pinout)
|
return "{} = {} {}".format(self.name, len(self.pinout), self.pinout)
|
||||||
|
|
||||||
@ -65,6 +78,14 @@ class Node:
|
|||||||
|
|
||||||
s = s + '}}"]'
|
s = s + '}}"]'
|
||||||
|
|
||||||
|
# print loops
|
||||||
|
if len(self.loops) > 0:
|
||||||
|
s = s + '\n\n{edge[style=bold]\n'
|
||||||
|
for x in self.loops:
|
||||||
|
s = s + '{name}:p{port_from}:{loop_side} -> {name}:p{port_to}:{loop_side}\n'.format(name=self.name, port_from=x[0], port_to=x[1], loop_side=x[2])
|
||||||
|
s = s + '}'
|
||||||
|
|
||||||
|
s = s + '\n'
|
||||||
return s
|
return s
|
||||||
|
|
||||||
class Cable:
|
class Cable:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user