kliper的macro(宏)可以一键完成复杂的动作,搭配上Jinja2脚本,比marlin高到不知道哪里去了。
本贴不放照片,避免游客无法查看,尽量都用文字描述使用办法。
一个最基本的宏长下面这样:它的起始行一定是[gcode_macro 宏名字],它没有结束字符。使用严格的分行来编排。#用于注释。
- [gcode_macro START_PRINT]
- gcode:
- {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
- {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
- # Start bed heating (but don't wait for it)
- M140 S{BED_TEMP}
- # Use absolute coordinates
- G90
- # Reset the G-Code Z offset (adjust Z offset if needed)
- SET_GCODE_OFFSET Z=0.0
- # Home the printer
- G28
- # Move the nozzle near the bed
- G1 Z5 F3000
- # Move the nozzle very close to the bed
- G1 Z0.15 F300
- # Wait for bed to reach temperature
- M190 S{BED_TEMP}
- # Set and wait for nozzle to reach temperature
- M109 S{EXTRUDER_TEMP}
复制代码
要使用宏,你只需要把宏代码引入到printer.cfg这个配置文件就可以。
引入宏代码有多种方法:
1、直接把代码拷贝到printer.cfg。此方法会导致printer.cfg过于混乱,所以一般我们只把重要的几个宏放在这里,比如START_PRINT以及END_PRINT。
2、在printer.cfg同级目录新建macros.cfg(具体叫什么随便你,一般大家都叫这个),然后在printer.cfg文件里面引入macros.cfg这个文件就可以了。
3、如果你使用的宏过多,更稳妥的办法是每个宏或者每一组宏,放在单独的某个文件。然后把这些宏文件,集中到一个目录里面。接下来再建立一个macros.cfg文件,把所有的宏的目录都引入到macros.cfg里面,这样又变得更加的灵活,不用担心误操作导致所有的宏搞没了。
github和reddit上有很多玩家讨论各种宏代码,你觉得有用,拷贝到你的宏文件里就行了。
想要把宏用好,我们应该把切片软件的起始代码和结束代码都替换为适合klipper的代码。
这样做的好处是:由klipper接管打印前的动作,灵活性大大的提高。比如你有许多需要重复打印的gcode,已经切片好了,但是你突然想要打印前做个调平,结束后推出模型,你可以直接修改klipper的起始gcode,打印过程会使用新的起始code,不需要重新切片。而使用切片软件的起始/结束gcode,要实现这样的功能,只能手动,或者重新进行一个个切片。
首先确保你的printer.cfg里面有START_PRINT以及END_PRINT宏,klipper的默认printer.cfg就已经有基础的START_PRINT以及END_PRINT宏。
以下是常用切片软件的起始gcode和结束gcode,我们要把切片软件里的用于marlin的起始gcode和结束gcode都替换为klipper使用的。
Cura-起始gcode
- ; M190 S{material_bed_temperature_layer_0}
- ; M109 S{material_print_temperature_layer_0}
- start_print BED_TEMP={material_bed_temperature_layer_0} EXTRUDER_TEMP={material_print_temperature_layer_0}
复制代码
Prusa-起始gcode
- M109 S0
- M190 S0
- start_print EXTRUDER_TEMP={first_layer_temperature[initial_extruder]} BED_TEMP={first_layer_bed_temperature[initial_extruder]} CHAMBER_TEMP={chamber_temperature}
复制代码
SuperSlicer-起始gcode(和prusa兼容)
- M109 S0
- M190 S0
- start_print BED_TEMP={first_layer_bed_temperature} EXTRUDER_TEMP={first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} CHAMBER_TEMP={chamber_temperature}
复制代码
它们三者的结束gcode一样:
总结一下,流程就是
- 先确认klipper的printer.cfg有START_PRINT以及END_PRINT这两个宏。
- 使用上面提供的起始gcode和结束gcode替换切换软件默认的起始/借宿gcode。
- 使用其他宏,只需要printer.cfg中引入了宏代码/宏文件/宏目录。
|
|