Multiple node connecting

Hello GH community.
I have many constructed points and want to connect them to a point node (see a pic). Is there any shortest way to select all of them and connect to the point node without using the “usual” method which means pulling wires from all of them separately and connecting to the pointed node using the “SHIFT” key on keyboard?
Thanks

One day, I’ll have to release my Smart Merge component.
Here is a fun workaround…
I strongly recommend using the Merge option, which is much easier to edit than grouping spaghetti in a single Point node.

AutoLink

AutoLink.gh (7.4 KB)

17 Likes

Thank you, Teddy,
Looks cool indeed, but in my case, the ordering of constructed points in the final node (point node) is important since I want to interpolate a curve through the points…after using this script the order is messed up…

Unfortunately the order of wires is the same order the linked components were inserted in the canvas, I haven’t found a way to record the order of selection.
I guess in this case we could order the components list by Y coordinate on the canvas, but this would not be very generic.

Nice. I changed it so it works with Entwine.

Thanks

1 Like

Here is my Smart Merge.
In addition to the option to link selected components, it also provides a Graft all inputs and a hide all wires.
And it also integrates a tree branch simplifying similar to Suirify - in other words, it works well for items and lists, while auto-simplifying trees.

If GH2 could somehow implement these options, I would be delighted !

Edit : added Smart Entwine & Smart Trim Tree
magicteddy.gha (24.5 KB)

6 Likes

[quote=“magicteddy, post:6, topic:152313”]
If GH2 could somehow implement these options, I would be delighted!
[/quote] agree 100%.
Thanks 4 ur work.

Can you make a Smart Entwine please?

I’ve edited the assembly above with Smart Entwine. It took more time to do the icon than the component itself :crazy_face:
To simplify things, I went for a behaviour similar to Smart Merge regarding the flatten option. Hope this will suit you.

1 Like

Thanks again. That’s amazing!

This is incredible! Super useful set of components. I humbly request a right-click option for flattening, and simplifying all inputs in addition to being able to graft all when you right click. I will use this all the time.

I think this thread also gets us into a best practices conversation too. IMO shift-clicking multiple components into a single input (like a point parameter) is bad practice, and merge should always be used instead as to manage the inputs properly.

2 Likes

All inputs are automatically simplified in both components. There are very rare cases where you don’t want that to happen, in which situation you can still use native equivalents.
Added Flatten all option on Smart Merge, that was surprisingly easy.
Added Smart Trim Tree to complete my tree components set.

2 Likes

Excellent work!
Thank you very much.

Amazing! Yeah sounds good on the simplification - it should be fairly obvious in those situations. I will mess with your components, super cool!

I was already in process of having a button solution to flatten and graft automatically inspired by your original post. There are many instances where a workflow is conducive to flattening regardless of whether there are multiple or singular inputs. In those cases Trim Tree / Shift Paths just add extra components to the file unnecessarily for my own workflows.

In any case, if anyone is curious, here is a button that does flattening and grafting in the spirit of the multiple connections button. Simplifying is a different process, might get to that later. For me, the C# nodes for this are conducive to making tools for my office so I do not have to distribute a .gha assembly to 400 people ha.

@magicteddy if you put this on Food4Rhino I will add it to our office’s default distribution list, though!

AutoFlatten&Graft.gh (332.1 KB)

4 Likes

@magicteddy - how did you programmatically increase the number of inputs of the entwine component? - I was trying to take a gander at it but all I got was the unhappy red node :frowning:

I’m guessing you are talking about the last input that is automatically added ?

In the component constructor, there is an event handler to add :

public SmartEntwine()
            : base("Smart Entwine", "Smart Entwine", "Flatten and combine a collection of data streams. Cool options available in menu.", "Sets", "Tree")
        {
            this.Params.ParameterSourcesChanged += new GH_ComponentParamServer.ParameterSourcesChangedEventHandler(this.ParamSourcesChanged);
        }

And the associated method that adds an input if necessary - I do my parameter soup here, it could be simpler.

private void ParamSourcesChanged(object sender, GH_ParamServerEventArgs e)
        {
            mysc = 0;
            for (int i = 0; i < this.Params.Input.Count; i++)
            {
                mysc += this.Params.Input[i].SourceCount;
            }

            if (e.ParameterSide == GH_ParameterSide.Input && e.ParameterIndex == this.Params.Input.Count - 1 && mysc > sc)
            {
                IGH_Param iGH_Param = CreateParameter(GH_ParameterSide.Input, this.Params.Input.Count);
                this.Params.RegisterInputParam(iGH_Param);
                this.VariableParameterMaintenance();
                this.Params.OnParametersChanged();

                }

            }


        }

A lot of useful info there :

6 Likes

I think the solutions offered here are way more refined, but for that use case I just use the Telepathy component (Food4Rhino). It was done in 2017 but still works perfectly. And I can just copy and paste senders, and if they have the same name as the receiver they will connect automatically.