你好,创客!
在《17 个超酷 3D 模型网站推荐——打印机从此不再吃灰》一文中,我们为大家介绍了一系列风格迥异的 3D 模型网站,无需自己建模,就能获取海量的模型资源,即刻享受造物乐趣!不过,在拥有心仪的 3D 打印模型文件后,你还需要做一件事,才能让你的 3D 打印机乖乖地实现“无中生有”。那就是——对模型文件进行切片处理。
在讲解切片这一关键概念之前,我们首先需要了解,一个相对完整的 3D 打印操作流程都有哪些不可或缺的步骤。

正如上图所示,得到 3D 打印模型文件仅是第一步。要让 3D 打印机启动打印任务,你还需将模型文件导入切片软件(Slicer / Slicing software)中进行切片,然后将切片的结果——G 代码(G Code)导入 3D 打印机。
读到这里,或许你已经产生了许多问号:为什么需要切片?切片的原理是什么?切片的产物——G 代码又是什么?继续往下看,本文将为你娓娓道来。
切片的作用
切片,本质上来说是一个“翻译”的过程。
我们在第一步中获取到的 3D 打印模型是一种三维图形文件(如 STL),包含由 N 个三角形面片组成的几何信息,并利用这些信息的集合来表示物体的外轮廓形状。

然而,3D 打印机属于机械设备,它的运行需要的是“如何做”的指令信息,而不是描述“是什么”的几何信息。因此,问题出现了:3D 打印机无法读取和理解模型文件中的几何信息,而模型文件本身也不具备存储指令信息的功能。如此,3D 打印模型和 3D 打印机之间,出现了信息供求不对等的鸿沟。
而切片,就是弥合这一鸿沟的桥梁。它的作用,就是将 3D 模型文件中的几何信息“翻译”成 3D 打印机可以读取和理解的指令信息。除了转换模型文件中原本的几何信息之外,你还可以通过切片软件增加更多额外的辅助信息(例如调整热床或喷嘴的温度、有无支撑等),让 3D 打印机更完美地将模型还原、打印出来。
为了更好地解释个中关系,我们可以将这个过程比作烹饪。仅凭一张菜的图片( 3D 模型文件),手艺再高超的厨师(3D 打印机)也几乎不可能完美还原图中菜的味道。但如果制作相应的菜谱(通过切片产生 G 代码),详细地描述这道菜所有的原材料、用量以及烹调顺序,再添加每个烹饪步骤的火候、手法等辅助信息,问题就迎刃而解了。
此外,如果你对计算机数控有所了解,那么 3D 打印模型、切片软件和 G 代码之间的关系也可以对比参照计算机辅助设计(CAD,Computer Aided Design)、计算机辅助制造(CAM,Computer Aided Manufacturing)和计算机数控(CNC,Computer Numerical Control)之间的关系。
切片的工作原理
在大致了解切片的作用后,我们再结合目前最常用的切片软件——Cura,简单介绍一下切片的工作原理,即切片引擎和其中涉及到的几个关键概念。
Cura 的切片引擎在对模型文件进行切片处理时,主要会经历以下五个步骤。

优化模型
我们在上文的 3D 打印操作流程图中介绍过,要对一个 3D 模型进行切片,首先要将其导入到切片软件中,让后者可以读取模型文件中的几何信息。载入模型后,Cura 引擎还会基于“最优模型”(OptimizedModel)对模型进行优化。这里的优化,指的并不是改变模型文件原有的几何信息,而是在读取信息的同时,分析并存储几何信息中的关联。
如前文所言,3D 模型文件的几何信息,其实就是对由 N 个构成模型的三角形面片的位置描述。因此,Cura 引擎的优化,就是分析、建立、存储这些三角形面片之间的关联,也就是点-面关系(vertex-face relation)。听起来复杂,其实就是分析哪些三角形是相邻的,点-面关系因此也可以被称为相邻关系。
举个栗子:若要一个人记住「8,10,12,20,25,30」这一组数字,他可以选择简单粗暴地背下来而不分析这些数字的关系,也可以在背诵的同时在脑海中建立关联:「8,10,12」分别是 2 的四、五、六倍,而「20,25,30」分别也是 5 的四、五、六、倍。
或许你会问,建立了这些相邻关系有什么用呢?答案很简单:优化模型及建立三角面片的相邻关系,是 Cura 能够进行快速切片和划分组件的关键前提。
进行切片
CuraEngine 在这一步的主要动作,是将 3D 立体模型横切成 N 个 2D 平面(请脑补下切土豆片的画面)。结合 3D 打印机的机械结构,可以理解为用 X 轴和 Y 轴形成的 2D 平面,以一定的 Z 轴高度(层高)对 3D 模型做一层一层的相交切割。2D 平面与构成 3D 模型的三角形面片相交,就会得到对应的相交线条。

我们说过,切片的目的产物是 2D 平面上的 2D 图形。但现在相交切割的结果只是一堆线条,该怎么知道哪些线可以组成封闭的 2D 图形呢?这时,在优化模型中对三角形面片建立的相邻关系就派上用场了。如果两个三角形面片是相邻的,且都与同一个 X-Y 平面相交,那它们分别与 X-Y 平面相交时产生的线条也一定是相邻的。比如,A 和B 是两个相邻的三角形面片,而它们分别与 X-Y 平面产生的相交线(红线与蓝线)也是相邻(相连)的。

因此,CuraEngine 可以根据三角形面片的相邻关系,迅速判断出每一层中线条的相邻关系,并将相邻的线条连接成封闭的 2D 图形。到这里,切片这一步骤的工作就算完成了:3D 立体模型被N层 2D 平面相切,每层都形成了一个或多个封闭的 2D 图形。
划分组件
组件(LayerPart)是 CuraEngine 中的一个重要概念。上一步切片的产物是 N 层封闭的 2D 图形,但每层的图形数量却不一定是相同的。而每一层不相交的 2D 封闭图形,就叫做组件。
如下图,引用 Cura 官方的栗子:若将一个有四只桌腿的桌子进行切片,层②有四个组件,但层①只有一个组件。

在这一步,CuraEngine 将不相交的 2D 封闭图形划分定义为不同的组件。在后续生成 G 代码时,以组件为单位编译指令,目的是尽可能地去除组件之外的多余信息,从而提高打印效率。
标记区域
在上一步中,我们对每层的组件进行了划分。而这一步标记区域的具体工作,就是规划喷嘴在组件中不同区域的打印模式,分为轮廓(Insets)和填充(Up/Down skin)。对于同一个组件,它的外围线条区域将采取“轮廓”的打印模式,而线条内部的区域则会采取“填充”的打印模式。至于轮廓和填充的具体参数(例如轮廓的厚度、填充的密度和图案等),你可以在 Cura 中进行单独设置。需要注意的是,这一步仅是标记不同区域,规划相应的打印模式。到下一步生成 G 代码时,才会生成不同区域内的具体打印路径。
生成G代码
在这个步骤中,CuraEngine 会将之前所有步骤中涉及到的几何和参数信息都收集起来,然后编译成 G 代码,指导 3D 打印机工作以产出目标模型。如下所示,Cura 的官方文档中列出了在生成 G 代码时主要依据的部分重要概念:
- 路径优化(PathOrderOptimizer):顾名思义,就是喷嘴在移动时会选择最近的组件进行打印,以减少需要移动的距离。
- 线条填充(Infill):以线条的方式进行填充打印。
- 绕路运动(Comb):为了避免产生拉丝,喷嘴会尽量选择绕过需要空驶的路径。
- G代码生成(GCodeExport):用以生成G代码,共分为两个步骤。首先是收集汇总每层全部的路径信息,然后再编译生成G代码。
看懂G代码
G 代码是切片的产物,也是 3D 打印机进行打印时依据的指令。G 代码属于一种独特的编程语言,因此它也像 C 语言、Python 等语言一样具有可读性。只要掌握了其基本语法结构和常见字符的意义,就能大致判断出不同指令的含义。下面,我们对 G 代码的结构进行简单的拆解。

首先,G 代码可以分为 G-code 和 M-code 两种类型。其中,G-code 是几何命令(Geometric code),包含3D打印模组如何移动等指令。从 G 代码的命名上也可以看出,G-code 是最核心的G代码类型。而 M-code 是非几何命令(Miscellaneous code),可以用来指定热床温度、风扇的启用状态等非几何参数。
紧跟在字母 G 或 M 后的数字,用以表示不同动作。例如,G0 是控制打印模组快速移动,而 G28 则是控制打印模组返回初始点。
其余的参数,一般由一个或多个字母数字组合构成。字母通常表示执行操作的对象,而数字则表示具体的参数变化。例如:G0 X5 Y20 表示控制打印模组从当前位置移动到 X 坐标为5、Y 坐标为 20 的位置。不过,不是每一个 G 代码中都必须有具体的参数。比如 M84,就是简单粗暴地将电机禁用的意思,后面不需要加其他参数。
更多字母代表的含义,可以参考维基百科上的解释。
需要注意的是,采用不同核心固件的 3D 打印机,在读取同一个 G 代码指令时可能会产生不同的理解,导致执行不同的操作。对于这类情况,有以下三种解决办法可供参考:
- 尽量选择 3D 打印机的专属切片软件。例如 Snapmaker Luban,就是为 Snapmaker 3D 打印机量身定做的切片软件。Snapmaker Luban 会根据 Snapmaker 3D 打印机的固件类型,生成最适配的 G 代码。
- 若不得不使用其他切片软件,可在切片软件中选择你的打印机型号。例如在 Cura 中,就可以在机型列表中选择“Snapmaker”打印机。
- 若不能选择打印机型号或机型列表中没有你的打印机,可在切片软件中添加/新建打印机,并选择正确的固件类型。例如 Snapmaker 3D 打印机采用的核心固件是Marlin。
常用切片软件推荐
基于口碑、实用性和价格等多方面的考虑,本文推荐以下6个常用切片软件。无论你是老司机还是萌新,都能通过它们满足大部分切片需求。
|
名称 |
价格 |
操作系统 |
获取链接 |
|
Cura |
免费 |
Windows, macOS, Linux |
https://ultimaker.com/en/products/cura-software |
|
ideaMaker |
免费 |
Windows, macOS, Linux |
https://www.raise3d.com/pages/ideamaker |
|
Repetier |
免费 |
Windows, macOS, Linux |
https://www.repetier.com/ |
|
PrusaSlicer |
免费 |
Windows, macOS, Linux |
https://www.prusa3d.com/prusaslicer/ |
|
Simplify3D |
$150 |
Windows, macOS |
https://www.simplify3d.com/ |
|
Snapmaker Luban |
免费 |
Windows, macOS, Linux |
https://luban.xyz/ |
切片参数与技巧
有过 3D 打印实战经验的同学们都知道,无论准备的 3D 模型文件有多完美,在实际打印过程中总会出现各种意想不到的小问题。不过在大多数情况下,这些问题都可以通过巧妙灵活地设置切片软件中的各种参数而得到改善或解决。下面,我们就来聊聊切片中那些“老生常谈”的参数与技巧。
层高
层高就是切片时层与层之间的高度。层高越低,打印时间越长,原模型的细节就能被还原得越好。相反地,层高越高,打印耗时是降下来了,但每层之间的细节就会越粗糙。掌握这一参数特性后,我们就能根据具体的场景做出选择:若模型本身并不包含很多细节或以实用为主,则可适当增大层高,以节约时间成本;若模型的细节精美或以观赏为主,则可减小层高,多花点时间也无妨。
外壁厚度
这个参数从字面上就能很好理解:外壁越厚,模型的外皮肤就相对越坚固;反之亦然。这其实和另一个道理相通:脸皮越厚,越不易受到伤害。就算打印出来的模型都不成功,也不会感到丢人或者挫败。大不了从头来过,总有一天会成为高阶玩家。做人需要如此,做有毅力的创客更需要如此!!需要注意的是,壁厚值最好设置为喷嘴直径的倍数,不然打印效果可能会打折扣。

回抽
当 3D 打印模组空驶时,喷嘴中已经被熔化的耗材会因重力影响而向下产生渗漏,导致产生不美观的拉丝(觉得美观的同学可不设置此参数)。在设置了回抽参数后,每当打印模组空驶时,耗材会被回抽一段特定的距离,从而抵消掉了原本会向下渗漏的距离。不过,若参数设置不合适,会导致在空驶结束、继续打印时出料不足,或者导致耗材在喷嘴中堵塞。像回抽距离、回抽速度、抬升高度这些相关参数,并不是越大越好和越快越好。因此,还是得根据实际情况不断调整设置,才能既防止拉丝,又不会造成其他问题。
填充密度
这一参数一般用百分比来表示。若设置为 100%,则表示目标区域将被完全填充。但因为挤出量有时不稳定,设置 100% 的密度很有可能导致模型变形。15%-30% 的填充密度就足够应对一般情况的模型打印需求,经济适用又省时。若想增加模型的强度,填充密度是最常被提及的参数之一。
支撑
当打印模型有悬垂的部分时,支撑就需要闪亮登场了。支撑的作用,就是给悬垂部分充当打印基底。如前文所说,3D 打印机是一层一层地进行打印。除了起始层,每一层都是建立在其下一层的基础之上。如果悬垂角度大于等于 90°,那悬垂部分的第一层是没有任何东西可以支撑其打印的。实际上,当悬垂角度超过 45° 时,如果不添加支撑,打印就会很容易出问题。在 Snapmaker Luban 中,除了支撑的位置之外,还可设置支撑的构造(直线型、网格型等)、密度、Z 距离等参数。

起始层粘附
俗话说得好,好的开始是成功的一半。因为 3D 打印就像盖楼,所以一个坚固靠谱的起始层对于 3D 打印来说非常重要。如果起始层的粘附不理想,就有可能会出现移位、错层、翘边等现象。也正因为如此,Snapmaker Luban 支持对起始层进行单独的参数设置,如打印速度、空驶速度、层高、走线宽度等。此外,还可以通过设置热床附着结构来改善起始层的粘附程度。
看完了以上切片技巧,相信你已经明白一点:没有绝对完美的参数设置,也没有绝对完美的打印成品。只要理解这些参数的意义,并且能根据不同的需求场景进行灵活变换,从而得到最合适而非最好的打印品,你就会感受到身为创客的自豪以及创造的魅力。
关于切片软件和 G 代码,本文就介绍到这里,希望能给你带来帮助!
今后 Snapmaker Academy 还将为大家带来更多实用的精彩内容,请保持关注!
如果你还对 3D 打印的其他内容感兴趣,请发送邮件至 support@snapmaker.com 告诉我们,或在社区留言噢!
免责声明
本文提及的所有软件排名不分先后。
本文中提及的所有软件仅为推荐,不代表 Snapmaker 赞成其中任一软件的内容、观点及立场。
注:本文中提到的 3D 打印均特指熔融沉积成型(Fused Filament Fabrication,FFF)3D 打印。
参考资料: