From c3621498a7cf3bac4d77aca5ae22a2bfa0620ade Mon Sep 17 00:00:00 2001 From: "Morrison-Reed Elliot (BEG/EVS1-NA)" Date: Wed, 24 Jun 2020 11:45:05 -0400 Subject: [PATCH] implemented functionality to hide pins that are not connected --- examples/ex07.bom.tsv | 4 ++ examples/ex07.gv | 16 +++++++ examples/ex07.html | 101 ++++++++++++++++++++++++++++++++++++++++++ examples/ex07.png | Bin 0 -> 25066 bytes examples/ex07.svg | 100 +++++++++++++++++++++++++++++++++++++++++ examples/ex07.yml | 25 +++++++++++ examples/readme.md | 6 +++ src/batch.py | 2 +- src/wireviz.py | 16 ++++++- 9 files changed, 268 insertions(+), 2 deletions(-) create mode 100644 examples/ex07.bom.tsv create mode 100644 examples/ex07.gv create mode 100644 examples/ex07.html create mode 100644 examples/ex07.png create mode 100644 examples/ex07.svg create mode 100644 examples/ex07.yml diff --git a/examples/ex07.bom.tsv b/examples/ex07.bom.tsv new file mode 100644 index 0000000..ff4b2d7 --- /dev/null +++ b/examples/ex07.bom.tsv @@ -0,0 +1,4 @@ +Item Qty Unit Designators +Connector, D-Sub, female, 9 pins 1 X2 +Connector, TE 776164-1, female, 35 pins 1 X1 +Cable, 2 x 20 AWG 1 m C1 diff --git a/examples/ex07.gv b/examples/ex07.gv new file mode 100644 index 0000000..80d892d --- /dev/null +++ b/examples/ex07.gv @@ -0,0 +1,16 @@ +graph { +// Graph generated by WireViz +// https://github.com/formatc1702/WireViz + graph [bgcolor=white fontname=arial nodesep=0.33 rankdir=LR ranksep=2] + node [fillcolor=white fontname=arial shape=record style=filled] + edge [fontname=arial style=bold] + X1 [label="X1|{TE 776164-1|female|35-pin}|{{5|6}}"] + X2 [label="X2|{D-Sub|female|9-pin}|{{2|7}}"] + edge [color="#000000:#ffff00:#000000"] + X1:p5r:e -- C1:w1:w + C1:w1:e -- X2:p7l:w + edge [color="#000000:#00ff00:#000000"] + X1:p6r:e -- C1:w2:w + C1:w2:e -- X2:p2l:w + C1 [label=<
C1
2x20 AWG1 m
 
X1:5YEX2:7
X1:6GNX2:2
 
> fillcolor=white margin=0 shape=box style=""] +} diff --git a/examples/ex07.html b/examples/ex07.html new file mode 100644 index 0000000..6544c47 --- /dev/null +++ b/examples/ex07.html @@ -0,0 +1,101 @@ +

Diagram

+ + + + + +%3 + + + +X1 + +X1 + +TE 776164-1 + +female + +35-pin + +5 + +6 + + + +C1 + + +C1 + +2x + +20 AWG + +1 m +  +X1:5 +YE +X2:7 + + + +X1:6 +GN +X2:2 + + + +  + + + +X1:e--C1:w + + + + + + +X1:e--C1:w + + + + + + +X2 + +X2 + +D-Sub + +female + +9-pin + +2 + +7 + + + +C1:e--X2:w + + + + + + +C1:e--X2:w + + + + + + +

Bill of Materials

ItemQtyUnitDesignators
Connector, D-Sub, female, 9 pins1X2
Connector, TE 776164-1, female, 35 pins1X1
Cable, 2 x 20 AWG1mC1
\ No newline at end of file diff --git a/examples/ex07.png b/examples/ex07.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7cb787290da00605acdecad24fc8bcdfb85152 GIT binary patch literal 25066 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 + + + + + +%3 + + + +X1 + +X1 + +TE 776164-1 + +female + +35-pin + +5 + +6 + + + +C1 + + +C1 + +2x + +20 AWG + +1 m +  +X1:5 +YE +X2:7 + + + +X1:6 +GN +X2:2 + + + +  + + + +X1:e--C1:w + + + + + + +X1:e--C1:w + + + + + + +X2 + +X2 + +D-Sub + +female + +9-pin + +2 + +7 + + + +C1:e--X2:w + + + + + + +C1:e--X2:w + + + + + + diff --git a/examples/ex07.yml b/examples/ex07.yml new file mode 100644 index 0000000..064122d --- /dev/null +++ b/examples/ex07.yml @@ -0,0 +1,25 @@ +connectors: + X1: + type: TE 776164-1 + subtype: female + hide_disconnected_pins: True + pincount: 35 + + X2: + type: D-Sub + subtype: female + pincount: 9 + hide_disconnected_pins: True + +cables: + C1: + wirecount: 2 + gauge: 20 AWG + colors: [YE, GN] + length: 1 + +connections: + - + - X1: [5,6] + - C1: [1,2] + - X2: [7,2] \ No newline at end of file diff --git a/examples/readme.md b/examples/readme.md index 5330f73..6ddef6f 100644 --- a/examples/readme.md +++ b/examples/readme.md @@ -35,3 +35,9 @@ [Source](ex06.yml) - [Bill of Materials](ex06.bom.tsv) +## Example 07 +![](ex07.png) + +[Source](ex07.yml) - [Bill of Materials](ex07.bom.tsv) + + diff --git a/src/batch.py b/src/batch.py index 300cd84..56e752c 100644 --- a/src/batch.py +++ b/src/batch.py @@ -2,7 +2,7 @@ import wireviz import os demos = 0 # 2 -examples = 0 # 6 +examples = 0 # 7 tutorials = 7 # 7 if demos: diff --git a/src/wireviz.py b/src/wireviz.py index afe825d..7ae27c9 100755 --- a/src/wireviz.py +++ b/src/wireviz.py @@ -27,6 +27,10 @@ class Harness: def connect(self, from_name, from_pin, via_name, via_pin, to_name, to_pin): self.cables[via_name].connect(from_name, from_pin, via_pin, to_name, to_pin) + if from_name in self.connectors: + self.connectors[from_name].activate_pin(from_pin) + if to_name in self.connectors: + self.connectors[to_name].activate_pin(to_pin) def create_graph(self): dot = Graph() @@ -85,8 +89,10 @@ class Harness: '{}-pin'.format(len(n.pinout)) if n.show_pincount else ''] # p = pinout p = [[],[],[]] - p[1] = list(n.pinout) for i, x in enumerate(n.pinout, 1): + if n.hide_disconnected_pins and not n.visible_pins.get(i, False): + continue + p[1].append(x) if n.ports_left: p[0].append('{portno}'.format(portno=i)) if n.ports_right: @@ -321,11 +327,13 @@ class Connector: color: str = None show_name: bool = True show_pincount: bool = True + hide_disconnected_pins: bool = False def __post_init__(self): self.ports_left = False self.ports_right = False self.loops = [] + self.visible_pins = {} if self.pinout: if self.pincount is not None: @@ -339,6 +347,12 @@ class Connector: def loop(self, from_pin, to_pin): self.loops.append((from_pin, to_pin)) + if self.hide_disconnected_pins: + self.visible_pins[from_pin] = True + self.visible_pins[to_pin] = True + + def activate_pin(self, pin): + self.visible_pins[pin] = True @dataclass class Cable: