Why can't we set groups in GH? How to scale groups individually?

Here is something I didn’t think would be an issue in Grasshopper. If I have grouped geometry - in my case it is text objects, where I grouped all the 2 digit numbers. Now I want to use them in Grasshopper, but I never realised that the Group parameter doesn’t let you set groups like you can with all other parameters.

Shouldn’t there be options to “Set one group” or “Set multiple groups”?

Why is group different to all other parameters? Is it as I suspect that groups in Grasshopper and groups in Rhino are not the same?

What else can I do to keep the 2 digit number objects together?

ps: I also noticed that Box Edit’s “Transform Each Object Individually” also doesn’t respect groups.

How can I select all numbers and scale them up, but keep them in the same position?

scale-groups.3dm (1.5 MB)

I see you have many Plugins installed, if you have Human you can retrieve the Group Value of any item with Object Properties component (there might -hopefully- be a GH_Rhino_8 component that shows the same info, but I’m not aware of it)

that integer represents the index of the group each item belongs to (if it doesn’t belong to a group, then there is no integer at all)

it looks like out of the 31 items in the Rhino file, 22 belong to a group and the others don’t:

Groups in Rhino and GH are indeed a weird beast :slight_smile:


[edit] just going “full creative mode” here :smiley:

gouped and ungrouped items.gh (12.1 KB)

1 Like

Thanks, that is a good hint to use the Human plugin and get the group indices! I will try that and see if I can use it to group stuff together in Grasshopper.

Its funny how you sometimes come across a seemingly typical use-case in Rhino/GH and it turns out to be surprisingly difficult.

In this case I simply wanted to create numbers 1 - 20 in a 4x5 grid to subtract from an object for 3D printing.

First surprise was that there is no 3D text object in Rhino that is still editable. You can create them, but it creates geometry out of them with no way to edit.

So, okay, let me do it in Grasshopper: GH also natively doesn’t have a good text object. It has one, but that doesn’t have alignment, meaning I cant have the numbers right-aligned. I think I used Nautilus’ component then.

Next thing I just want to lay the numbers out in a grid. Okay, in Rhino I would use “Array”. Alas, there is Array in Grasshopper, but for some dumb reason it only accepts a Rectangle as spacing, meaning you can only have the array go towards the top and right and not right and down as I needed it.

I got it now, but all in all it took about 5 times as long as anticipated for something super simple. I think it would have been quicker to just add the numbers in the Slicer.

1 Like

I feel you… :sweat_smile:

but you can array a positive rectangle negatively! :smiley:

1 Like

Haha, ah yes, the famous McNeel logic!!

“Number of elements” explains perfectly that it can be negative as well. /s

Groups are a selection set and shouldn’t be considered Extended Geometry.

Blocks will get you much further.

You mean groups in Rhino? I use Grouping in Grasshopper a lot to treat multiple geometries as one, which makes it sometimes a lot easier than building elaborate data trees to match the lists of objects.

That is probably why we cannot set groups from Rhino as groups in Grasshopper - they are fundamentally very different. While we can group individual objects together and then transform those groups individually in Grasshopper, if they are just selections in Rhino that is why we cannot group objects and then transform each group individually. The selections will all just combine in Rhino and it will have no concept of a group.

Blocks are great, but have their own complexities. I wouldn’t have thought I need to block individual text objects together just to be able to scale them together.

We were discussing this a bit internally yesterday, due to this post , where groups aren’t handling model objects.

There are few topics.

The actual issue being solved by the group in GH (or wrap / unwrap in human) is a data tree management one. Being able to collapse the items to duplicate or manage attributes downstream.

The group as a Rhino Object has a lot of requests (double click to edit etc), mostly coming from sketchup users. Improving block creation/edit would resolve a lot of these.

Personally i don’t see much reason for groups in Rhino.

2 Likes

Interesting. Yes, I think using Blocks instead of Groups in Rhino is fine. Groups only make sense if you can nest them and for that we would need an Object Manager, because there is no way to “see” the hierarchy of groups until then.

I guess that is why the Block Manager needed to come before any Object Manager. Precisely because blocks are the only way to hierarchically combine objects and we need to be able to see that hierarchy.

ps: still think its very unfortunate we are not getting an Object Manager till at least Rhino 10

Theres plenty of reasons to use groups and not blocks in rhino.

  1. Groups are epheremeral. You only rely on them for creating selection sets. You can therefore be as messy as you want with them and nest as much as you want.

  2. Ctrl+G and Ctrl+Shift+G is much faster for creating these selection sets than making a block, assigning a block name and exploding said block (and purging when no longer required) is.

  3. A block lies on a Layer whereas a group has no Layer. This can make it awkward to Show/Hide and Lock/Unlock layers and kinda forces you to have a seperate layer which is only for the block.

  4. You cannot use Select Via Layer commands of Select Via Geometry commands if stuff is in a block.

-all these coming from an architect’s rhino workflow

5 Likes

Depending on how you’ve created them, you could add a User Text attribute with the number itself. Then the 1 and 8 for 18 both share “18” and Group Content will retrieve the corresponding numbers for you.

In that context, sometimes it would be preferable if I could assign attributes to a data branch rather than the individual objects. This would reduce data management complexities by a lot. If a branch would contain the metadata that is equal for each object in the branch, it would seem to me that computation times could be reduced too. Perhaps that’s something where a Group Wrapper could come in handy.

Similarly, it could be beneficial to group data without having to tie it to geometry, similar to Pancake’s Assoc’s functionality (Associative Array). I would use that to retrieve one Key/Value (e.g. a name) based on which I assign all the other corresponding Key/Value pairs.

I also don’t see why we couldn’t set groups in Grasshopper, even if they were just selections. Why can it not just set the selected objects into the parameter? Bonus would be if nested groups were set as data trees with the same nesting. It would be really cool.

In the end though, we always circle back round to the fact that if you want to make groups more powerful, you need some way to visualize them. Ergo: we need some way to see Objects with their hierarchies, because the viewport cannot show any hierarchy or nesting.