[BUG] Cluster input/output names disappear when creating User Object

Edit: See this video:

I have successfully created a cluster. In the file that I’m working the inputs and outputs appear correctly. However, I have added this cluster as a user object, but when I add the cluster from the ribbon, it doesn’t show the correct names for the inputs and outputs.

Is this expected behaviour?

On top the cluster as it appears when adding it from the ribbon, on bottom the cluster as it appears when I first created the cluster.

Just to add: the cluster seems to kind of work as intended, it updates a bit weird, but anyway, it works. So I’m really confused why when I create a cluster, the names are correctly displayed, but when I add a custom cluster from the ribbon bar, it doesn’t show the input and output names.

Sorry, and another addition, to show I’m doing nothing wrong, it should work:

These screenshots are taken from the cluster that incorrectly displays ‘Relay’ as inputs and outputs.

Not sure if it is intended behavior, but guessing from just the screenshot, you have your cluster inputs and outputs just connected to relays that you have named? I wouldn’t do that. As a rule, inside clusters you always want your inputs and outputs connected to named parameters of the correct type, like:

Only after you have named your parameters connect the cluster inputs and outputs.

That way you get the correct names on the outside of the cluster and if you hover over an input/output you get the correct name and type hint.

Another thing, maybe you just renamed the inputs/outputs on the outside of the cluster and then saved it. That might also cause all the names to reset when saving as user object.

edit: ah, yes, you updated your post. So just as I thought. I wouldn’t use relays. They serve the same purpose as parameters, yet don’t offer functionality like internalize, change wire display and they are not typed. The only thing they have going for them is that they are easy to create. I don’t see their point and would like to disable them. So annoying they are created using the same method as creating a new component. Couldn’t they have made it shift-double click or something?

2 Likes

Ahhh, thanks, I’ll investigate further soon. I followed this guide as it was recommended elsewhere in the forums:
http://wiki.bk.tudelft.nl/toi-pedia/Clusters_and_Hops

I figured that according to the guide I had to add relays to almost every in/output because almost every connection had multiple wires connected to them. So I’m a but confused how to fix that since they clearly state:
"Sometimes one Number Slider or Parameter is used in multiple places in your script. Make sure that the inputs and outputs are only connected to one wire. This can be done easily using a relay. Make sure you also rename the relays with the same name as the input. "

This is exactly what I did :thinking:

Yeah, I would say that is just wrong. Parameters do the same as relays, but don’t have the stupid limitations. It’s definitely the cleaner solution.

Actually I use parameters everywhere in my files. I split everything into sections and use parameters as inputs and outputs for every section. It has completely changed how we build larger files and make them so much easier to read/edit later on.

2 Likes

Thanks, that’s very useful to know.

I changed the relays into Params, but still it refuses to use the correct input/output names. This is driving me mad. This only happens with the custom User Object, so when I add my custom user object from the ribbon bar it keeps showing relay, despite me having changed the relays into params…

Screenshot 2022-02-07 233811

Am I still doing it wrong? The component does work, the data is passed through and the cluster works, it just doesn’t want to show the input/output names, making it unusable.

Also tried to re-create the cluster entirely with the params instead of relays, but it keeps ignoring the names I want it to have:
Screenshot 2022-02-07 235030

I have watched a few more tutorials on clusters on youtube, but it seems I’m doing it right and GH just doesn’t want to display the names correctly.

Here’s a video of what I’m doing and what goes wrong:

So, the bottom line is that there is probably a bug happening in Grasshopper. Well that’s two bugs discovered in two days :slight_smile: (the other one being Merge input names disappearing when the number of inputs change). Both are crippling my work so severely that I can’t go on with two projects until this is solved.

Anyway, the issue is that when a cluster is added as a User Object, and then inserted into the document, the input and output names disappear and change to the ‘type’ of input/output, instead of the ‘name’ of the input/output. This shouldn’t be happening.

Here is a video showing that it initially works, but then breaks when it is turned into a user object, rendering the practicality of making a cluster a user object useless.

Linking topics might help the developers…

[BUG] Custom naming merge inputs? - Grasshopper - McNeel Forum

1 Like

Could anyone please confirm they also have this bug? I also tried renaming the inputs and outputs by double clicking the cluster input and naming it all, but it just all disappears when I make a user object out of it. Here is an example file:
exampletry1.gh (9.2 KB)

The strangest thing is that I opened up a cluster shared by Joseph Oyster and somehow his cluster doesn’t lose the input and output names when turned into a user object, so I’m afraid this might be a new bug.

My results with my own custom cluster:
Screenshot 2022-02-11 225845

Screenshot 2022-02-11 225933

Results with Joseph’s cluster:
Screenshot 2022-02-11 230314

Screenshot 2022-02-11 230246

As you can see, both clusters give a different result. I hope a GH dev sees this and can confirm they are looking into it, I think there are issues with input naming, and not just in this case. The fact that an older GH cluster doesn’t show the same issues makes me think it broke recently.

ps:
Using hops, I did manage to get the input and output names to show up, but hops is a bit impractical for my specific use case, I’d rather use clusters.

It also keeps working when I save my hops component as a User Object.