We use Rhino with entire car assemblies, thousands of parts, that we trim down to a few hundred for what we need. The trick for us is that we only use layers as our assembly structure. I would not touch blocks for anything more complex that a simple instance of something.
When we import assemblies (native Catia/NX/SW) we do it in Spaceclaim and then we save as .3dm from there. With the option ‘convert assemblies to layers’.
To export back assemblies, we either do the reverse trip: bring that Rhino to Spaceclaim, export from there as a Parasolid.
We have tried also @pascal’s ExplodeBlcoksToLayers upon import of an assembly in Rhino, to get rid of the blocks and turn them into layers. But it does not work well everytime.
Same for his exporter script: ExportAsblocks. It works, but not everytime, on every part.
Every time I try to sit down to try to troubleshoot what’s not working on them, so I can report it, I get lost and confused and I give up.
Rhino should have a properly working assembly manager at some point.
At least it should be able to do a perfect round trip from a perfectly structured/named Step assembly imported-in and layerized. And then exporting that layer structure right back out a s an assembly. Basically what I do with Spaceclaim, but without having to own/use Spaceclaim.
If an engineer colleague sends you Step file for you to change something its reasonable to expect that you can open it, make a modeling change and sent it right back out and everything should be structured the same as it came in.
I’ve been asking for this for a good decade now. At least. Probably an expired wish by now.