Hope I’m not missing something obvious! Have searched the forum and help, but no joy.

Issue with volume centroid calculated for a bunch of blocks. If calculating centroid after selecting all blocks, the centroid is shown outside the overall extents. Individual blocks, or all blocks on one side etc calculate correctly. If explode all blocks, rejoin as polysurfaces and select all - the centroid is correct.

Thanks, in advance, for any comments that might shed light on this.

@pascal This needs to be very high priority to be fixed. Users could be relying on the result from volume centroid for engineering and analysis. The error may not always be as obvious as in this example. Fixing fundamentally flawed analysis tools should be much higher priority than general code improvements.

The problem is with blocks made from solid objects and reflections ( or orientation reversing transformations in general). I fixed this in mass properties for V8, it’s already in the WIP. This is not a regression in that it never worked in any previous version of Rhino.

Since Rhino creates these blocks with reversed orientation and they are everywhere now it’s naive to think these are somehow invalid geometry.
That puts the responsibility on to the code that process blocks. In particular if the function operates on oriented closed objects then the block processing code must detect the orientation reversing transformation and deal with it, instead of blindly applying the transformation and passing it on.

I’m going in to this in detail because it is not only a mass properties issue. It effects commands like Booleans that depend on the orientation of closed objects.

@GregArden Rhino is used in naval architecture and other engineering where accurate, reliable calculation of volume centroids is essential for determination of center of gravity and other important points such as center of buoyancy.

Are other mass property calculations similarly affected?

The VolumeCentroid and VolumeMoments commands have this problem, but not the Volume command. Again it effects blocks containing closed objects and orientation reversing transformations, like reflections.