Update readme + todo
This commit is contained in:
parent
c38d2b1876
commit
c58cda04b1
BIN
examples/example1.png
Normal file
BIN
examples/example1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
BIN
examples/example2.png
Normal file
BIN
examples/example2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 138 KiB |
@ -1,4 +1,4 @@
|
|||||||
templates:
|
templates: # defining templates to be used later on
|
||||||
- &molex_f
|
- &molex_f
|
||||||
type: Molex KK 254
|
type: Molex KK 254
|
||||||
gender: female
|
gender: female
|
||||||
@ -11,11 +11,11 @@ templates:
|
|||||||
|
|
||||||
nodes:
|
nodes:
|
||||||
X1:
|
X1:
|
||||||
<<: *molex_f
|
<<: *molex_f # copying items from the template
|
||||||
pinout: [GND, +5V, SCL, SDA, MISO, MOSI, SCK, N/C]
|
pinout: [GND, +5V, SCL, SDA, MISO, MOSI, SCK, N/C]
|
||||||
X2:
|
X2:
|
||||||
<<: *molex_f
|
<<: *molex_f
|
||||||
<<: *con_i2c
|
<<: *con_i2c # it is possible to copy from more than one template
|
||||||
X3:
|
X3:
|
||||||
<<: *molex_f
|
<<: *molex_f
|
||||||
<<: *con_i2c
|
<<: *con_i2c
|
||||||
|
|||||||
111
readme.md
111
readme.md
@ -2,17 +2,15 @@
|
|||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
WireViz is a simple yet flexible markup language for documenting cables, wiring harnesses and connector pinouts with beautiful graphical output.
|
WireViz is a simple yet flexible, YAML-based markup language for documenting cables, wiring harnesses and connector pinouts with beautiful graphical output (SVG, PNG, ...) thanks to [GraphViz](https://www.graphviz.org/).
|
||||||
|
|
||||||
It is based on [GraphViz](https://www.graphviz.org/) and designed as an "extension" of it. A parser reads a WireViz file and generates valid GraphViz output, which can instantly be rendered to SVG/PNG.
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* WireViz is fully text based
|
* WireViz input files are fully text based
|
||||||
* No special editor required
|
* No special editor required
|
||||||
* Human readable
|
* Human readable
|
||||||
* Easy version control
|
* Easy version control
|
||||||
* GraphViz-like syntax
|
* YAML syntax
|
||||||
* Understands and uses color abbreviations as per [IEC 60757](https://en.wikipedia.org/wiki/Electronic_color_code#Color_band_system) (black=BK, red=RD, ...)
|
* Understands and uses color abbreviations as per [IEC 60757](https://en.wikipedia.org/wiki/Electronic_color_code#Color_band_system) (black=BK, red=RD, ...)
|
||||||
* Optionally outputs colors as abbreviation (e.g. 'YE'), full name (e.g. 'yellow') or hex value (e.g. '#ffff00'), with choice of UPPER or lower case
|
* Optionally outputs colors as abbreviation (e.g. 'YE'), full name (e.g. 'yellow') or hex value (e.g. '#ffff00'), with choice of UPPER or lower case
|
||||||
* Auto-generates standard wire color schemes and allows custom ones if needed
|
* Auto-generates standard wire color schemes and allows custom ones if needed
|
||||||
@ -27,87 +25,50 @@ _Note_: WireViz is not designed to represent the complete wiring of a system. It
|
|||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
WireViz input file:
|
[WireViz input file](examples/example1.yml):
|
||||||
|
|
||||||
// define connectors
|
nodes:
|
||||||
|
X1:
|
||||||
|
type: D-Sub
|
||||||
|
gender: female
|
||||||
|
pinout: [DCD, RX, TX, DTR, GND, DSR, RTS, CTS, RI]
|
||||||
|
random: yes
|
||||||
|
X2:
|
||||||
|
type: Molex KK 254
|
||||||
|
gender: female
|
||||||
|
pinout: [GND, RX, TX, N/C, OUT, IN]
|
||||||
|
|
||||||
X1 [type="D-Sub",
|
wires:
|
||||||
gender="female",
|
W1:
|
||||||
pin_labels="DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI",
|
mm2: 0.25
|
||||||
]
|
length: 0.2
|
||||||
|
color_code: DIN
|
||||||
|
num_wires: 3
|
||||||
|
shield: true
|
||||||
|
|
||||||
X2 [type="Molex KK 254",
|
connections:
|
||||||
gender="female",
|
- # format: connector->wire->connector
|
||||||
pin_labels="GND|RX|TX|NC|OUT|IN",
|
- X1: [5,2,1]
|
||||||
]
|
- W1: [1,2,3]
|
||||||
|
- X2: [1,3,2]
|
||||||
// define wire
|
- # format: connector->wire or wire->connector
|
||||||
|
- X1: 5
|
||||||
W1 [mm2=0.25,
|
- W1: s
|
||||||
length=0.2,
|
- # loop: connector-connector
|
||||||
num_wires=3,
|
- X2: 5
|
||||||
colors="din47100",
|
- X2: 6
|
||||||
shield=true
|
|
||||||
]
|
|
||||||
|
|
||||||
// define connections
|
|
||||||
|
|
||||||
X1:5 -> W1:1 -> X2:1 // GND
|
|
||||||
X1:2 -> W1:2 -> X2:3 // TX-RX
|
|
||||||
X1:3 -> W1:3 -> X2:2 // RX-TX
|
|
||||||
X1:5 -> W1:S // shield
|
|
||||||
X2:5 -> X2:6 // loop
|
|
||||||
|
|
||||||
Output file:
|
Output file:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
GraphViz code generated by parser:
|
[Example 2](examples/example2.yml)
|
||||||
|
|
||||||
digraph G {
|

|
||||||
graph [rankdir = LR, ranksep=2, fontname = "arial"];
|
|
||||||
edge [arrowhead=none, fontname = "arial"];
|
|
||||||
node [shape=record, style=rounded, fontname = "arial"];
|
|
||||||
|
|
||||||
X1[label="X1 | {D-Sub DE-9|female|9-pin} | {{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 | {Molex KK 254|female|6-pin} | {{<p1>1|<p2>2|<p3>3|<p4>4|<p5>5|<p6>6} | {|||||}}}"]
|
|
||||||
|
|
||||||
{edge[style=bold]
|
|
||||||
X2:p5:w -> X2:p6:w
|
|
||||||
}
|
|
||||||
|
|
||||||
W1[label="W1 | {3x|0.25 mm²| + S|0.2 m} | {{<w1i>1|<w2i>2|<w3i>3|<wsi>} | {WH|BN|GN|Shield} | {<w1o>1|<w2o>2|<w3o>3|<wso>}}}"]
|
|
||||||
|
|
||||||
{edge[style=bold]
|
|
||||||
{edge[color="#000000:#ffffff:#000000"] X1:p5 -> W1:w1i; W1:w1o -> X2:p1}
|
|
||||||
{edge[color="#000000:#666600:#000000"] X1:p2 -> W1:w2i; W1:w2o -> X2:p3}
|
|
||||||
{edge[color="#000000:#00ff00:#000000"] X1:p3 -> W1:w3i; W1:w3o -> X2:p2}
|
|
||||||
{X1:p5 -> W1:wsi; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[Example 2](idea/example2.dot)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
This is very much a work in progress.
|
This is very much a [work in progress](todo.md).
|
||||||
A Python module and test scripts are available. Running the test script will generate GraphViz output.
|
|
||||||
The parser will follow later; contributions are welcome!
|
|
||||||
|
|
||||||
## To do
|
|
||||||
|
|
||||||
* Add simple connectors (ferrules, cable lugs)
|
|
||||||
* no pinout
|
|
||||||
* graphical representation?
|
|
||||||
* Add support for cable splicing (as connector type)
|
|
||||||
* Display picture of connector underneath (including pin 1 location)
|
|
||||||
* Create parser (to make WireViz work as a GraphViz extension)
|
|
||||||
* Automatic BOM generation
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|||||||
9
todo.md
9
todo.md
@ -1,14 +1,23 @@
|
|||||||
|
# To-do:
|
||||||
|
|
||||||
|
* Set global parameters (show_pins, ...) and allow override on per-item basis
|
||||||
* Generic connectors
|
* Generic connectors
|
||||||
* ferrules
|
* ferrules
|
||||||
* blade terminals
|
* blade terminals
|
||||||
* loose ends
|
* loose ends
|
||||||
|
* graphical representation?
|
||||||
|
* Support for cable splicing (as connector type)
|
||||||
* new wire look?
|
* new wire look?
|
||||||
* distinguish between cables and wire bundles
|
* distinguish between cables and wire bundles
|
||||||
* improve nomenclature
|
* improve nomenclature
|
||||||
* terminal (connector, ferrule, blade, loose)
|
* terminal (connector, ferrule, blade, loose)
|
||||||
* link (cable, wire bundle)
|
* link (cable, wire bundle)
|
||||||
* show from/to inside wire node
|
* show from/to inside wire node
|
||||||
|
* Allow custom GraphViz code before/after WireViz-generated code
|
||||||
|
* Display picture of connector underneath (including pin 1 location)
|
||||||
* export to PDF with frame, title block, ...
|
* export to PDF with frame, title block, ...
|
||||||
|
* Automatic BOM generation
|
||||||
|
* Allow
|
||||||
* make "unit tests" for different features/situations
|
* make "unit tests" for different features/situations
|
||||||
* missing parameters
|
* missing parameters
|
||||||
* connection formats
|
* connection formats
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user