Hopsan / hopsan

Hopsan is a free multi-domain system simulation tool developed at the division of Fluid and mechatronic systems at Linköping university.
Apache License 2.0
163 stars 44 forks source link

Signal Connection Lines: Improving Density and Clarity of Complex Signal Paths #2061

Open OwenDavid opened 3 years ago

OwenDavid commented 3 years ago

The signal toolbox enables complicated signal routing.

For example, signal sources can be connected to any number of different input ports. Similarly, signal sinks and some arithmetic components allow for unlimited different source inputs. This quickly leads to signal wires being overlaid and a great loss of information in the GUI about the actual signal path.

The GUI has a feature that enables the movement of the signal wires after connection - but only in some cases of icon placement or port input angle. The rules are not clear to the user and are not so intuitive. As we are able to modify the wire placement in some cases more often than not many wires are left overlaid as they approach the component.

An immediate solution is proposed in two new signal components.

*Signal1in3out maps one input port to three outputs

*Signal1in1out maps one input to one output.

SignalSplitters.zip

Whilst trivial from a signal processing viewpoint they enable much greater flexibility in the signal path layout and can greatly enhance clarity.

The first screenshot whilst appearing clear has many overlaid wires. The actual signal path is not easily determined. image

Employing the proposed signal splitter we can reduce the incidence of overlaid paths and clearly demark where the signal is split. I.e. where one output is mapped to more than one input.

image

The 1in1out component forces the wires to take a new path at right angles and we can again improve clarity by moving its position.

image

In summary, we can now combine complex signal routing with clearly laid out signal paths.

SignalSplitters.zip

robbr48 commented 3 years ago

I like the idea. A long time ago I was thinking about making it possible to add connections directly from existing connectors, similar to e.g. Simulink, but that turned out to be too complicated.

Some comments: