吐嘈
3D打印一个大件有时要打七八个小时,鉴于机器太破,最好是有人在旁边守着,注意有没有发生堵头之类的事情。然而每次都得拿出整块的七八个小时实在困难,而且一旦断了接不起来,之前打的也都废了。所以十二分想知道有没有断点续打之类的功能。然而经过多方查证Repetier-Host(Mac 1.0.2)似乎并没有这个功能,这就很心塞了。
然而在熟知了打印软件的工作原理之后探索出了一条人肉续打之路,记在这里以做共享。所谓人肉操作就是需要人工记录断点位置。
原理
Repetier-Host的工作原理其实是执行gcode代码,你会在Repetier-Host的面板上看到一个G-code的页面(参见下图),那个显示的就是即将被执行的gcode代码。gcode代码是一种工业控制指令集,也就是定义打印机如何位移,如何挤出等等一系列动作。如果你的打印模型是stl类型,需要先用Slic3r切片,切片的过程实际上也就是将stl模型转换成gcode指令集。所以这个切片结果是能否断点续打的重要资料。因为断点续打做的事情就是把同一个gcode文件中上次没执行完的指令继续执行。在Repetier-Host中利用Slic3r切片之后会生成一个tempt.gcode的文件,注意窗口下面的日志区,会显示这个gcode文件被放在哪里,根据路径找到这个文件,将它备份下来。如果你直接拿gcode文件来打,那就不用再切片了,直接执行就可以。下面的操作也是针对这个文件。
操作
是否可以续打的重中之重是已经打印完的部分没有在打印平台上发生移动,否则只能拜拜。确保这点之后即可进行下面操作,简单来说可以分为以下步骤,
- 定位Z轴
- 找到gcode文件
- 砍掉已打完部分代码
- 执行gcode文件
下面分步骤说
1.定位Z轴
中断打印有两种情况:主动中断,时间太长不想打了;被动中断,停电了。
主动中断的情况好办一点,因为软件会显示目前打印机正在打印第几层,通常在窗口的左下角位置,显示一个类似174/285的东西,这是说这个模型共有285层,现在正在打印174层。我不推荐这时候断开,因为174层正在进行中,可能这一层已经进行了一大半,此时断开,下次续打你是跳过这层还是从头开始都不太合适,所以我的建议是稍等一下在下一层开始的时候马上Kill掉任务。也就是说你需要盯着点这个数字,一旦它跳到175,你就马上按下Kill,这虽然也会导致一些175层的指令跑过,不过短时间不会有很多,所以影响也不大(对于我家这台精度不高的来说没区别)。然后你需要打开print pannel页面记下来这时的Z轴高度,比如我这次停止任务Z轴在52.6这个位置(如果忘记记录这个位置也可以根据层数计算,只要知道你的层高和首层高度就可以)。
如果是被动中断就麻烦点,如果电脑还亮着,可以按照上面的方法获取Z轴,如果电脑也黑了,那就只能手动量了。方法是切换到print pannel界面,手动升起喷嘴到明显高于已经打完的部分,然后平移到打印件上方,开始慢慢下调Z轴,调到距离打印件上方0.1mm的位置,这个时候记录Z轴数值。拿上面例子来说如果你的层高是0.3,得到的结果可能会在52.6上下有个0.3的波动,你需要在下面代码里找一个最邻近的。
2.找到gcode文件
如果是直接拿gcode文件打印的可跳过这一步。如果是自己切片打印的默认的文件名是tempobj.gcode,系统搜索一下吧。或者Repetier-Host的"File"菜单里面也会有一个"Open Recent G-Code File"的选项,可以找找。
在开始下面步骤之前最好复制一份这个文件作为备份,如果编辑错误还可以重新来过。
3.砍掉已打印部分的代码
gcode文件是一个纯文本文件。编辑的时候最好使用代码编辑器,windows下可以用记事本代替,甚至在Repetier-Host都可以编辑。同样以上面例子,我们需要寻找包含Z52.6的指令,比如我找到的是G1 Z52.600 F7800.000 ,这局代码的意思就是把Z轴移动到52.6的位置,后面F是指定风扇转速的,这条代码就是175层的开始位置了。这之前的代码都是被执行过的了,所以都可以删掉,剩余部分就是续打的代码。不过在文件最最开始有一些初始代码必须要保留。也就是下面的:
M107 M104 S205 ; set temperature G28 ; home all axes G1 Z5 F5000 ; lift nozzle M109 S205 ; wait for temperature to be reached G21 ; set units to millimeters G90 ; use absolute coordinates M82 ; use absolute distances for extrusion G92 E0
这段代码后面都有注释,就是坐标复位,喷头加热等等一系列准备工作,这是很必要的。所以这段要保留。否则你就得自己手动在print panel去加热和坐标复位了。
至此你就会得到一份续打的代码文件了。
4.执行gcode文件
我们用Repetier-Host打开上面得到的代码文件看看效果。
可以看到,G-code栏目下显示的需要运行的gcode是一个悬空的模型,如果你没有移动之前已经打了一半的模型那么这时按下Run,它会在上次的模型上面继续任务。
不过最终的效果还是会有断层的样子,可能是温度或喷嘴或耗材挤出不均匀等原因导致的,不过打磨之后还可以接收。
后记
上面有讲到主动中断和被动中断,主动中断的续打要稍好点,其实最好的方式是做好合理的计划,事先拆分代码,比如软件预计打印6小时,我希望分两次执行,就可以看看gcode有多少行,然后按行数等分,但是分的时候要注意,一定要找到这样的代码开始分G1 Z52.600 F7800.000