WireViz is a tool for easily documenting cables, wiring harnesses and connector pinouts. It takes plain text, YAML-formatted files as input and produces beautiful graphical output (SVG, PNG, ...) thanks to GraphViz. It handles automatic BOM (Bill of Materials) creation and has a lot of extra features.
Note: WireViz is not designed to represent the complete wiring of a system. Its main aim is to document the construction of individual wires and harnesses.
connectors:
X1:
type: D-Sub
subtype: female
pinlabels: [DCD, RX, TX, DTR, GND, DSR, RTS, CTS, RI]
X2:
type: Molex KK 254
subtype: female
pinlabels: [GND, RX, TX]
cables:
W1:
gauge: 0.25 mm2
length: 0.2
color_code: DIN
wirecount: 3
shield: true
connections:
-
- X1: [5,2,3]
- W1: [1,2,3]
- X2: [1,3,2]
-
- X1: 5
- W1: s
Output file:
Bill of Materials (auto-generated)
Read the syntax description to learn about WireViz' features and how to use them.
See the tutorial page for sample code, as well as the example gallery to see more of what WireViz can do.
WireViz requires Python 3.7 or later.
WireWiz requires GraphViz to be installed in order to work. See the GraphViz download page for OS-specific instructions.
Note: Ubuntu 18.04 LTS users in particular may need to separately install Python 3.7 or above, as that comes with Python 3.6 as the included system Python install.
The latest WireViz release can be downloaded from PyPI with the following command:
pip3 install wireviz
Access to the current state of the development branch can be gained by cloning the repo and installing manually:
git clone <repo url>
cd <working copy>
git checkout dev
pip3 install -e .
If you would like to contribute to this project, make sure you read the contribution guidelines!
$ wireviz ~/path/to/file/mywire.yml
Depending on the options specified, this will output some or all of the following files:
mywire.gv GraphViz output
mywire.svg Wiring diagram as vector image
mywire.png Wiring diagram as raster image
mywire.bom.tsv BOM (bill of materials) as tab-separated text file
mywire.html HTML page with wiring diagram and BOM embedded
Wildcards in the file path are also supported to process multiple files at once, e.g.:
$ wireviz ~/path/to/files/*.yml
To see how to specify the output formats, as well as additional options, run:
$ wireviz --help
Please see the documentation of the build_examples.py
script for info on building the demos, examples and tutorial.
See CHANGELOG.md
This is very much a work in progress. Source code, API, syntax and functionality may change wildly at any time.