# Dimension based on volume?

#### Coywolf

##### Newbie
I've been searching around for a bit, and can't find a way to make a dimension based on the final volume of the part.

For example, let's say for simplicity I make a revolved circle to produce a sphere. I want that sphere to be exactly 6 cm3. Is there a way to relate the radius of the circle to produce the specified volume?

Any help appreciated

#### MrCATIA

##### Super Moderator
This can easily be done with parameters and a formula (assuming your shape is always a simple shape that can be simply defined):

1. Make two parameters; VOLUME and RADIUS

3. Use the RADIUS parmeter to drive the sphere definition

Now by changing the VOLUME, the sphere will change accordingly.

Last edited:

#### Coywolf

##### Newbie
But what if my part isn't a simple shape where I know the formula for the volume already? My part is a multi-section surface, and my intent was to control the position of the bottom section based on the volume, so the final surface would end up with the exact volume I need.

#### MrCATIA

##### Super Moderator
So how does the part change in order to get the desired volume?

Does it just scale larger/smaller?

Does one section move closer/farther?

Does one section get wider/narrower?

what is the variable used to modify this part?

#### Coywolf

##### Newbie
My intent was for one section to move closer/farther.

The process I imagined was that I could somehow set up a relation between the volume measurement and a single parameter, in this case how close/far the one section is, and then be able to specify the volume and have THAT drive the related parameter.

#### MrCATIA

##### Super Moderator
You can do this manually, by measuring the volume and save the results so you can quickly read the current value. Then move the sketch plane and check the volume. Keep adjusting the plane, until you get the volume close enough.

You will probably have to add surfaces at the end and join all the surfaces into a single, closed surface in order to measure the volume

Or, you can do this automatically by using one of the optimization tools in CATIA. (I've only seen demos of this, so I'm not sure which workbench license you need. The GSO (Generative Shape Optimizer) might be the one since you're dealing with surfaces)

Last edited:

#### Breta

##### New member
Solution with VBA is possible

You can reach requested functionality with VBA, where you use you parameters "RADIUS" and "VOLUME" and by increasing or decreasing of "RADIUS" you modify and update model in cycle and you do this cycle until you reach certain value for "VOLUME" with certain precision, which you need.
Now I am working on generic macro to make this functionaly with interactive selection of two parameters and with additional input of: start parameter step, target value for driven parameter, requested precision of driven parameter.