I'm currently working on a project with hundreds of parts and well over 1000 instances of parts.
Frequently we want to send a vendor or customer some of the project, but we'd like to hide the internals, for example if we're desiging a hand held optical system, we'd like to send the design company doing the probe the external surfaces of the model while at the same not sharing the internals. Likewise, we'd like to send the designed probe out without showing its internal components. Thus far I've maintained an assembly for each and every time I want to send something else, I save the subcomponents as parts (surfaces) and then find and replace or delete and reattach the mates manually to fit the sanitized parts back into the assembly. Then of course I save the assembly as a copy with a version and date.
The problem of course is that nothing is ever updated again and for the next design update, I have to do this again. And this happens for every vendor with different levels of the assembly tree, creating an absolute mess. I know I could clean things up a bit with configurations, but is there any way to do this in a more sane manner within SW? Sort of a pack and go, but dumb down these assemblies?
Have you consider using the Defeature tool?
Also, when you save the sub-assemblies as parts with external faces only for the benefit of a third party, and you need to insert them back into the main assembly, you can use this procedure.
This way you do not need to waste time replacing mates.
Note: if you need to show motion, than it is a different story.