Block instances with configurations?

I often have to use imported data from SolidWorks, ProE, etc. and most often imported as Step files. Taking a 300MB and exploding things turns the file into a 1.2GB file, so that’s not ideal. And redefining blocks is also not usually worth the time to try and find them. Exploding the blocks over and over is troublesome because if a screw that is used 6000 times exists at different levels in different instances then it is quite time consuming to explode all but the Last instance of any block.

I’m trying to reverence 13GB of data from 90-ish files into one file, so referencing them as a block instance is really the only way for the data to exist as one file.

Changing things is a huge challenge though. I can’t move the block definitions because the entire file is referenced as a block instance. So If I need 3 variations/configurations like having something open and closed, or a few things moved in a different way, I have to save 3 different files and reference them all separately.

Is there a way to handle that? It sure would be helpful, especially with that much data.

It seems the block instances are very much designed with the user creating them in mind, and not at all with imported data in mind. I would also love to be able to rename block instance in the original file when importing because I have so much generically named data that I have to automatically rename blocks for every file every time I open my working file. I would much rather a choice to automatically rename the blocks in the Original file.

Hello- if you mean you are redefining a block by pointing it at different files for the different configurations, that is how I think I would do it - that is, you don’t necessarily need to place all configurations in the file.

Does that make sense?
(BTW, check the ExplodeBlock command for quickly drilling down on nested blocks)

-Pascal

Yeah, not ideal, but that would work.

ExplodeBlock just deletes all of the blocks right? What I am after is exploding the blocks that are only defining assemblies. If a screw is used 800 times in a file, I’d like that one to remain a block. If a housing containing 6 of those screws, a couple pcb boards, a knob, etc. is a single block, then explode that.

Ideally I’d just want a command that looks at every block instance. If that block instance contains blocks, explode it. Run that through every object until there are no objects to explode.

For an advanced option that would be more complicated, it would be nice to have an option to keep a block with nested blocks say if the block contained no nested objects and the existing block exists more than a specific number of times. Maybe if there are only two copies I wouldn’t care if it were exploded. But maybe there is a foot of a table defined as a block, which has a threaded rod, a washer, 2 nuts, and the actual foot. If there are 80 of those I wouldn’t mind keeping those as a single nested block.
Another option might be to only explode a block with child blocks if the children also exist in other blocks. So if the only instance of the block inside the current object is in other instances of the current object then it is unique to that “assembly” and there would be less reason to explode it.

The goal for me is to be able to keep the files small, but make them easier to work with. ExplodeBlock makes the files Giant if there are a ton of parts, and dealing with nested blocks after nested blocks is also a pain.

What I’ve done for now to help me manually do this is:

SelBlockInstance
Isolate
Explode

I just run that until I’m deep enough that I’m happy. This eliminates accidentally exploding a polysurface that is mixed in with some other blocks. But a tool that does it for me with some rules would be nicer.