如何移除六角网格的内部部分

3D打印 3d 设计 opencad
2021-05-04 06:47:38

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

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

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

范围 = 15,角度 = 60°

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

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

2个回答

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

在此处输入图片说明

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

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

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

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

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

  1. 创建一个 2D 网格,类似于您现在拥有的网格。
  2. 创建所需形状的 2D 轮廓,尺寸过小,以便您可以添加流形(作为周长)。
  3. 复制这个形状。
  4. 在第一个副本中添加一个流形。
  5. 创建第二个副本和网格的交集。
  6. 创建两个副本的联合。
  7. 挤出联合。