Gh's wires editable path

Hallo everybody

I have been using GH for years , its an incrdible tool but since the beginning I have been struggling in order to avoid tangled looking wires to turn the definitions to something very messy.

I think the having a chance to edit the wires path pretty much as we do when we move smooth curve’s control points would allow users to obtain smaller and cleaner definitions.

Maybe it would be even better if wires were behaving as polilines deg 1 with chance to change the path by editing of "control points " ( or maybe better to call them "break points " )

Isn’t there any chance to implement such a behavior maybe in the new RH7 GH ? I am sure that it would be a very appreciated feature by most users.

As an alternative i have some memory of an external plugin that allows wire’s path editing pretty much as described above but i cannot find .

If anyone has some suggestion and in the hope this will become a future GH’s feature I thank All of those who can give me some useful advice.


Until there is a way to change the curves you can double-click a wire to insert a relay. Then move that around.

Yep, almost any GH user I know, is spending a great portion of time in arranging components in a way that wires are not forming a big bulk of spaghettis.

I would also like to see some of these features:

  • Ability to change the type of spline (Bezier, Polyline…)
  • Custom colors per wire
  • Different drawing methods (Dashed, Dot, XXX, ooo …
  • Cablebinder or Databus feature to combine wires
  • Controllable wire positions
  • Vertical flow, maybe different angles for output and
    input ports

It is possible to override the behaviour of wires. I have done it for myself. You can assign a custom color for any wire and change the interpolation method. However it still feels hacky, since you have no menu in explicitly change the color and appearance, which requires to implement a logic which changes the appearance based on other constraints. I for myself decided to give a custom color based on a components x coordinate. The interpolation method changes based on the components distance. A short distance in x direction will automatically change to polyline interpolation (also in order to support vertical flows).

To implement a hack like this you need to identify and replace the static wire drawing method with a custom one. In C# you can replace any member of an object by “modifying” the objects member pointer table. You also need to do this “member” injection before the first wire is drawn, otherwise you break GH. So you cannot apply such a hack from a script component… But as I said, it would be much better to see official “improvement” on this topic…

1 Like

Dash pattern and colour are already used to signal certain wire properties, how will that not conflict with custom assigned properties?

I still feel the only sensible way forward is to have fewer wires, not different wires. So yes, better ways to break an algorithm into smaller parts, bundles which represent multiple wires, and so on.

Now that wires are selectable in grasshopper 2.0, hacking their shapes and colours will be much harder. But I am happy to add official mechanisms for custom code to participate in the drawing.


You could have different presets for different different data dimensions.
Or you could indicate the data dimension other than using a dash pattern, but the intention of a custom appearance (no matter if through an unique color or by a certain dash pattern) is to clearly see which wire goes into which component more easily.

In any case, instead of arranging components, the user should be able to directly organise the wires.

I don’t think an app needs to be that customizable. The intention of my hack was to improve the wire problem a bit. But its not that assigning colors and changing the interpolation method made it so much better. It was actually more fun to figure out on how to do these changes. In the end its always one of the drawbacks of an node editor in general…

I never use the Wire Relay and I consider it better than adding x points to the wire and having to move several points manually.

The group only allows you to put a color and a name, but what if there was another one called module for example that in addition to the same as the group, allows you to put description, other functionality metadata and also draw the wires that connect to components outside the module, that extract each parameter to the right or left edge of the module contour (but without performing any cast operation or whatever the parameters do)? Similar to how you use the Wire Relay, but automatically, inside an advanced group. This way instead of having the spaghetti spread all over the definition, it concentrates between modules, making a plate of haute cuisine spaghetti. If these modules could also be taken as templates, where you start by defining the inputs and outputs, and all the definition inside that module is isolated from the rest, it would help a lot to work in GH with good practices, which at the end of the day is what causes this problem IMO.

It would also be interesting a component that allows to add something like Wire Relay in a column, and through double click collapse all these to a single in/output and expand again with another double click.

Another option would be to give life to the wires using particle systems. If you divide the wires into many particles, also add linear consistency forces and magnetism between all of them, this system tends to minimize the total weight of the wires (not the distance, nor the amount of possible paths, but the amount of tiles you need to pave this floor, that is, the amount of information needed) because they mix with each other and if two nearby wires can share most of its path, they will. The result is branches near the in/outputs and shared wires in the middle of its paths. This would be a very cool way of displaying wires, the organic way, not only because it generates branched shapes, but also because it optimizes (minimizing) the cost of transportation. It’s very easy to implement, give it a try David!

I have recently started using the plugin telepathy (Telepathy | Food4Rhino) to get less messy definitions and standardise my parameter naming it is not exactly what you are looking for but it might help.

  • Cablebinder or Databus feature to combine wires

I also often use Merge or entwine to combine multiple wires at one location and then explode it at the other end, however this is often cumbersome depending on the data structure / Tree /List organization.

Hi Nathan , this is what I have been doing for years but it does not solve the problem , it just reduce it.

what i’d like to see is a full control on the wire’s pattern thus to arrange the definition in a ordinate way

I think that adding a deg 1 like behavior wuth chance to add or “breaking points” if necessary would turn those messy definition in very clean and compact “flowcharts”

David ,

what i’d like to see as a standard user is just the chance to manage wires pattern by dragging on the canvas a variable nr. of " break points" ( nr of points choosen by user for example by right click on the wire “add or remove break point” ) .

this would mean to add on display menu the options ( smooth wires styke (i.e. current one ) or poliline wires style )

no changes to wire colors , line style and so on are on my wishlist…I think that just having control on wire path would mean to compact definitons a lot.

thanks in advance for considering this as a potential add to newer versions


I wonder if there is any chance to see included the chance to change wire degree from smooth cv to polyline like crv and add the possibility to add break points and move control points thus to control their path on the canvas.
I think that this could help to achieve cleaner , more compacted definitions.

I wonder if it could be possible to add the possibility to rotate the components on the canvas +/- 90° same we do with scribble pretty much; again the goal would be optimizing wire path thus to improve readibility and to reduce definitions over all area.

just wondering. thanks in advance