Machining after assembly is a very frequent scenario in real-life manufacturing. In NX, there are two principal ways to apply modeling features to the assembly components:
- Promote bodies of components and apply features directly to them,
- Make copies of bodies using WAVE linker and apply features to these copies.
It is outside of the scope of this article to describe these two methods as well as reasons to pick one or another (although I promise to soon publish an article addressing exactly that), we only have to accept that sometimes WAVE linking is the only option that designer has at his disposal when he needs to machine an assembly.
Along with certain advantages, use of WAVE-linked copies of bodies creates a significant issue which often catches less experienced users by surprise. This is excessive weight of the assembly, calculated and cached using the Advanced weight management tool.
To find the reason for this, we must understand how weight calculation is implemented in NX. To determine the weight of the assembly, NX adds weight from two sources:
- Weight of bodies at the assembly level;
- Weight of child components of the assembly.
Now we can see where the problem comes from: if we make copy of component body using WAVE linker, it is placed at the assembly level and NX counts its weight twice. First time as a weight of a component, and second time as a weight of a body at the assembly level. The solution is to exclude weight of component from calculation of total weight of an assembly. This must be done using the advanced weight management.
Advanced weight management
Both sources of weight information can be controlled to make sure only the selected bodies provide their weight for the calculation of total weight of the assembly. In case of the bodies at the assembly level it is done by using Reference Sets. In case of the assembly child components it is done by using Component groups.
Component group determines which components are included into selection and which are excluded from it. It can be done explicitly, or according to some logical rule. Usually, only few components from assembly are machined, while most others are left intact. Therefore, it is convenient to define a component group that will include all components from an assembly, but exclude those which we mark as having been WAVE-linked to the assembly level.
I prefer to mark WAVE-linked components by defining them as non-geometric. To do this select them, right-click, pick ‘Properties’, and at the ‘Assembly’ folder check the option ‘Component is non-geometric’.
Marking components this way has the following advantages:
- Component is invisible, but still included into the NX parts lists or TC Structure manager;
- Changes in the component are still reflected in its WAVE-linked copy;
- Non-geometric component is automatically assigned attribute UG GEOMETRY = NO, which is very convenient for the subsequent use by a component group.
To activate component groups functionality (mind that you need Advanced assemblies license to do that), right-click anywhere in the Assembly navigator and pick option ‘Show component groups’ form the context menu. You will notice two new lines on top – ‘Session Component Groups’ and ‘Component Groups in Part’. Everything is ready now to define a rule which will help us to manage weight calculation of the assembly.
Right-click on a Component Groups in Part and select Add to Component Group. In a Add to Component Group window select By State folder and make sure that the radio button in pointed to All Components, then click OK. A component group will be created and you will be prompted with a new name for it – call it Weight. Now double-click the group and observe that all components are selected. This is exactly what should happen. Now we will add second rule which will exclude certain components from this selection.
Right-click ‘Weight’ component group and select Add to Component Group again. This time, in a Add to Component Group window go to the folder By Attribute. In a Name field, type UG GEOMETRY. In a Value field, type NO. Make sure that equal sign is selected between this fields, and click OK. A new rule is created under the Weight component group. Test it by double clicking and observe that non-geometric components are selected. Now we need to combine these two rules to get a result we want.
Right-click UG GEOMETRY = NO rule and select Exclude From Component Group. Notice that the rule has moved under a newly created node named Exclude. Test the Weight component group by double-clicking on it and observe that all components are selected except for the non-geometric. Now this component group is ready to be used as a source for the assembly weight calculation.
Click on Assembly Weight Management. In the Weight Management window click Set Component Group and select ‘Weight’ group – the one we just created. Then click Work Part in the same window. NX will calculate the weight of the assembly and show result in a listing window, as well as putting in into the Weight column of the assembly navigator. Observe that weight is shown only for the components which belong to the Weight component group, and only that weight is added together as a total weight of the assembly.
It is easy to prove that assembly weight is correct. Click Measure Bodies and select all components and WAVE-linked bodies which constitute the assembly. Compare the result of this measurement with the weight in the assembly navigator, and see that values are absolutely equal. We did everything right.
There is an important factor to be aware of if we build multi-level assembly: component groups and weight management rules are only effective at their particular levels. If we need to calculate weight on the next and subsequent levels up, we must set up the same rules on each of those levels.
Let’s have a look at the top level assembly, in which our subassembly is included. We can see that the weight is once again incorrect, with all components included in the calculation. The reason for this is that at this particular level no component group and weight rule is set up.
To correct this issue, we have to create the same component group as in the previous assembly (we can simply copy and paste it to save time), and make the same adjustment in the weight management tool. Having done that, we observe that the top-level assembly weight is back to normal.
Here is the important lesson we can learn: weight management of a product structure containing WAVE-linked bodies can only be done across the entire assembly. It is not feasible to have it done only at particular levels and expect correct results at the top level. This has to be considered when we develop CAD method for design of a product.
Suppression of components
It is possible to achieve seemingly similar results without component groups and weight management. If components are suppressed, they become invisible and get excluded from the weight calculation. But it comes with at a price:
- Suppressed component is excluded from NX parts lists or TC Structure manager;
- Changes in the suppressed component are not reflected in its WAVE-linked copy.
I’m not claiming that suppression of components cannot be used for weight management of assembly with WAVE-linked bodies. My point regarding suppression is that the mentioned limitations should be carefully considered to avoid serious issues in the product development cycle.
Do you use WAVE linking to model machining after assembly? For what reason? Did you have problems with calculation of the assembly weight? How did you solve them?