There’s a rare scenario where you may want to create an iPart for a component which changes size but doesn’t change it’s mass. But in addition, you have simplified the model in such a way that if you increase or decrease the size of the component, then you are increasing the volume and therefore the mass. In reality the mass never changes. Ok, ok, there are a number of ways around this:
- Create multiple parts and build an assembly, then it can be made flexible when placed into the target assembly. However, this requires 1 or more additional constraints.
- Add extra features which grow and shrink with the component as it changes size to compensate for the volume change. This often adds additional faces and therefore file size.
But I’m awkward sometimes and wanted to find a way to push a mass override through to the iPart members. Inventor doesn’t support this workflow and is considered to be ‘As Designed’.
Fortunately if you use Autodesk Vault and it’s Item Bill Of Material tools then there’s a solution. Its likely you want to have mass appear within your Vault BOM, just like you can within Inventor’s BOM. Unfortunately that’s not as easy as you might imagine. There are 2 possibilities for achieving this:
- Create a custom iProperty using an Expression, which allows you to make it equal to the Mass property found on the Physical Tab.
- Create a very simplecustom iProperty using an iLogic rule.
iProperties.Value("Custom", "iLogicMass") = iProperties.Mass
In the image below you can see the result of both techniques being used. ExpressionMass has been created using the expression =<mass> in the value field, but there are two issues with this.
- It’s converted the value to grams from kilos.
- The Type is Text, so you can’t add that value up without converting it back to a number. The other thing to consider is the property type you want to use in Autodesk Vault when setting up the UDP mapping.
However, the iLogicMass custom property has been populated by an iLogic rule which runs via the ‘Before Save’ event trigger. The result here is the use of the Number type (which is the same type as the physical mass property) and the value is still in Kilos.
The trait which wins out is with the iLogic approach. Since the value is only copied over ‘Before Save’ its not associative like the custom property is via the use of an expression. Upon publishing the iPart members, Inventor will update the physical mass of the members because a volume change has occured. However, the iLogic Mass iProperty will just be copied over to the members.
There is a danger here, Inventor will end up reporting the physical mass of the components with a completely different value to that shown in the Vault BOM. I don’t have a solution for that, but in these very infrequent use cases I’m happy to take that risk since all Mass reports are run from Vault and not Inventor. However, in my Assembly template I do make sure both mass values are displayed side by side in the Inventor BOM:
In the image above, you will see 4 iPart members all from the same iPart factory. Since ExpressionMass is directly associated with the mass of the component via its expression, the Mass has been updated (albeit in grams). Whereas the iLogicMass values are all identical. These are the mass values which would be mapped through to the mass property in Vault.
For the purpose of clarity I named these iProperties as iLogicMass and ExpressionMass. In reality there would only be a single custom mass iproperty and it would use the same name in my template part file, thereby ensuring it always maps nicely to Vault.
I don’t expect this to be helpful for most people, but I figure its just as important to blog about the rare cases as it is the common ones.
Cheers for reading