Copying Nested Blocks from File to File without renaming


We are working on larger assemblies of steel parts, which are bolted together.

Each Assemblies is represented by a block and contains the polysurfaces and screws, which hold them together.
The Screws, are represented by blocks and are integrated as nested blocks of the part assemblies.

We are working on different Assemblies on different workstations with different files - always integrating our “screw” libraries by copying them via Copy/Paste - works fine.

NOW - If we combine two assemblies into ONE File, the blocks of the second assembly that is inserted are renamed.
What used to be “M6_screw” is now “M6_screw 01”

Is there a way to NOT rename the Blocks but use the existing definition in the file instead?


I narrowed down the problem.

I guess it usually detects “equal” versions and replaces them.

However to “change” the version of the block - it’s enough to double click on one of the blocks and calling “BlockEdit”

Even though nothing is changed, it internally does “something” to detect that they are not equal.

I guess this behavior is what we want - but in cases, where there is a “Version Clash” of Blocks, it would be good to have the possibility to choose which version should be used and the other one should be replaced.


Hi Martin - I think I have this right:

I start with three open instances of Rhino.
In one, there is Assembly A that has in it a block called Screw.
In the second Rhino I have Assembly B that also contains the block ‘Screw’.

-Screw is the same in both files.

  • None of the blocks is linked (?)

I Copy(to clipboard) Assembly A and paste to the empty file, then Copy Assembly B and paste into the same file. The block ‘Screw’ from the second paste is now renamed… Is that the basic workflow. or close enough?

If I Insert the Assembly blocks, rather than Copy/Paste, then the second Screw block is not renamed; if I Import the Assembly Blocks they behave as in Paste, the Screw block is renamed on the second import - this makes sense insofar as Paste is about the same operation, under the hood, as Import.

I’m just confirming, I think, the behavior you are reporting… I don’t know what is correct or what to do about it, yet…


Hi Pascal,

basically yes - just if I insert (as individual objects - since the file not only contains of this one Assembly)

Here it would be great to have the User Choose:
[Replace Existing Block in File] [Replace Inserted Block With Existing Block] [Rename Inserted Block]
… [Do the same for all Existing Error]

In addition:
If you

  • Copy Paste AssemblyA to the empty File
  • Then "double click on AssemblyA in the “original file” (opening Block Edit)
  • Hit ESC to close Block Edit without changing anything
  • Copy Paste Assembly A again to the empty File , it will also be renamed.


This is very annoying … I’d like to not have Rhino checking this … or at least a way to tell him what to do. I need to import into one file (with blocks) another file (with same blocks but different names) and they get renamed … Any way to solve this? Thanks!

Ok. “Found” a very monkey-ish way to do it. I just change the block’s geometry (adding for eg. a line which will not get rendered). That way Rhino understands that it’s a different block and will not rename it. Now I just need to repeat this like 200 times. (any script to add random tiny lines to blocks?) :smiley: