Nomar记录一段历史
如何只为第一层生成gcode?

由于第一层非常重要,我正在寻找一种简单的方法来生成 gcode 以仅打印第一层。我看到使用 Slic3r,您可以从 Z 中剪切但出于测试目的,我更喜欢只选择要生成的多个层,这样我就可以轻松生成具有不同第一层设置(宽度)的不同“第一层测试” ,高度,速度,流量......)我实现它的唯一方法是编辑gcode。有什么帮助吗?谢谢

您这样做是为了设置 Z 高度、床层平整度等,还是有理由评估每个正在打印的特定对象的第一层?

2个回答

我理解你的问题是这样的:

我知道我可以切割网格并只切割模型的底部,但由于我对给定的层数感兴趣,层的高度可能会根据设置而改变(例如:0.2mm、0.1mm、0.05mm。 ..),我想找到一种方法来从完整模型生成任意数量的层。我使用 slic3r。

如果我的理解是正确的,那么你可以通过几个步骤来实现你想要的。

使用详细的 GCODE

该设置位于“打印设置 → 输出选项”下。这将输出带有注释的 gcode。

保存有效打印作业的整理 gcode

基本上,打开一个有效的 gcode 文件,并将最后几行(注释将帮助您了解哪些行,它会因打印机而gcode.tail )保存在单独的文件 ( gcode.tail ) 中。这些线通常是将喷嘴从打印件移开、禁用加热元件、步进器和零件冷却风扇的那些线。

准备first-lines.sh脚本

#! /usr/bin/env sh sed -e '/move to next layer (3)/,$d' $1 > /tmp/gcode.tmp echo ~/gcode.tail >> /tmp/gcode.tmp echo /tmp/gcode.tmp

这个脚本的作用是:

  • 从命令行( $1 )中获取一个文件名,然后将gcode.tmp的一部分保存到gcode.tmp中,不包括“移动到下一层(3)”这一行(您实际上应该使用您实际使用的层数)想要这里, 3只是一个例子)。同样,这样一行的存在取决于您生成的“详细 gcode”。
  • 追加到gcode.tmp文件的内容gcode.tail (这里代替~/你的机器上的实际路径。
  • gcode.tmp的全部内容作为流输出

将您的打印机设置为自动在生成的 gcode 上运行脚本

此设置再次位于“打印设置 → 输出选项”下。您必须输入first-lines.sh的完整路径。还要记住使脚本可执行( chmod +x first-lines.sh )。

您还可以将鼠标悬停在文本框上以获取有关如何访问 slic3r 变量的其他信息(例如,您可能希望从设置中读取层高度并在脚本中计算要保留的层数)。

利润

:)

最后说明:

  • 我尝试了 sed 命令并自己在我的 gcode 上运行了后处理脚本,所以它应该可以工作,但我自己还没有尝试过完整的程序,如果您遇到错误,请发表评论,以便我可以为每个人修复答案。 :)
  • 我使用 slic3r Prusa Edition(我相信这些设置是相同的,但以防万一……您可能希望下载该版本。
  • 以上所有内容都应该在所有主流 Linux 发行版和 OSX 上开箱即用。对于 Windows,已在评论中建议安装CygWin
  • 由于此过程仍然对完整模型进行切片,然后将其大部分丢弃,因此您可以通过仅对模型的相当厚的“底部”进行切片来使其更快。例如:假设您知道您永远不想打印超过 5 层,并且层高永远不会超过 0.3 毫米……在这种情况下,您只能保留模型底部 2 毫米,这样对所有人都是安全的层和层高的其他组合。不过,不要精确地保持 1.5 毫米,因为这可能会生成与完整模型中的顶层不同的顶层。

祝你好运! :)

谢谢麦克。我也从 [Slic3r Github](https://github.com/alexrj/Slic3r/issues/2755#issuecomment-357093913) 得到了一个简单的解决方法。建议的解决方案非常简单:只需添加一个小的 Perl 脚本作为后处理,它会删除所有不打印的层的 gcode。
这与我的建议几乎相同,只是速度较慢(因为它解析完整文件而不是拼接它。:)(而且可读性较差,因为是 perl ;))
OSX 在终端中默认使用 bash;对于 Windows,我建议安装 CygWin。
@CarlWitthoft - 谢谢,添加在答案的主体中。
@LuisRosety - 由于您使用此方法解决了该问题(通过 slic3r 设置对 gcode 进行后处理),请考虑批准此答案或编写您自己的答案并予以批准,以便其他人清楚地表明此问题有解决方案. :)

你可以在第 1 层的末尾插入一个 M30,工作就会在那里结束。

我只有一个建议要补充。除了停止 gcode 执行,建议停止加热器、风扇等。 `M107 M104 S0 ; 挤出机加热器关闭 M140 S0 ; 加热床加热器关闭(如果有的话) G91 ; 相对定位 G1 E-1 F300 ; 收回灯丝在抬起喷嘴 M30 之前,我不是 gcode 专家,但我认为做这样的事情会很方便。
这是正确的@LuisRosty。将最后的 gcode 扔到文件中间与正确拼接文件获得的结果相同(如我的回答中所建议的)。像这样将它扔到文件中的局限性在于,您可以保留大约数百兆字节的未使用 GCODE(除了必须手动执行,这是 OP 想要避免的)。
没错,这是一个手动解决方案。我提供它是因为它比手动删除数千行 gcode **简单得多**。还可以添加 M104 和 M140 以及其他命令以将打印机返回到标准状态,但这意味着用户将重复调整设置并重新运行,直到识别出正确的参数。

随机文章