3D 打印入门:软件
本专栏是关于 3D 打印的两部分系列文章的第二篇。在第一部分中,我讨论了 3D 打印背后的一些总体概念,并概述了一些现有的硬件选择。在本文中,我将继续解释您用于与 3D 打印机交互的不同软件类别,并讨论当前每个类别中社区最受欢迎的一些软件。
部分原因是由于 3D 打印机社区的开源倾向,Linux 下有许多不同的软件选择可用于打印机。与桌面环境或 Web 浏览器一样,您使用的软件在许多情况下是个人偏好的问题。如果您的打印机来自 RepRap 系列,则尤其如此,因为没有“官方”软件包;相反,社区中的每个人都使用他们认为在特定时间最适合他们的软件。在某些情况下,该软件仍处于早期阶段,因此关注最新和最强大的功能以及最新版本是值得的。我不会卷入关于哪种软件是最好的圣战,而是介绍一些更流行的软件选择,并重点介绍我目前使用的软件,这基于我从 RepRap 社区收集到的一般共识。
部分原因是由于该软件的快速发展,部分原因是由于许多软件都是新的,在大多数情况下,您不会找到为您的发行版打包的任何此类软件。那么,安装方式很像你们中的一些人可能记得的 APT 等软件包管理器出现之前的日子。每个程序都在其安装文档中列出了自己的库依赖项,通常软件通过将 tarball(其中包含预编译的二进制文件)提取到您选择的某个目录中来安装。
如果您是 3D 打印新手,您可能会认为只需下载并运行一个软件,但事实证明,由于打印机的工作原理,您需要几种不同类型的软件来管理打印机,包括用户界面、切片器和固件。每个软件都执行特定的角色,正如您将看到的,它们都形成了一种逻辑上的递进关系。
固件固件是在直接连接到打印机硬件的电子设备上运行的软件。此固件负责控制打印机上的步进电机和加热器,以及任何其他电子设备,例如您用作限位开关的任何机械或光学开关,甚至风扇。固件通过 USB 端口接收指令,指令形式为 G 代码——一种通常用于 CNC 机器的机器指令的特殊语言。G 代码将包括将打印机移动到特定坐标、挤出塑料以及执行打印机支持的任何其他硬件功能的指令。
通常,3D 打印机电子设备是基于 Arduino 的,因此固件使用与您可能用于配置任何其他 Arduino 芯片的软件相同的软件进行配置。但总的来说,您不应该过多地深入研究固件代码。您只需要编辑一个配置文件头文件,并且仅在需要校准打印机时才需要编辑。校准本质上归结为告诉您的打印机执行某些操作,例如沿一个轴移动 100 毫米,测量打印机实际执行的操作,然后根据结果向上或向下调整固件中的数值设置。除了校准之外,固件还允许您控制步进电机速度、加速度、打印床尺寸以及打印机硬件的其他限制。一旦您校准了固件中的设置并刷新了固件,除非您对硬件进行更改,否则您应该不需要再过多地研究这些设置。
如果您使用 MakerBot,您的固件选择很简单,因为它具有自定义固件。如果您使用 RepRap,目前最流行的固件是 Sprinter 和 Marlin。两者都与您在 RepRap 上找到的最常见的电子设备兼容,并且每个都具有额外的功能,例如加热构建平台和 SD 卡支持。我目前使用 Marlin(图 1),因为它是我的 Printrbot 的 Printrboard 的默认推荐固件。在我的情况下,我需要修补默认的 Arduino 软件,使其具有 Teensylu 支持,并且我需要安装 dfu-programmer 命令行软件包(恰好是为基于 Debian 的发行版打包的)。

图 1. 使用 Arduino 软件的 Marlin 配置
切片器正如我之前提到的,固件接受 G 代码作为输入,并完成实际控制电子设备的工作。一般来说,当您打印某些东西时,您需要将某种 3D 图(通常是 STL 文件)转换为 G 代码。执行此操作的程序称为切片器,因为它会获取您的 3D 图并将其切片成打印机可以打印的各个 G 代码层。
固件设置更关注步进电机和加速度设置,而切片器设置更关注耗材尺寸以及您可能想要为每次打印调整的其他设置。您在切片器中控制的其他设置包括打印层高、挤出机和加热床温度、打印速度、实体零件使用的填充百分比、风扇速度以及可能因对象而异的其他设置。例如,对于非常精确的打印,您可能会选择较小的层高(如 0.1 毫米)和较慢的打印速度,但对于大型开瓶器,您可能会选择较大的层高和更快的打印速度。对于需要更坚固的零件,您可以选择更高的填充百分比;而对于刚度不太重要的零件,您可以选择较低的填充百分比。当使用 PLA 或 ABS 打印同一对象时,您需要更改挤出机和加热床温度以匹配您的材料。
Linux 的两个主要切片程序是 Skeinforge 和 Slic3r。Skeinforge 包含在 ReplicatorG 用户界面软件中,并且比 Slic3r 出现的时间更长。Skeinforge 被认为是可靠的切片器,但速度较慢;而 Slic3r(图 2)比 Skeinforge 快得多,但它更新,因此对于所有 STL 文件,它可能不如 Skeinforge 可靠,至少目前还不是。

图 2. 打开默认打印设置选项卡的 Slic3r
Slic3r 是我个人在我的 Printrbot 上使用的软件,其工作流程或多或少是这样的:我选择我要打印的内容,然后根据我认为它是否需要较慢的速度、更多的冷却或更小的层高,我在 Slic3r 中调整这些设置并保存它们。然后,我转到我的用户界面软件来运行 Slic3r 并打印对象。当切换塑料耗材时,我也可能会调整设置,因为不同的耗材需要不同的挤出温度并且厚度略有不同。Slic3r 会根据您的耗材厚度计算出要挤出多少塑料,因此即使您的打印机使用 3 毫米耗材,您也可能会发现实际直径为 2.85 毫米。Slic3r 还可以通过其设置创建特定项目的倍数或按比例放大或缩小项目的大小。
用户界面最高层是一个充当打印机用户界面的程序。此软件通过串行接口(尽管大多数打印机通过 USB 电缆连接到计算机)与打印机通信,并提供命令行或图形界面,您可以使用该界面沿其轴移动和归位打印机、控制挤出或加热床的温度(如果您有加热床,它可以方便地帮助打印的第一层粘在打印床上)并将 G 代码文件发送到打印机。
两个最流行的图形用户界面是 ReplicatorG 和 Pronterface(Printrun 软件包的一部分)。ReplicatorG 出现的时间更长,但 Pronterface 在今天的 RepRap 社区中似乎更受欢迎。一般来说,用户界面本身不切片 STL 文件,而是将其交给另一个程序。例如,ReplicatorG 使用 Skeinforge 作为其切片器,而 Pronterface 默认使用 Skeinforge,但也可以使用 Slic3r。一旦切片器生成 G 代码,用户界面就会将 G 代码发送到打印机并监控其进度。在我的情况下,我使用设置为使用 Slic3r 的 Pronterface。
在图 3 中,您可以看到 Pronterface GUI 的一个示例。窗口的左侧是一组控件,我可以使用这些控件手动控制我的打印机,因此我可以围绕每个轴移动它、挤出耗材并手动设置温度设置。屏幕中间是一个预览网格,我可以在其中看到我加载的对象,并且在打印过程中,我可以查看特定的切片。右侧是一个输出部分,它告诉我打印将使用多少耗材、打印可能需要多长时间以及我可以发送手动 G 代码命令的位置。最后,底部区域显示打印的当前状态,包括我的温度设置以及打印作业的进度。

图 3. Pronterface 的 GUI
我通常在 Slic3r 中进行打印作业设置,保存它们,然后转到 Pronterface,在那里我将加载要打印的 STL 文件。然后 Pronterface 在后台调用 Slic3r 以生成 G 代码。一旦文件被切片,我点击“打印”按钮,将 G 代码发送到打印机。G 代码包括在归位打印机然后开始打印之前将挤出机和加热床加热到一定温度的初始指令。然后在打印开始时,我只需使用 Pronterface 来密切关注进度。
尽管我预计您仍然需要进行大量的实验和研究才能选择 3D 打印机并有效地使用它,但在阅读这些文章后,您应该对可用的 3D 打印机和软件以及它是否是您想要追求的东西有更好的了解。与 Linux 发行版一样,实际上没有适合所有人的正确 3D 打印机和软件包组合,但希望您应该能够找到适合您的需求和品味的硬件和软件组合。