我正在开发一个用于3D打印的网格切片工具。通常情况下,它应该将3D网格模型切割成2D形状(一些多边形,可能带有孔),并使用特定的图案填充它们,确定其厚度。这些路径将用于生成3D打印机固件的gcode命令。
现在有各种不同的开源工具,用于相同的目的,其中包括Python和Perl编写的工具。但我的目标是理解切片器的工作流程,并以C或C ++编写自己的工具。
到目前为止,我已经能够获得切片轮廓,现在要对其进行填充。问题是我找不到有效的算法来完成这个任务。 infill示例的简略过程如下:
是否有人能够建议如何生成这些填充路径?谢谢。
当前我正在使用以下算法:
这是一个简单而快速的算法,但它不适用于具有凹多边形和孔的多边形。此外,它只使用一种指定的图案。
现在有各种不同的开源工具,用于相同的目的,其中包括Python和Perl编写的工具。但我的目标是理解切片器的工作流程,并以C或C ++编写自己的工具。
到目前为止,我已经能够获得切片轮廓,现在要对其进行填充。问题是我找不到有效的算法来完成这个任务。 infill示例的简略过程如下:
![](https://istack.dev59.com/xCID1.webp)
当前我正在使用以下算法:
- 查找形状的边界框
- 使用线条在垂直方向上分割bb(线条数量= bb.width / path.thickness)
- 查找形状与每条线的交点(每行应该有两个点)
- 从这些点构造偏移量为边界的线段
- 添加连接原始线段的线段,形成一条带状的线段
- 我们已经准备好生成gcode或绘制路径了
![Simple infill algorithm](https://istack.dev59.com/clNB8.webp)