Bug - BlockEdit Linked block renames nested blocks - Rhino 7

When BlockEditing a linked block, Rhino opens a new rhino instance (Child) and makes the Parent File unavailable until the Child is closed.
After BlockEdit, the dialog box asking what to do with the blocks from the Child that exist in the Parent does not appear.
As a result, the block instances that are embedded in the Child’s Linked blocks and/or that already exists on the Parent is added with a suffix " 01".

This creates a huge mess for several reasons:

  1. up next time the block is edited it will replace by a * 02 and so forth.
  2. If the renamed block also exists in other linked blocks in the Parent, the block will deviate from the original name and the two (or three or four or…) will coexist autonomously
  3. when you want to update the non linked block the original block name is changed and possibly multiplied, which makes it impossible to work with.

This was something that happened in the past when inserting or updating the blocks. The dialog box is annoying (and unnecessary in my opinion) but at least avoids this problem.

Workaround is to open the linked file autonomously (i.e. not block edit) and then update through the block manager.

However, the problem is that the BlockEdit doesn’t even need to be saved. If you accidentally double click on a linked block the nested blocks will be doubled no matter what.

N

1 Like

Hello- please provide a blow by blow to reproduce the problem you are seeing. My quick test does not show it.

-Pascal

I have a very large file where that occurs and at first attempt I could not reproduce on a simpler file. At last I was able to reproduce it follow these steps to ‘break it’.

Create a Child.3dm file.
image
Create a ParentA.3dm file, insert Child embedded and linked.
image
Create a ParentB.3dm file, insert Child embedded and linked.
image
Open Child.3dm, and save it
image

Now the Child inside both parents is not updated.
Create a Grandparent.3dm, insert Parent A embedded and linked.
because the files are linked the Child is updated.
image
Insert ParentB embedded and linked, it asks what to do with the Child, choose keep current
image

Although the child is not updated in both parents, the child is updated in Grandparent.
BlockEdit ParentA, it asks if you want to update Child, normally I say no and do it over the BlockManager. Update Child, save and close.
On returning to Grandparent the child will be duplicated.
image
BlockEdit ParentB, BlockManager. Update Child, save and close…
On returning to Grandparent you have three Child.
image
BlockEdit ParentA, do nothing, don’t save, just close
On returning to Grandparent you have four Child.
image
Purge a few times only the last two remain.
image

Delete ParentB and purge until only one child is left.
BlockEdit ParentA, do nothing, don’t save, just close
On returning to Grandparent you have another Child.
image

If the dialog box would appear after editing the block, you could choose the option you wanted.

@nsgma it looks like the name is only changed in the current session, and not in the linked file. The best option is to open the linked file and give the block a unique name, then after saving the block with ## suffix gets correct automatically.

I’m not sure if a dialog would help much here, because the name cannot be changed in the linked file anyways.

You missed the point. The name of the block is not expected to change. Never. Nowhere.

The Block name conflict dialog should appear after exiting BlockEdit, like it appears on updating an Linked block on the BlockManager.
N

[edit]
PS @Gijs The dialog box is also missing on Rhino 8 on one additional place:
Absent Block Name Conflict dialog box on opening update - Rhino 8

Maybe I am confused by what you just said. You say the name should not change ever. That means the block in the named file should not change either. Currently it doesn’t. I don’t think it is possible to have the same name blocks in the one file for different blocks. So how would you want to solve this? Imo this can only be properly solved by using a unique block name.

If a block conflict dialog would show up, it would be of little help, since the external block cannot be edited from within the current Rhino session.

@Gijs
Maybe we start by a common situation. I have toiletdoorA that is repeat through out the project, I use it on the several toilet blocks of my building1 of which there are several different layouts blocks. it is also on building 2 and 3. The door should never change its name in any of the buildings and also not is the combined file of the three buildings.

It currently does already work like that. When updating a file with toiletdoorA, which already exists in a combined file, the block name conflict dialog box will ask me if I want to add it as a new named instance, replace with the new block or keep the current. Typically by convention (1), we replace with the new block (2). The default option (3) is the worse of all and when the dialog does not appear that is what provokes the renaming.

  1. In Rhino 7, when you open a file with a linked block that needs updating, it asks you if you want to update, if you say yes, the Block Name Conflict dialog box comes up (this doesn’t happen in Rhino 8 - it should!).
  2. When you edit a file that is linked in your file, BlockManager will highlight that the linked file is newer, when you update it, the Block Name Conflict dialog box comes up.
  3. When you double click a linked block, on returning to the file, the Block Name Conflict dialog box does not comes up
    Rhino should check if the updated file has blocks that are already in the scene and pop the Block Name Conflict dialog box if that is the case. It would 100% solve the problem.

Please note that this issue occurs even if you accidentally double click a linked block and return to the main file without saving!

To bring the example two or three posts above further, because I realized I had not reach one point that I reached in an actual example in my working files.
After that sequence, create a file called ‘2nd Child.3dm’ and insert embedded and linked only on ParentA. the second time you BlockEdit Parent A, and close it (even without saving), 2nd Child is renamed, even though it is not on ParentB and is only in Grandparent through ParentA itself. The reason being that since there is no Block Name Conflict dialog box, it took the default option for all the blocks in ParentA irrespectively if they were repeated in the main file or not.
image

You multiply this by several blocks per generation and quickly you have chaos. This should really be taken in consideration as a big problem.
N

Notes
(1) it would be really good that this would be scriptable or there was a way of changing the defaults to avoid unnecessary mistakes. Wish: remember the last Block Name Conflict choice - Rhino / Rhino for Windows - McNeel Forum
(2) Typically, we replace with the new block. If it the wrong option is easily fixed because it keeps the same name. The only bad option is the default because it is not easily fixed.
(3) Add a new named instance is the default and never ever have we used this, it is super annoying that . Wish: remember the last Block Name Conflict choice - Rhino / Rhino for Windows - McNeel Forum

2 Likes

Thanks @nsgma for the detailed explanation.
Much clearer now what is happening. I will make proper reports for these issues tomorrow morning.

Note this YT is for Rhino 8, I don’t expect these issues to be solved for Rhino 7

RH-82287 Blocks get renamed after editing

Unfortunate. These patches should be worked into R7 as well.

In the meantime, testing another issue I found a simpler way to provoke the renaming of blocks.
Create Child.3dm. Close.
Create Parent.3dm, insert Child as a block Embedded and Linked. Close.
Create Grandparent.3dm, insert Parent as a block Embedded and Linked.
While on Grandparent, BlockEdit Parent. Parent will open in another Rhino Instance.
In Parent, BlockEdit Child. Child will open in another Rhino Instance.
Save and close Child.
Save and Close Parent.
In Grandparent, a renamed version of Child will be added.

N

@Gijs, (@dale @mary)
I read now the YT report and would like to make two notes.

  1. In Rhino 7, it was not that easy to break this. You have to ‘force’ it to occur, as described in my previous message.
  2. The YT does not mention the “easy fix” of popping the Block Name Conflict dialog box, when returning to the host file. If this would happen (as it does on opening or updating) the issue would be “pushed” to the users choice.

I hope this makes it easier to address and faster to get a solution. Please let me know if that is not clear.
N