Nomar记录一段历史
如何移除六角网格的内部部分

我正在使用 OpenSCAD 对一些用于六边形网格(蜂窝)材料的切割模板进行建模。基本上,从参考单元格中,我需要选择给定范围和给定角度内的所有单元格。

我通过创建一个内存网格来实现这一点,该网格覆盖的区域大于我需要的区域(额外范围,360 度),然后测试每个单元格的距离和角度要求,仅挤出那些在这两种情况下都测试为阳性的单元格。

一切都按预期工作......

范围 = 15,角度 = 60°

...但现在我还想添加模板的外轮廓而不包含每个单独的单元格的可能性(因此,一条细线环绕上面的整个“披萨片”)。

我对 OpenSCAD 还很陌生:这里最好的方法是什么? (即使解决方案需要重新实现到目前为止所做的工作,我也很高兴)。

您是要生成凸​​包,还是只想删除所有内部边缘?
如果您无法在此处找到解决方案,请考虑加入 openSCAD 邮件列表/论坛,因为这里有一些非常熟练和有才华的大脑,他们确实是最重要的。
@Mick - 我不确定我是否有足够的知识来理解你的问题(我缺乏术语),但我已经尝试了 `hull()` 函数(如果这是你想要的),但它没有做我想要的是,因为它没有勾勒出我的形状,它通过在它每一侧最突出的点之间画一条直线来“包裹”它......

2个回答

不幸的是,OpenSCAD 没有 2D hull() 转换,尽管它已被请求。您也许能够找到一个实现 2D 外壳的预先编写的包。但是,如果您只想要一个带有任意形状边框的六边形网格,您能不能不作弊,让切片器为您生成网格?您需要做的就是生成信封,然后用六边形网格切片作为填充,并且不要求顶层或底层。大多数切片机将进行六角形填充。

如果你想在 OpenSCAD 中完成这一切,那么我会这样做:

  1. 创建一个 2D 网格,类似于您现在拥有的网格。
  2. 创建所需形状的 2D 轮廓,尺寸过小,以便您可以添加流形(作为周长)。
  3. 复制这个形状。
  4. 在第一个副本中添加一个流形。
  5. 创建第二个副本和网格的交集。
  6. 创建两个副本的联合。
  7. 挤出联合。
我相信我没有足够清楚我想要实现的目标(抱歉,我缺乏来自 CAD 和/或数学的正确术语):我根本不想要内部网格。我只想要我生成的形状的周长,例如:在我的表面边缘的六边形的外部,不与另一个六边形相邻的边......不过,你的提议有一些有趣的地方,也许我正在寻找的解决方案的一部分......那就是:添加流形。我怎么能做到这一点,有一个现有的几何?

我最终自己找到了一个合理的解决方案:

在此处输入图片说明

基本上,我区分了两个相同的非空心几何图形,其中第一个具有比它们需要的更大的单元格(与其他几何体重叠),而第二个具有完全正确的尺寸:

 difference() { base_geometry(range, angle, infill, extra_padding = 2); base_geometry(range, angle, infill, extra_padding = 0); }

这样,实体的唯一剩余部分是几何体外边缘的extra_padding

现在我明白你在追求什么了。我本来想请你提供一张图纸,但你做得比那要好得多。

随机文章