Commonly when designing assemblies of components we adopt a sub-assembly approach, breaking each assembly into smaller assemblies which are then pieced together to form the overall assembly. For example with a car you may have an engine sub-assembly, a transmission sub-assembly, a suspension sub-assembly and so on, these sub-assemblies will be built separately before being inserted into the main assembly.
We often use this approach within our SOLIDWORKS design both to mimic the true manufacturing process and to allow individual designers to work independently on their respective sub-assemblies before bringing everything together. This approach also has the benefit of keeping our Feature Manager Design Tree neat and tidy.
One of the most common issues that people have when they include sub-assemblies within their design is that any degrees of freedom allowed within the sub-assembly are not available when it is brought in to an assembly, the sub-assembly is rigid and this is often not what people expect.
Why is this?
When you insert a sub-assembly into an assembly the assembly is treated as if it is a part, thus it is completely rigid and inflexible. This speeds up the process as SOLIDWORKS does not need to constantly update all the mates within the sub-assembly as you move the assembly around the screen, reducing processing requirements, speeding up the process and potentially making it easier to work with that sub-assembly. Thus the assembly is fixed in the position it was saved within the sub-assembly.
But I want my sub-assembly to move!
SOLIDWORKS will allow movement of sub-assemblies; we just need to specify that the assembly is flexible. If we right click on the sub-assembly in the tree there is an icon in the context sensitive toolbar to make sub-assembly flexible, (prior to SOLIDWORKS 2014 this icon does not appear, instead we would need to go to the assemblies properties and select ‘Solve As: Flexible’) with this selected you’ll notice a few changes – the icon for the sub-assembly changes to a flexible sub-assembly icon and more importantly, any degrees of freedom allowed in the sub-assembly are available.
Rigid and Flexible assemblies have different icons in the feature tree
In the example below we have created a sub-assembly of the universal joint, this has then been brought into our top level assembly and has already been mated to the bracket using the shaft at the top of the universal joint, we wish to now add mates to control the movement of the lower yoke of the universal joint. We want the flat face at the bottom of the yoke to be parallel to the angled face of the bracket
We want to create a mate to sit the underside face of the Yoke parallel to the angled face.
As the sub-assembly is rigid we cannot create this mate; it requires the sub-assembly to change position which cannot happen as the universal joint is rigid.
Specify that you wish the sub-assembly to be made flexible.
With the sub-assembly made flexible the mate can now be added, and the universal joint can be rotated.
Here are some basic rules:
- All mates are solved concurrently, so as you move your model, SOLIDWORKS has to work harder to solve all of them, this may potentially slow down our modelling process. So only make a sub assembly flexible if needed (hence why there is no global option to make all assemblies flexible- it is a conscious decision to make a flexible sub-assembly).
- If we are using multiple instances of a sub-assembly within our assembly, we do not have to make them all flexible, only the instances that require it.
- Lightweight assemblies do not allow flexibility, so to make use of flexible sub-assemblies we will need to resolve any lightweight assemblies
- Consider where your mates exist within your overall assembly, more complex mates such as limit (angle and distance) may give smoother movement of the assembly if added at the top level rather than at sub assembly level.