刀具路径算法如何决定打印闭环多边形的方向

3D打印 切片
2021-05-20 16:52:04

我了解切片器程序如何创建一组闭环多边形以逐层打印。对于需要打印的给定闭环多边形,刀具路径生成器将知道坐标以及这些坐标如何相互连接,以便按该顺序遍历一组段将使挤出机头回到第一个坐标来完成闭环。

我的问题是:刀具路径生成器通过什么机制决定穿过闭环的方向?由于它是一个循环,因此可以按原样“顺时针”或“逆时针”打印该循环。任何细节,以及一些大牌切片器程序如何确定这一点的进一步解释的链接,非常感谢。

2个回答

虽然这个答案在回答问题时做出了有效的尝试,但它是基于个人经验。

我去看了文献,直接去Cura里的源码找答案。在学术文章“增材制造工艺规划确定一组 2D 轮廓的方向”中,Volpato 等人。描述用于识别每一层中每个轮廓的任意方向的几种方法,并另外识别哪些轮廓是“内部”的,哪些是“外部的”。我从论文中引用:

材料加工的路径规划需要有关轮廓方向的信息,即顺时针(CW — 内部)或逆时针(CCW — 外部)。

他们继续解释识别哪些轮廓是外部的,哪些是内部的的重要性,以便路径规划算法可以稍后确定应该放置填充物的位置。填充放置在任何外部轮廓的内部,以及任何内部轮廓的外部。

当假设 STL 模型中的法向量是正确的时,识别 2D 轮廓是 CW 还是 CCW 的简单方法是分析法向量与从面的两个顶点获得的向量之间的向量(叉)积。

这假设切片器已经确定了切片平面和 STL 文件之间的交点,并将这些交点分类为闭合轮廓。这种初始交点收集和轮廓构造导致任意方向性:

由于轮廓的任何线段在连接线段时都可以是序列中的第一个线段,因此其方向将决定轮廓的方向。因此,形成的 2D 轮廓是随机分类的,例如,外部轮廓可能会被指定为 CW 或 CCW 方向。因此,这一步无法正确识别生成的轮廓的方向。

射线追踪方法实际上基于多边形内的点测试,确定哪些轮廓被其他轮廓包含,然后每个轮廓的方向在 CCW 和 CW 之间交替,最外面的轮廓按 CCW 定向。

因此,由用于 FDM 增材制造的切片程序生成的闭合轮廓的默认方向性结果是基于上述交叉乘积(以及基于论文中概述的其他方法)的 CCW。当然,打印轮廓的标准方向性不一定是这样,它似乎是 AM 社区采用的标准。然而,当模型在轮廓内部生成轮廓时,这些轮廓的任意方向性被确定,然后从外部到内部交替,从 CCW 开始。

作为确认,根据 CURA 源代码中的简单注释:

/*!
 * Outer polygons should be counter-clockwise,
 * inner hole polygons should be clockwise.
 * (When negative X is to the left and negative Y is downward.)
 */

数学

在数学中,有一种方法可以遵循一条路径,通常是逆时针方向:

假设一个圆的周长路径 r=1 大约 (2,2),那么路径可以定义为 - 其中是路径参数,在这种情况下角度为 0到 360°,只需增加角度即可右手旋转。如果我们有相同的路径但不同的起点,偏移,那么路径将读取所以数学通常是逆时针的f(p)=(cos(p)+2sin(p)+2)pθf(p)=(cos(p+θ)+2sin(p+θ)+2)

切片机

每个切片机都在应用数学。据我所知,任何切片器都会生成一个周边路径,如果使用相同的设置进行切片,它总是以相同的方式执行。对于一种情况,请看: 在 cura 中切片的 5 秒打印 在这种情况下,从 7 点钟位置开始逆时针。但是,打印床上的其他切片器或其他对象可能会使用其他引擎,因此不会那样做。他们可能会顺时针走,因为求解的路径并求解会产生完全相同的打印,只是与周长的打印方向相反。p=0°360°p=360°0°

只要将对象的周长作为一个闭环求解,周长就需要只有一个指定的方向。该方向将是顺时针或逆时针,具体取决于切片器如何准确解决其计算。由于两个方向同样有效,因此这是程序员的决定。程序员甚至可以根据他们想要的任何因素规定顺时针或逆时针解决方案。如果他们愿意,他们可能会使用层编号(用于交替方向)或用户设置甚至 RNG。

另一方面,内存的操作和写入方式也会导致路径和数学看起来不同。两个例子:

  • 逆时针正确求解路径并将切片放入 FILO 内存,从而从最后一个求解点开始顺时针操作。
  • 逆时针求解并存入FIFO,逆时针运行。

结论

用于 3D 打印的切片机具有硬编码方式来选择生成 G 代码时遵循的方向。任何和所有周长都将从某个任意点开始打印到该方向。最后,切片引擎程序员选择决定了路径是在数学意义上“向前”还是“向后”运行。

附录

切片器源自 CAM 编程。CAM - 计算机辅助加工 - 在求解与 3D 打印机无关的刀具路径时还要考虑一件事:刀具的凹槽方向。事实上,这将决定路径向哪个方向提供更好的切割,并且改变凹槽应该交换路径方向以确保最佳结果。