Can't delete layer

So I am trying to delete a layer from my file, but it does not let me saying there is a block on that layer:

Okay, so I go into the Block Manager and look for the block. It is there and exists exactly once. No instances of the block are placed anywhere. The Block is NOT on the specified layer though. In the screenshot it says it is on “DS_Mr.Brightside”, but it is located on Layer SET_C:

If I select it in Block Manager and show the counts, you can see it is the same block:

I tried changing the layer of the block, but I still get the error when trying to delete the layer “DS_Mr.Brightside”.

So what can I do to delete the layer?

This is super frustrating and could all be solved quite easily by having a good block manager or outliner. I don’t get why obviously layers and blocks have a tight relationship, yet are completely separate in Rhino. Please throw away the old Block Manager and start again from scratch with it. For inspiration how to do it properly, just copy what everyone else is doing already (Blender, Fusion, Cinema4D, basically all of them).

Hi Armin -

I’d be easier if we’d gotten the (simplified) file, but, what happens when you go into BlockEdit mode on that instance and look at all the layers that the objects are on?

Unless something goes terribly wrong, Rhino 8 will have a new block manager.
-wim

That sounds good, looking forward to it!

Ah, yes, I see that if I go into it, the objects are on that layer and not the ones they should be on. What I also noticed is that it is not 1 block that has objects on that layer, but quite a few. I wish the error message would not just tell me the FIRST block that has objects on that layer, but all of them. So it should say “There are 24 block definitions with objects on layer “DS_Mr.Brightside”…”. The error message makes it sound like the block itself is on that layer. Then it could just select all the offending blocks in the file. That would make it much easier to hunt for the problem, rather than doing it one by one.

Once again, having an outliner that shows the objects inside layers would mean i would see instantly all objects inside a layer, even if they are inside a block. Since these are objects inside a block it could show me the objects greyed out or somehow as a link to the block. It’s not easy since a block can be on one layer and it’s contents can be on different layers. But it’s all solveable.

Basically the error messages need to be more clear. Otherwise we assume the error is not correct for some reason or look in the wrong place. So any little hint in the wording helps. I hope this also get’s improved.

ps: I did not include the file, as these are design-works in progress for a client.

I was gonna ask you to open the block :slight_smile:

I often have to work with clients files which are exported from Archicad and blocks are unfortunately very often a mess.

It actually says there is a Block Definition on that layer.

It actually says a Block Instance is on SET_C

That is what you see highlighted. Block Definitions do not ever appear on the drawing canvas, only Block Instances.

Take the highlighted instance and explode it so it is no longer linked to the definition. then use the Block Manager to delete the Block Definition. Then you can delete the layer.

HTH
Jeremy

The problem is I don’t want to explode or delete anything. It just turns out that some contents of blocks where falsely placed on that layer. It was not one block, but around 30 blocks.

What I see would be an improvement would be if I could somehow see what block contents are on what layer, but currently there is no connection (visually) between them. Imagine I could click open the layer I am trying to delete and it somehow shows me what contents it has. Even if I can’t really do anything, but it just shows me, that would already be an immense help. Then I would be able to see that there are 30 blocks containing objects on that layer. But currently it’s all basically trial and error and I have to double-click to edit each block and click on every object inside to see what layer things are on.

Every time someone (including me) suggests some sort of outliner that would show exactly this kind of information it is implied that it is not needed because everyone get’s along just fine as it is. Well, clearly that is not the case.

Hello- what you can do now is BlockEdit and move block definition objects around to different layers. (I believe the new block manager will be able to help here.)

-Pascal

Yes, that is true. But what about having many blocks. In an outliner I could see all the objects in that layer and just move them all to a different layer (effectively block editing all effected blocks). Also I would actually know WHICH blocks contain stuff on that layer. Right now the error message only tells me the first block it finds. So you have to 1. try to delete layer > 2. get error > 3. find block > 4. block edit to change layer > then it starts again until you have changed all of them.

Anyways, hopefully the new Block Manager actually helps with things like that.

Can we test it and give feedback?

Hello- the block manager is not ready for testing yet - I have only seen it, not tested it myself, but it looks very promising. The following is not a solution but might ease the pain somewhat - they will tell you what layers are used by objects in a selected block, or what blocks have objects on the selected layer.

BlockLayers.py (1.6 KB)
LayerBlockItems.py (1.0 KB)

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"

-Pascal

2 Likes

Awesome, thank you! That really helps.

With LayerBlockItems I am getting an error though when selecting a layer that contains the blocks:

If I have a layer with no blocks on it, I don’t get an error.

Thanks, I’ll check.
@seltzdesign - so far this works here - can you post or send me an example?

-Pascal