There is a block definition on layer X, delete it before deleting layer

Also, @pascal @wim @bobmcneel @stevebaer @brian

One (relatively) simple way to fix the issues people seem to be having - When you insert a block, have an option for nesting all of it’s component layers as sub-layers in the new model (for example, if you insert Block X, have rhino put all of the layers for Block X in the layer tree as sublayers to a new layer titled “Block X Subcomponents”). For those that organize their block layers, they can leave that option off and use the current system.

But for people without a lot of blocks, or just getting started, this would greatly simplify the UI and leave them with a clear understanding of why they can’t delete those layers without deleting the block that creates/depends on them.

Here are the two files I used to illustrate the above post - in case anyone wants them.

Block insertion sample.3dm (79.2 KB) Sample Block.3dm (51.0 KB)

Pascal, I may have fixed the above mentioned issue yesterday when I fixed this YT issue
The fix went into 6.x so users will start seeing it in next week’s V7 WIP and in the SR 19 release candidate that will become available in a few weeks after that.

OK- thanks.


One even easier “fix” would be to change the error message to “a subcomponent of block [name] is located on this layer”

I general feelings are still that ever since 64-Bit, people will want to make larger projects in Rhino–and not export them to some other program.

I suspect that, in the past most people who have used Rhino have made small uncomplicated projects from sophisticated shapes…

…Grasshopper changed that.

I am only a guest here. It’s your company. You set your own goals, but please reconsider giving a little attention to what may not be the sexiest part of Rhino, but the part that will allow user to develop their projects to completion.


Blocks can solve problems with computer resources.

The only way I got around this was to create all blocks on the Default layer, and then move the instances to their perspective layers. Though, using this workaround can make a mess, such as if you need to explode a block for reworking, as it must be moved to it’s own work layer before exploding, then moved back to be made into a block again. I also hide everything else while I do this kind of exploding. Save incrementally, often.

[Exploding things such as the 500+ fasteners instances I needed to explode because of material changes.]

The current block metaphor is akin to programming with private objects that cannot access from Main–unless it’s Thursday.


How do you move a block instance? Right clicking on the layer and selecting “change objects to layer” doesn’t move it.

Yes you can. A block is both an instance that can be on any layer, and the objects it contains that can be on other layers. So moving a block to another layer does NOT move the content of the block to this layer :slight_smile:

@eobet, @Holo already answered it, but I’d like to add: a block is like an invisible container, yet it has to reside on a layer. The advantage is that you can both hide block instances (with its contents) as well as hide contents (without hiding the block instance, which is invisible, but could contain objects you want to keep visible)
Suppose the following scenario: you want to have a block of a wheel with tire and bolts, so you make a layer wheel_block, activate this layer and create a block (instance) of a wheel, a tire and 5 bolts, where these items reside on respectively wheel, tire and bolt layer.
Furthermore you create another block, car that also makes use of the same bolts, this time creating the block on car_block layer, adding items from layers body, and bolt.
Hiding the bolt layer will hide all bolts in all instances. Hiding the wheel_block will hide bolts only used in wheel block instances.

Ok, but I’m afraid neither of you actually answered my question. :slight_smile:

How do I move the block instance I selected in the viewport to the layer I want? Like, actual mouse click instructions, please, because I seriously can’t figure it out.

same as any other object or group: if you select it, you can either right click on a layer and move it to that layer or use the property rollout to see/change on which layer it is/needs to be

Dunno, select the instance, then find the layer you want to move it to in the layer manager, right click and choose “Change Object Layer”

In the file below, try this to move the block instance from InstanceOriginalLayer to InstanceNewLayer. Works here…


SBC_Block.3dm (595.4 KB)

Well, the screenshot I attached to my original question clearly shows that that doesn’t work.

Again, I’m working with imported (possibly nested) blocks here.

New related question:

How do I move a Block Definition to a different layer?

I have a Block Definition (that I created) that I actually want to keep now, but I’m reorganizing my layers.

Which one is it?

Post a file with one that is not working…

My mistake, I’ve edited the comment. It’s imported nested blocks which can’t be moved. Blocks created in Rhino can be moved to different layers.

However, I also now found this (which I believe stems from me creating new blocks with the “Block” command, and then copy pasting/moving them):

I can’t post a file since I’m working on unreleased products at the moment.

Ok, my mistake again, it turns out. I do have a block that I created which I can’t move:

block.3dm (508.4 KB)

It actually behaves differently in this export, because when I try to move it in the above file, it ends up on both layers (a phenomenon that has been mentioned before), but in my original working file, it just refuses to move at all.

Here it works normally as I described. You can hide the block by hiding Hull layer, or by hiding the Detail Parts layer. Moving the block to a new layer (Layer 01) will make it that the part can be hidden by hiding the Detail Parts layer or Layer 01. Does it work differently at your side?

Quick answer: you can’t. There is no mechanism in the Rhino tools for selecting a block definition and moving it to another layer. Only block instances.

Considered answer: move everything other than the block definition to another layer and rename the layers to swap their meanings. Not helpful if you have more than one definition and want to separate them though