Calculate diameter distributions from irregular 3d cylinder

296 views Asked by At

I have 3d models (stl-files) of irregular cylinder-like objects that I would like to measure at set intervals along the long axis. The result should be a distribution of diameters (or of the lengths of the long and short axes of the elliptical cross-section). Is there a way to do this using built-in functions of one of the standard pieces of 3d software (Geomagic, Meshlab, Solidworks)?

1

There are 1 answers

3
Vlad On

Here's Solidworks API approach that I would take :

1 Collect all the edges of your body, convert them to vectors. If it's a curve just take endPoint - startPoint. IPartDoc::GetBodies2 IBody2::GetEdges

2 Using those vectors as potential axes figure out the smallest box that your body fits into using IBody2::GetExtemePoint.

3 Largest dimension of the box will be your long axis.

**If you know orientation of your body beforehand (ie top of the cylinder always looks towards x/-x) you can skip first three steps

4 Take 4 faces of the box that you found that are parallel to the longest dimension. For example if your box is x,y,z axes and x is the longest you must take 2 faces parallel to xy plane and 2 faces parallel to xz plane.

5 For each of those 4 faces generate a grid of points that will evenly cover the face, number of points depends on the accuracy of the result that you want, I'd suggest to start with 100 points per face.

6 Shoot rays from those points though the body with IModelDoc2::RayIntersections.

7 Disregard rays that don't intersect the body, those that do will give you 2 points - an entry and an exit, calculating the distance between them will give you your diameter.

8 Because your rays will be intersecting cylinder across the surface not only in the thickest part use only biggest diameter per row of grid points.

This is the most generic approach that would work for any 'irregular cylinder-like object' given that height of the cylinder is bigger than its diameter.

Let me know if you need clarification on any of the steps, I can draw some sketches.