From what I'm seeing, you're not using "true" sub-assemblies. You seem to have some random parts in some sort of semi-random placement. A sub-assembly is, usually, a group of parts that actually fit together (welded, screwed/bolted, etc) that are then affixed to a larger assembly.
To do what you want to do with your 'sub-assembly', you'd need to create configurations. Start with the default configuration, one that allows the bits in it to move around, and have the file open. In your upper level assembly insert the sub-assembly and make it flexible. Position the parts, then switch back to your sub-assembly. If the parts haven't moved around, rebuild it. This should cause the parts to move to the positions that they're in in the upper level assembly. Create a new configuration, then lock all the parts in place. Go back to the main assembly and change that instance to the newley created configuration. You'll need to repeat this for each instance of the sub-assembly in the assembly.
Another method would be to bring the individual bits into the upper level assembly and position as needed. Ctrl+select all the parts, right click and choose 'Form new sub-assembly here'. Doing this will create individual sub-assemblies versus one sub-assembly with multiple configurations.
I would really recommend creating the assembly as it would actually be assembled, though.
Thanks for the deffinition. Indeed, what I mean with subassembly is lower level assembly inside another assembly in a tree structure. In case those parts where fit toguether (welded, for example), the deffinition would also apply, because in the end, the assembly will be included in an upper level assembly. Just saying these semi-ramdomly located parts where created to have something to work with in this discussion, so that they are only a simplification of the problem to work with.
Concerning the proccedure with configurations you mention, it works. Thank you. Although it is large, this is the step by step I did:
- Having and upper level assembly containing its own part, I added the lower level assembly which included its onw parts in a random location and added smartmates between origins of boths assemblies.
- Set lower level assembly as flexible. And added every smartmate needed between its parts and the upper level assembly parts.
- Saved (with rebuild)
- Opened lower level assembly and found everything hadn´t changed.
- Turned back to upper level assembly window, RMB on lower level asembly, "edit assembly (in context)".
- Came back to lower level assembly window and found everything according with smartmates added un step 2 and created a new configuration in the lower level assembly and set to "fix" every part.
- Came back to upper level assembly, "finished editing assembly". And set lower level assembly to Rigid. It forgets about smartmates in step 2 and smartmates errors appear.
- Set lower level assembly to the new created configuration and rebuild. Errors change for warnings and now everything is in its place.
- Suppresed every smartmate related to step 2 and unsupressed origins' smartmate so that lower level assembly is fixed.
"Creating new sub-assembly here" is an option I haven´t been able to find in SW2013, although is not useful in this case because I must use an already created assembly. What I found was more like: "insert>component>assembly of selected components". It brings the smartmates so as the parts inside a new virtual assembly with the parts in the desired possition.
Creating and adding another assy and dragging the parts would also work. Again, I can´t use this.
I miss your recommendation of "creating the assembly as it would actually be assembled" because the possition of the parts in the lower level assembly depend of the upper level assembly. I think, I would never be able to place the parts correctly in the lower level asembly without using smartmates and doing the proccedure mentioned before. Could you please add some coments concerning that?