我有三维模型(stl文件)的不规则圆柱状物体,我想沿着长轴以设定的间隔测量。结果应该是直径的分布(或椭圆形横截面的长轴和短轴的长度)。 有没有办法使用标准的3D软件之一(Geomagic,Meshlab,Solidworks)的内置函数来做到这一点?
答案 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因为你的光线将穿过表面与圆柱相交,不仅在最厚的部分,每行网格点只使用最大直径。
这是最常用的方法,适用于任何不规则的圆柱状物体'因为圆柱体的高度大于其直径。
如果您需要澄清任何步骤,请告诉我,我可以画一些草图。