wireviz / WireViz

Easily document cables and wiring harnesses.
GNU General Public License v3.0
4.43k stars 227 forks source link

[feature] Top-down generation of harness #431

Open lutorm opened 3 days ago

lutorm commented 3 days ago

Hi, I find myself in need of designing a pretty complicated harness (for a small aircraft) so I'm looking around for options and came across Wireviz. I couldn't figure out whether there's a distinction between a wire and a bundle in Wireviz:

In my mind, a harness typically has an acyclical graph structure, with copper wires going between the various nodes (generally leaf nodes, but not necessarily in the case of in-line splices) in the graph. A "bundle" to me denotes an edge in this graph. So, a wire from X1 to X2 will traverse several different bundles of different lengths, bundled together with different sets of wires in any of them, on its way between the end points.

To me, the real utility of defining the harness would be to be able to input the harness physical layout, ie the bundle graph with edge lengths, separately define the electrical connections, i.e. the wires, connecting the nodes, along with their color/gauge, and then have the software calculate where the wire goes and how long the wire needs to be. It looks like this is not the problem Wireviz is attempting to solve?

kvid commented 3 days ago

Hi, I find myself in need of designing a pretty complicated harness (for a small aircraft) so I'm looking around for options and came across Wireviz. I couldn't figure out whether there's a distinction between a wire and a bundle in Wireviz:

In my mind, a harness typically has an acyclical graph structure, with copper wires going between the various nodes (generally leaf nodes, but not necessarily in the case of in-line splices) in the graph. A "bundle" to me denotes an edge in this graph. So, a wire from X1 to X2 will traverse several different bundles of different lengths, bundled together with different sets of wires in any of them, on its way between the end points.

To me, the real utility of defining the harness would be to be able to input the harness physical layout, ie the bundle graph with edge lengths, separately define the electrical connections, i.e. the wires, connecting the nodes, along with their color/gauge, and then have the software calculate where the wire goes and how long the wire needs to be. It looks like this is not the problem Wireviz is attempting to solve?

In WireViz the electrical connections are specified for each connection set - which is one or more connections sharing the same sequence of alternating connectors and cables/bundles, i.e. a botton-up approach connecting each segment instead of the top-down approach in your request to connect leaf nodes.

However, WireViz calculates the sum length of wires with equal properties for the BOM.

kvid commented 3 days ago

Maybe the top-down approach in your request can be solved in a preprosessor that produces the WireViz YAML input. Please suggest how you would like to specify the top-level graph and connections.

lutorm commented 3 days ago

Yeah, I'm pondering how I would describe the necessary input data now, so I'll post back if I come up with anything.

Did I understand correctly that it's now possible to put different gauge wires in a bundle? I haven't seen an example of the syntax to do so, though.

kvid commented 3 days ago

[...] Did I understand correctly that it's now possible to put different gauge wires in a bundle? I haven't seen an example of the syntax to do so, though.

No, the current version doesn't support this yet, but this feature is suggested in #268. See my comment in that issue linked in my comment earlier today for how such a feature might look like.

lutorm commented 1 day ago

Ok, I have started working on a routing processor per what I outlined above. (I edited the issue title to reflect this.) In order for the result to be renderable in Wireviz, though, it would be a requirement to support:

If I get this to work, the resulting harness will likely have of order 30 nodes and 500 conductors, so I suspect that the result will be too complicated for graphviz to render in comprehensible fashion. I saw a discussion of an "outline mode" where, rather than rendering all the wires, it just renders a fat line for the bundle along with a table of the wires in the bundle. This would be fully sufficient for my purpose, rendering all the wires will just make a mess, I think.