我正在开发用于 3D 打印目的的网格切片实用程序。一般来说,它应该将 3d 网格模型切成 2d 形状(许多多边形,可能带有孔),并使用特定图案用确定厚度的路径填充它们。这些路径将用于为 3d 打印机固件生成 gcode 命令。
有各种用途相同的开源工具,用 python 和 perl 编写。但我的目标是了解切片器的工作流程并用 C 或 C++ 编写我自己的工具。
到目前为止,我能够得到切片的轮廓,现在要用路径填充它们。问题是我没有找到有效的算法来做到这一点。填充示例的示意过程:
谁能建议如何生成这些填充路径?谢谢。
目前我正在使用以下算法:
- 找到形状的边界框
- 用线垂直分割 bb(线数 = bb.width/path.thickness)
- 查找形状和每条线的交点(每条线应该是两个点)
- 从这些点构造一个与边界偏移的线段
- 添加一个段,将原始段连接在一起形成一条线
- 我们已经准备好生成gcode或绘制路径
这是一种简单快速的算法,但它不适用于凹多边形和带孔的多边形。它也只使用一种指定的模式。