计算不规则3d圆柱体的直径分布

时间:2017-08-30 13:39:48

标签: geometry computational-geometry solidworks meshlab

我有三维模型(stl文件)的不规则圆柱状物体,我想沿着长轴以设定的间隔测量。结果应该是直径的分布(或椭圆形横截面的长轴和短轴的长度)。  有没有办法使用标准的3D软件之一(Geomagic,Meshlab,Solidworks)的内置函数来做到这一点?

1 个答案:

答案 0 :(得分:0)

我将采用Solidworks API方法:

1收集身体的所有边缘,将它们转换为矢量。如果它是曲线,只需采取endPoint - startPoint。 IPartDoc::GetBodies2 IBody2::GetEdges

2使用这些矢量作为潜在的轴,使用IBody2::GetExtemePoint计算出你的身体最小的框。

3框的最大尺寸将是您的长轴。

**如果您事先知道身体的方向(即气瓶顶部始终朝向x / -x),您可以跳过前三个步骤

4取出找到的与最长尺寸平行的方框的4个面。例如,如果您的方框是x,y,z轴和x是最长的,则必须采用平行于xy平面的2个面和平行于xz平面的2个面。

5对于这4个面中的每一个生成一个均匀覆盖面部的点网格,点的数量取决于您想要的结果的准确性,我建议从每个面100点开始。

6使用IModelDoc2::RayIntersections通过身体拍摄来自这些点的光线。

7忽略不与身体相交的光线,那些会给你2点的光线 - 一个入口和一个出口,计算它们之间的距离将给你直径。

8因为你的光线将穿过表面与圆柱相交,不仅在最厚的部分,每行网格点只使用最大直径。

这是最常用的方法,适用于任何不规则的圆柱状物体'因为圆柱体的高度大于其直径。

如果您需要澄清任何步骤,请告诉我,我可以画一些草图。