I need to find a way how to set a custom parameter to be equal with a body volume, assuming I have a multibody part.
I have found how to assign total volume of the part to a parameter using iLogic rule.:
Total_Volume = iProperties.Volume
and that's it.
You can do it also for a component in an assembly , but can't see how to do it for a body...
Solved! Go to Solution.
Hi! I could be wrong but I am not aware of body level volume in a part file. The physical properties are all evaluated on a per part basis, not per body basis.
The original design intent of Multi-Solid Body workflows is that each solid body would be derived as individual parts eventually. For your case, you should be able to query each body volume if the bodies are all derived into different parts. Can I ask you why you need to have body level volume?
Hi! I have to revert my prior statement. The body level physical properties can be found if you right-click on Body node -> Properties in the browser. However, the parameters associated with these properties are not exposed to the user. I need to find out why or how. I will get back to you with my findings.
I am very sorry for the misinformation I posted earlier.
The point is that you can see each solid(body) volume in its properties. See the attached screen capture.
The main ideea is to make a container (one body) with product volume as separate solid (second body). Then I want this to publish to Content Center.
When inserting the part (container), the custom parameter will be the volume. Depending on the volume, the height of the container will be calculated by Inventor. This will be possible with an iLogic rule. I made it for a single body part.
If only it would be possible to publish assemblies to Content Center... but no way...
Update: I just saw your last replay on that. Thanks for looking at that.
So, no one can help?
SolidBodies.zip has a rule to calculate the volume of a solid body. It has a few other functions for solids. It can be used as an external rule, but for a content center part it might be best to put it in the part. You can add a rule (name it SolidFunctions) and paste in the text. Set the Straight VB Code option on the Options tab:
Then create another rule for your code. Here's a sample. This is in a part with bodies named ContentsBody and ContainerBody.
Dim bodies As New SolidBodies(ThisDoc.Document)
ContentsVolume = bodies.Body("ContentsBody").Volume
ContainerVolume = bodies.Body("ContainerBody").Volume
Note that this rule won't run automatically when the volume changes. You can add lines that refer to model parameters to make it run:
trigger = d0 + d1 + PartLength ' etc.
Or you can use the Event Triggers command and set it to run on the Before Save Document event.
That's just brilliant! Thanks a bunch!
But what are the other functions of this SolidBodies.vb rule? Just beeing curious
It looks like I need a little bit more help to reach my main goal.
I want a rule that changes a parameter until 2 parameters are equal.
Let me explain you this way:
If Volume1<>ProductVolume Then
d12=choose a value until Volume1=ProductVolume
I suppose it should be simple, but I struggle a lot with programming...