Nomar记录一段历史
将网格转换为构造实体几何

我有一个碗的网格,它具有半球形的完美形状。我想轻松地将其转换为包含球体的实体和将从中减去的盒体实体。

Conversion process

将网格搜索到实体表明,在 3ds Max、Fusion 等各种工具中,通过在创建实体时与网格或横截面进行视觉比较来手动创建球体可能去向的手动近似值,但我正在寻找由软件生成/计算的最小封闭球体和框。

源文件格式当然不是问题,它可以是任何已知的网格文件。

3个回答

可以将目标的计算视为简单的几何图形,尽管计算公式的结果比简单的要复杂一些,但也不是很多。

根据Quora 的说法,这个目标的基础是立方体的八个顶点将与球体的表面重合。如果希望用这种形式打印 3D 对象,这样的对象可能无法满足流形的要求,但可能不会,这取决于所使用软件的浮点运算。

我找到了一个简单的公式,它提供了给定立方体边长的球体半径。

 $fn = 90; edge = 10; cube([edge, edge, edge], center = true); sphere_radius = sqrt((3 * pow((edge/2), 2))); sphere(sphere_radius);

上面的代码是在OpenSCAD 中完成的,为了清晰起见,这张图片的球体是透明的:

内接于球体的立方体

翻译成通用英语,似乎可以将边长除以 2,然后取该结果的平方并乘以三倍。取该值的平方根,它成为球体的半径。

上面的答案由数学论坛提供,并逐字表示如下:

 ____________________________ D = \| (L/2)^2 + (L/2)^2 + (L/2)^2

在这种情况下,字母 D 在应该被称为半径时似乎被误认为是直径。

作为这个有趣练习的一部分,我还从球体中减去了立方体,将其切成两半以获得可见性,从而得到以下图像:

球体减去立方体

所以这在很大程度上取决于你想做什么。

  1. 如果你想用数学方法计算什么立方体适合什么尺寸的球体,那很简单。 立方体对角线必须适合这里的直径。对于边缘为 'l' 的立方体和带有 diamamer 'd' 的 shpere,则<= d。

  2. 如果您想在 CAD 中建模一个立方体和一个球体(或一个在另一个内),您只需这样做。他们都是原始人。不到一分钟。

在此处输入图片说明

  1. 您也可以在设计中使用网格。我会假设如果你想使用网格,网格必须包含的不仅仅是一个光滑的碗或者网格的重点是什么? Fusion 360 允许您导入网格并像这样使用它并将其与模型对象(就像盒子一样)结合起来。

  2. 如果您愿意,您实际上也可以将网格转换为实体模型。 Fusion 360 CAD 有多种方法可以帮助您将该网格转换为造型。首先创建一个代表网格对象形状的雕刻对象(如球体或四边形球)。接下来导入网格,然后将模型折叠在网格上(像模型一样使用它来形成模具)。然后您可以删除网格并使用成型的造型。

@markshancock@fred-dot-u 的回答描述了创建 CAD 原始球体和减去立方体的过程;在大多数 3D CAD 程序中,这是一项微不足道的任务。您可以手动测量网格以确定其尺寸,坦率地说,我会推荐这种方法。 (如果您有一项大型任务,例如转换 100,000 个半球网格,我会重新考虑该方法并首先转到生成网格的源!)

然而,这些并没有解决将网格转换为基元的问题,这对于任意网格通常是不可能的(因此 CAD 程序不会有这样的功能),而且比简单地测量和重新创建要困难得多。

您断言您的网格文件“具有半球形的完美形状”。网格基本上位于一组顶点上,由边和面连接。顶点是由数字坐标定义的,在计算机中总会有一些圆角误差,直线边和平面绝对不是圆的。因此,它可能非常接近,但绝对不会是完美的。

在这种非常特殊的情况下,球体的直径与半球的圆形面的直径相同。您可以合理地编写一个简单的程序来定位网格中任意两个顶点之间的最大距离并将其用于直径。这两点之间的线的中点将是球体的中心。这应该会产生良好的结果,但可能不“精确”,具体取决于网格的细节。

我不会尝试解释如何创建实际程序,因为这不在 3D 打印的范围内。

随机文章