Unable to calculate volume of closed polysurface


#1

Hi,

I have a closed polysurface that has no bad objects and for some reason Rhino is unable to calculate the volume of it.

I’m using Rhino 5.3 on Mac.

Thanks.

carpa4.3dm (7.2 MB)


#2

Hi Leonardo,

the failjure of the _Volume command is not related to the Mac version and appears to be indentical on Windows. The source of the problem is that Rhino needs to built a mesh from the model to calculate the volume. If the mesh is hardly degenerated, it will fail to compute a volume.

Did you previously change your file tolerances to get this polysurface joined into a closed object ? I am surprised that it is not marked as a bad object since it contains many edges out of your tolerance and a few very small faces with area below 0.00001. After these where extracted and the remaining holes filled, _Volume calculation seems to work. I get:

Volume = 3.8410177 (+/- 1.3e-06) cubic centimeters

carpa4_c.3dm (4.0 MB)

c.


#3

Hi Clement,

Thank you for the reply.

Yes I did change my file’s tolerances when working to get the polysurface into a closed object.

How did you check for and extract edges out of tolerance and very small faces with tiny areas, as well as fill the holes afterwards?

Thanks.


#4

Hi Leonardo, i would not suggest to do this which helps to avoid problems with your geometry. Usually this can create bad geometry and when you export your model to other applications, the problems are still there.

To find the problematic surfaces, i’ve exploded the polysurface and used an old script which selects surfaces in a defined area range. There was a surface where the area calculation failed as well. I’ll attach the script for reference but i guess this cannot be used on the Mac platform. if you need a Mac version i can try to rewrite the script in python:

SelectSurfaceArea_RH3.rvb (2.5 KB)

btw. to fill the remaining holes i’ve used _PlanarSrf and _Sweep2. There has been at least one microscopic naked edge which i’ve closed using _TestRemoveAllNakedMicroLoops command. I guess this is not available on the Mac yet.

c.


(David Cockey) #5

After exploding SelSmall can be used to find small surfaces. It appears to be in Rhino for Mac. SelSmall uses the diagonal of the bounding box as the test parameter.


#6

You can _ExtractRenderMesh and try _Volume on that.
The mesh is not closed, but you can repair it before.

-C-H-A-R-L-E-S-


#7

Yes, _SelSmall works for the first step, put finding the surface in the polysurface which does not let you calculate the Area (to determine the size) was done with the script above.

c.


#8

Hi guys,

Thanks for the tips. I ended up using the Select Small command with another model that had the same issue.

At first I did a round of clean up with the default 0.001 setting for the maximum length of bounding box diagonal. That brought up a few problem areas which were easy to fix using SetPt to align surface corners and/or remodel surfaces that were slightly off. After being unable to calculate the volume of the resulting closed polysurface without bad objects I once again exploded it and ran SelSmall with a larger setting of 0.01. After the second round of clean up I was able to get a volume calculation.

Thank you so much!