In Rhino, you can assign names to objects through the Name field in the Properties panel or by using the SetObjectName command.
You can also use the SelName command to select objects from a list of object names.
However, as far as I know, Rhino does not provide a persistent panel that shows the layer structure together with the named objects contained in each layer, while also allowing you to select and rename those objects directly from the same interface.
So I have recently started developing a plugin called Object Outliner.
It displays the objects contained in each layer as a named list, and allows you to select and rename them directly from the panel.
The main idea is to make it possible to manage objects while keeping an overview of the model structure, rather than running SetObjectName or SelName each time.
The plugin is still at the prototype stage, but I personally find it very useful once a model starts to contain many objects.
Do you think something like this would be useful in your workflow?
What do you think?
I’m Japanese, so I used GPT to help translate this post into English.
I do miss an object outline / scene graph along the lines of what Adobe Illustrator and Blender have. A couple related outliner features that would be convenient for my workflow:
Isolate objects on selected layer(s).
Easily move (drag and drop) objects from one layer to another.
I had read that thread before, and it made me realize that I’m definitely not the only person who wants this feature.
However, judging by this exchange, it doesn’t look like an Object Manager will make it into Rhino 9.0. I couldn’t wait any longer, so I decided to start building one myself!
My plugin currently lets you select and rename objects directly from the list, move them between layers and groups using drag and drop, and inspect links to parent objects in Rhino History. Once you start using it, it really does make object management much easier!
It sounds like we’re thinking along exactly the same lines!
Of course, I’ve added an Isolate function too! Both objects and layers have a lightbulb icon for toggling their visibility, and right-clicking the icon lets you isolate them. It’s extremely useful!
Drag and drop is also supported. You can move objects between layers, and dragging an object out of a group removes it from that group. I’ve found this really convenient too!
I have a quick question regarding compatibility: if I open the file on a machine without this plugin installed, I assume only the object names will be modified, right? If I save the file in that state and then reopen it on a machine with the plugin installed, what happens? It would be great if the object layer states are preserved!
Also, for cases where the plugin isn’t available, how about adding a feature that exports the group structure of Object Outliner directly as Rhino layers?
Object Outliner does not create its own object or group structure. It is essentially an alternative interface for viewing and editing Rhino’s existing object names, layers, groups, visibility, lock states, and other native data.
Therefore, if you open the file on a machine without the plugin installed, the object names, layer assignments, and group structure will all remain intact as normal Rhino data. You can edit and save the file there, and when you reopen it on a machine with the plugin installed, Object Outliner will simply read the current Rhino data and rebuild the list.
The only exception is the Favorites feature, which is specific to Object Outliner. Favorites will not be displayed or available on a machine without the plugin, but the file should still open and work normally. This does not affect the objects, layers, or groups in the model.
The groups shown in Object Outliner are native Rhino groups as well, so there should be no need to export the group structure as layers for compatibility.
It may be helpful to think of Object Outliner not as adding a new proprietary structure to the model, but as providing a more convenient way to view and manage information that already exists in Rhino.
Exactly. That’s why it is even less understandable why McNeel has never done this and why so many people object to the idea (although they might just be very vocal, which is always the problem in forums like these).
I can’t wait to try it out. If you need any help beta testing, translating and finding UX issues, I can help you if you need.
This could be really useful in my workflow. I’m wondering if this plug-in could also help manage block definitions. There is already a Block Definitions Manager, but it’s not connected to layers or visibility, and there’s no good way to organize it properly. I’m currently working on something similar, but I haven’t found a clean solution yet. I’d be happy to discuss it with you if you’re interested!
I also think that all the necessary information is already there in Rhino, and simply making it possible to view and manage it all from one place would make a big difference.
Thank you for offering to help with beta testing, translations, and UX feedback! I haven’t decided yet whether I’ll run a beta test, but if I do, I’d be very happy to take you up on your offer!
Thank you! I’m actually thinking about the same question—how block definitions and their internal objects should be represented in Object Outliner.
The relationship between definition objects, their layers, and block instances makes this quite challenging. I’d definitely be interested in hearing more about your workflow and what you’re currently working on.
I’ll send you a DM so we can discuss it in more detail!
I saw your DM, but I’m replying here because it might also interest other people.
For context, I’m working on a web-based 3D viewer tailored for production and workshop workflows in the construction engineering field. It includes project management features, Rhino data extraction, measurement tools, exploded views, and more.
In this context, working with blocks is essential because the same parts are often repeated many times in a single file as block instances. Blocks also provide useful metadata, such as descriptions and URLs, which I use to easily share information between the engineering team and the workshop team.
I reconstruct a block tree similar to Rhino’s, but with additional features such as hide/isolate (similar to layers). I also provide a separate layer panel. Block instances are automatically detected, counted, and grouped in the block tree to avoid clutter—for example, having 150 M8×50 bolts polluting the hierarchy.
The application is currently in beta testing within one company. Designers and engineers have found it very useful, but the block-based viewer has also proven especially valuable for the workshop team. They use it as a PWA on iPads, where they can tap blocks to select, isolate, or drill down into nested sub-blocks. This makes it much easier to understand assemblies and the relationships between components.
A block-based tree could also be extended into a group-based tree. I’m considering adding support for groups alongside blocks, as they can be useful for organizing parts or blocks together without necessarily defining them as an assembly. In other words, they allow you to express logical groupings without implying that the grouped objects function as a single assembly.
My work isn’t directly focused on Rhino’s object management, but I’ve had exactly the same thoughts and observations as you.
Hi! I quickly tested it this morning, and I have a few remarks:
My Rhino is in dark mode, and the layer tree text is completely black, so I can’t see anything.
Sometimes I experience serious lag when selecting or renaming objects very quickly (this shouldn’t happen often in real life, I was really trying to break your script with 4 to 6 clicks per second). It might be related to the cache or the way you parse document objects ?
Very cool stuff indeed! I have around 39,000 objects, and it seems to work well. I’ll test it more over the next week and give you more feedback!
I just got a chance to try it out and I think I like it. I’ll need to create a new project, I think, to really get the hang of it.
One question. What is the thing just to the left of the light bulb do? It doesn’t seem to affect anything. BTW I’m running in dark mode also and it is difficult to see the item names.
nice job. i’ve been waiting for this a long time. A nice feature to have is to select many objects and give them all a name automatically with an input, then it will give a sequence number automatically so you can have like 50 trees, select one, type “tree” and you get tree00, tree01, tree02, etc. Keep the model organized easily.