2017-08-30 207 views
0

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

+1

也许你会在http://forums.solidworks.com得到响应 – AndrewK

+1

如果你知道圆柱体的轴,你可以通过获取从顶点到轴的距离来估计半径。对于椭圆轴长度,您可以将圆柱轴重置为垂直,并计算投影点的惯性椭圆(或只是切片中的点)。 –

+0

如果您愿意进行一些编码工作,我可以用Solidworks API指出您正确的方向 – Vlad

回答

0

下面是我想借此Solidworks的API方法:

1收集你身体的所有边缘,将其转换为载体。如果它是一个曲线,只需要endPoint - startPoint。 IPartDoc::GetBodies2IBody2::GetEdges

2使用这些向量作为潜在的轴找出您的身体适合使用IBody2::GetExtemePoint的最小盒子。

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

**如果你事先知道你的身体的方向(即汽缸顶部看起来总是方向为X/X),你可以跳过前三步

4取4个面,你发现那些箱子平行于最长的维度。例如,如果您的盒子是x,y,z轴,x是最长的,则必须将2个面平行于xy平面,2个面平行于xz平面。

5对于这4个脸部中的每一个脸部都会生成一个均匀覆盖脸部的点的网格,点的数量取决于所需结果的准确性,我建议以每个脸部100个点开始。

6从这些点拍摄射线虽然身体与IModelDoc2::RayIntersections

7忽视不与身体相交的射线,那些会给你2分 - 入口和出口,计算它们之间的距离会给你你的直径。

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

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

让我知道如果你需要澄清任何步骤,我可以画一些草图。

+0

感谢您的建议!问题是一些圆柱体是弯曲的,所以边界框的长轴不会与长轴同向。最简单的情况是当物体由两个相对直线段通过45度转弯连接时。 –

+0

你可以上传几个样品部件? – Vlad