khisanthax

sovol-macros

Oct 18th, 2025
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.47 KB | None | 0 0
  1. [gcode_macro mainled_on]
  2. gcode:
  3. SET_LED LED=main_led WHITE=1
  4.  
  5. [gcode_macro mainled_off]
  6. gcode:
  7. SET_LED LED=main_led WHITE=0
  8.  
  9. #--------------------------------------------------------------------#
  10. #--------------------------------------------------------------------#
  11.  
  12. [force_move]
  13. enable_force_move: True
  14.  
  15. [gcode_macro _global_var]
  16. variable_pause_park:{'x': 0, 'y': 0, 'z': 10, 'e': 1}
  17. variable_cancel_park:{'x': 0, 'y': 350, 'z': 10, 'e': 1}
  18. variable_z_maximum_lifting_distance: 345
  19. variable_pause_resume_travel_speed: 150
  20. variable_bed_mesh_calibrate_target_temp: 60
  21. variable_load_filament_extruder_temp: 230
  22. variable_heat_soak_time: 0 # in minutes
  23. gcode:
  24.  
  25. [gcode_macro START_PRINT]
  26. description:
  27. variable_state: 'Prepare'
  28. variable_record_extruder_temp:0
  29. variable_max_record_extruder_temp:0
  30. gcode:
  31. {% set bedtemp = params.BED_TEMP|default(60)|int %}
  32. {% set hotendtemp = params.EXTRUDER_TEMP|default(230)|int %}
  33. {% set heatsoak = params.HEATSOAK|default(True)|int %}
  34. {% set heatsoak_time = printer['gcode_macro _global_var'].heat_soak_time|default(0)|int %} # takes heatsoak time from global variables
  35. {% set mesh_name = "default" %}
  36.  
  37. {% set extruder_target_temp = 125 %}
  38.  
  39. {% set bed_target_temp = bedtemp|int %}
  40.  
  41. M400
  42.  
  43. CLEAR_PAUSE
  44.  
  45. G90
  46. {% if state == 'Prepare' %}
  47.  
  48. {action_respond_info("Prepare!")}
  49.  
  50. {% if printer['filament_switch_sensor filament_sensor'].enable == True and
  51. printer['filament_switch_sensor filament_sensor'].filament_detected != True
  52. %}
  53. M117 No filament!
  54. {action_respond_info("Please Insert filament in Sensor!")}
  55. CANCEL_PRINT
  56. {% endif %}
  57.  
  58. {% if printer.extruder.temperature < extruder_target_temp %}
  59. M117 Nozzle pre-heating...
  60. {action_respond_info("Nozzle pre-heating...")}
  61. M109 S{extruder_target_temp}
  62. {% endif %}
  63.  
  64. {% if printer.toolhead.homed_axes|lower != "xyz" %}
  65. G28
  66. {% endif %}
  67.  
  68. #Start exhaust fan
  69. #SET_FAN_SPEED FAN=exhaust_fan SPEED=1
  70.  
  71. {action_respond_info("Check Heating!")}
  72.  
  73. {% if printer.heater_bed.temperature < bed_target_temp %}
  74. M117 Bed heating...
  75. {action_respond_info("Bed heating...")}
  76. M190 S{bed_target_temp}
  77. {% endif %}
  78.  
  79. M140 S{bed_target_temp}
  80. M104 S{extruder_target_temp}
  81.  
  82.  
  83. {% if heatsoak == True %}
  84. M117 Short Heat Soak
  85. G4 P{heatsoak_time * 60000} # pause for x number of minute(s) (see variable_heat_soak_time)
  86. {% endif %}
  87.  
  88. {% if printer.quad_gantry_level.applied|lower != 'true' %}
  89. M117 QGL
  90. #QUAD_GANTRY_LEVEL_BASE # We use the _BASE variant here as not to remove the stock Sovol override (but we also don't want to use the Sovol override here)
  91. QUAD_GANTRY_LEVEL
  92. M117 Home Z after QGL
  93. G28 Z # And once again after QGL, important..
  94. # M117 Auto Z Offset
  95. # Z_OFFSET_CALIBRATION
  96. {% endif %}
  97.  
  98.  
  99. #EDDY-NG Tap Routine
  100. # First clean at low temp
  101. M117 Cleaning
  102. CLEAN_NOZZLE TEMP=150
  103. # Home Z again after QGL and cleaning
  104. M117 Homing
  105. G28 Z
  106. #EDDY TAP
  107. SET_DISPLAY_TEXT MSG="Tappy tap"
  108. CENTER # this is center of parts during a print
  109. PROBE_EDDY_NG_TAP TARGET_Z=-.350
  110.  
  111. # We use the _BASE variant here as not to remove the stock Sovol override (but we also don't want to use the Sovol override here)
  112. # Remove the comment to add 'METHOD=rapid_scan' when using the Eddy probe
  113. M117 Bed Mesh
  114. BED_MESH_CALIBRATE_BASE ADAPTIVE=1 METHOD=rapid_scan
  115.  
  116. # Set final temperatures before printing instead of relying on the OrcaSlicer start gcode..
  117. M117 Final Heating...
  118. {action_respond_info("Final heating...")}
  119. M140 S{bedtemp} ;set bed temp
  120. M104 S{hotendtemp} ;set extruder temp
  121. M190 S{bedtemp} ;wait for bed temp
  122. M109 S{hotendtemp};wait for extruder temp
  123.  
  124. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=state VALUE='"Start"'
  125. UPDATE_DELAYED_GCODE ID=_print_start_wait DURATION=0.5
  126.  
  127. {% elif state == 'Start' %}
  128. M117 Printing
  129. {action_respond_info("Start!")}
  130. {% endif %}
  131.  
  132.  
  133.  
  134. [gcode_macro END_PRINT]
  135. description:
  136. variable_state: 'normal'
  137. gcode:
  138. {% set z_max = printer['gcode_macro _global_var'].z_maximum_lifting_distance|int %}
  139. {% set e_mintemp = printer.configfile.settings['extruder'].min_extrude_temp %}
  140.  
  141. M400
  142. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=state VALUE='"Prepare"'
  143. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=record_extruder_temp VALUE=0
  144. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=max_record_extruder_temp VALUE=0
  145.  
  146. M117 Done
  147. G91
  148. {% if printer['filament_switch_sensor filament_sensor'].enable == True and
  149. printer['filament_switch_sensor filament_sensor'].filament_detected == True
  150. %}
  151. {% if (printer.extruder.target != 0 and printer.extruder.temperature >= printer.extruder.target) or
  152. printer.extruder.temperature >= e_mintemp
  153. %}
  154. G1 E-2 F2700
  155. G1 E-2 Z0.2 F2400
  156. {% endif %}
  157. {% endif %}
  158.  
  159. {% if (printer.gcode_move.position.z + 25) < z_max %}
  160. G1 Z+25 F3000
  161. {% else %}
  162. G1 Z+{(z_max - printer.gcode_move.position.z)} F3000
  163. {% endif %}
  164. G90
  165. G1 X0 Y360 F9000
  166.  
  167. _ALL_FAN_OFF
  168. TURN_OFF_HEATERS
  169.  
  170. M84 X Y Z E
  171.  
  172. M220 S100
  173. M221 S100
  174.  
  175. CLEAR_PAUSE
  176.  
  177. #Clear Eddy-NG offsets
  178. PROBE_EDDY_NG_SET_TAP_OFFSET VALUE=0
  179.  
  180. {action_respond_info("Finish Print!")}
  181.  
  182. [gcode_macro _IDLE_TIMEOUT]
  183. gcode:
  184. {% if printer.print_stats.state == "paused" %}
  185. RESPOND TYPE=echo MSG="No operations in 10min!"
  186. {% else %}
  187. M84
  188. TURN_OFF_HEATERS
  189. {% endif %}
  190.  
  191. [delayed_gcode exhaust_fan_off]
  192. gcode:
  193. SET_FAN_SPEED FAN=exhaust_fan SPEED=0
  194.  
  195. [gcode_macro _ALL_FAN_OFF]
  196. gcode:
  197. M106 S0
  198. # Run the exhaust fan for another 2min after the other fans and then turn it off
  199. # UPDATE_DELAYED_GCODE ID=exhaust_fan_off DURATION=120
  200. M107
  201.  
  202. [gcode_macro CLEAN_NOZZLE]
  203. gcode:
  204. {% if printer.toolhead.homed_axes != "xyz" %}
  205. G28
  206. {% endif %}
  207. G90
  208. G1 X348 Y0 Z0.3 F9000
  209. M117 Nozzle heating...
  210. M109 S200
  211. G91
  212. G1 Z10 F300
  213. G90
  214. M106 S255
  215. M104 S130
  216. M117 Clean nozzle
  217. G1 X315 Y360 F9000
  218. G1 Z0.2 F300
  219. G1 X352 F4500
  220. G1 Y360 X324
  221. G1 Y360 X345
  222. G1 Y360 X324
  223. G1 Y360 X345
  224. G1 Y360 X324
  225. G1 Y360 X345
  226. G1 Y360 X324
  227. G1 Y360 X345
  228. G1 Y360 X324
  229. G1 Y360 X325
  230. G1 Y356 X324 Z5
  231. G1 Z0.2
  232. G1 Y360 X324
  233. G1 Y357 X326
  234. G1 Y360 X326
  235. G1 Y357 X328
  236. G1 Y360 X330
  237. G1 Y357 X332
  238. G1 Y360 X334
  239. G1 Y357 X336
  240. G1 Y360 X338
  241. G1 Y357 X340
  242. G1 Y360 X324
  243. G1 Y357 X326
  244. G1 Y360 X326
  245. G1 Y357 X328
  246. G1 Y360 X330
  247. G1 Y357 X332
  248. G1 Y360 X334
  249. G1 Y357 X336
  250. G1 Y360 X338
  251. G1 Y357 X340
  252. G1 Y360 X324
  253. G1 Y357 X326
  254. G1 Y360 X326
  255. G1 Y357 X328
  256. G1 Y360 X330
  257. G1 Y357 X332
  258. G1 Y360 X334
  259. G1 Y357 X336
  260. G1 Y360 X338
  261. M400
  262. M117 Finished cleaning
  263. M109 S130
  264. M107
  265. G91
  266. G1 Z10 F300
  267. G90
  268. G28 Z0
  269.  
  270. # Bring the nozzle to the center of the bed
  271. [gcode_macro CENTER]
  272. gcode:
  273. G0 X175 Y175 F5000
  274.  
  275. [gcode_macro _CALIBRATION_ZOFFSET]
  276. gcode:
  277. M117 Calibrate Offset
  278. QUAD_GANTRY_LEVEL
  279. M140 S65
  280. G4 P500
  281. CLEAN_NOZZLE
  282. G4 P500
  283. M117 Z-offset calibration
  284. Z_OFFSET_CALIBRATION
  285. Z_OFFSET_APPLY_PROBE
  286. SAVE_CONFIG
  287.  
  288. [delayed_gcode _auto_zoffset]
  289. gcode:
  290. SAVE_VARIABLE VARIABLE=offsetadjust VALUE={'%05.2f' % (0)}
  291. _CALIBRATION_ZOFFSET
  292.  
  293. [gcode_macro _Delay_Calibrate]
  294. gcode:
  295. UPDATE_DELAYED_GCODE ID=_auto_zoffset DURATION=1.0
  296.  
  297. [delayed_gcode TEST_BELT]
  298. initial_duration: 0.3
  299. gcode:
  300. {% set x_freq = printer.save_variables.variables.x_freq|float %}
  301. {% set y_freq = printer.save_variables.variables.y_freq|float %}
  302. {% set show_freq = printer.save_variables.variables.show_freq %}
  303. {% if show_freq == 1 %}
  304. M117 x {x_freq}, y {y_freq}
  305. SAVE_VARIABLE VARIABLE=show_freq VALUE=0
  306. {% endif %}
  307.  
  308. #RAPPETOR QUAD GANTRY LEVEL
  309. # [gcode_macro QUAD_GANTRY_LEVEL]
  310. # rename_existing:QUAD_GANTRY_LEVEL_BASE
  311. # gcode:
  312. # {% set mesh_name = "default" %}
  313. # {% set mesh_calibrate_temp = printer['gcode_macro _global_var'].bed_mesh_calibrate_target_temp|int %}
  314. # {% set current_target_temp = printer.heater_bed.target|int %}
  315.  
  316. # {action_respond_info("Check Heating!")}
  317. # {% if printer.heater_bed.temperature != mesh_calibrate_temp %}
  318. # {action_respond_info("The bed target temperature was not reached!")}
  319. # {action_respond_info("Bed heating...")}
  320. # {% if current_target_temp <= mesh_calibrate_temp %}
  321. # M190 S{mesh_calibrate_temp}
  322. # {% else %}
  323. # M190 S{current_target_temp}
  324. # {% endif %}
  325. # {% endif %}
  326.  
  327. # {% if printer.toolhead.homed_axes|lower != "xyz" %}
  328. # G28
  329. # {% endif %}
  330.  
  331. # QUAD_GANTRY_LEVEL_BASE
  332.  
  333. # {% if current_target_temp == 0 %}
  334. # M140 S0
  335. # {% endif %}
  336.  
  337. #EDDY-NG QUAD GANTRY LEVEL
  338. [gcode_macro QUAD_GANTRY_LEVEL]
  339. rename_existing: _QUAD_GANTRY_LEVEL
  340. gcode:
  341. SAVE_GCODE_STATE NAME=STATE_QGL
  342. BED_MESH_CLEAR
  343. # if QGL has not been done yet, do two rounds at 10mm height first
  344. # to correct any major skew
  345. {% if not printer.quad_gantry_level.applied %}
  346. _QUAD_GANTRY_LEVEL horizontal_move_z=10 retry_tolerance=1
  347. {% endif %}
  348. # Finish off with a low QGL for precision
  349. _QUAD_GANTRY_LEVEL horizontal_move_z=2
  350. RESTORE_GCODE_STATE NAME=STATE_QGL
  351.  
  352.  
  353.  
  354. [gcode_macro PROBE_CALIBRATE]
  355. rename_existing:PROBE_CALIBRATE_BASE
  356. gcode:
  357. {% set current_target_temp = printer.heater_bed.target|int %}
  358. {% set z_offset_calibrate_temp = printer['gcode_macro _global_var'].bed_mesh_calibrate_target_temp|int %}
  359.  
  360. {action_respond_info("z_offset_calibrate")}
  361. {% if printer.heater_bed.temperature != z_offset_calibrate_temp %}
  362. M140 S{z_offset_calibrate_temp}
  363. {action_respond_info("The bed target temperature was not reached!")}
  364. {action_respond_info("Bed heating...")}
  365. M190 S{z_offset_calibrate_temp}
  366. {% endif %}
  367.  
  368. G28
  369. PROBE_CALIBRATE_BASE
  370. TESTZ z=-4
  371.  
  372.  
  373. [gcode_macro BED_MESH_CALIBRATE]
  374. rename_existing: BED_MESH_CALIBRATE_BASE
  375. gcode:
  376.  
  377. {% set mesh_name = "default" %}
  378. {% set mesh_calibrate_temp = printer['gcode_macro _global_var'].bed_mesh_calibrate_target_temp|int %}
  379. {% set current_target_temp = printer.heater_bed.target|int %}
  380.  
  381. {action_respond_info("Check Heating!")}
  382. {% if printer.heater_bed.temperature != mesh_calibrate_temp %}
  383. {action_respond_info("The bed target temperature was not reached!")}
  384. {action_respond_info("Bed heating...")}
  385. {% if current_target_temp <= mesh_calibrate_temp %}
  386. M190 S{mesh_calibrate_temp}
  387. {% else %}
  388. M190 S{current_target_temp}
  389. {% endif %}
  390. {% endif %}
  391.  
  392. {% if printer.toolhead.homed_axes|lower != "xyz" %}
  393. G28
  394. {% endif %}
  395.  
  396. BED_MESH_CLEAR
  397.  
  398. BED_MESH_CALIBRATE_BASE ADAPTIVE=1 METHOD=rapid_scan
  399.  
  400. {% if current_target_temp == 0 %}
  401. M140 S0
  402. {% endif %}
  403.  
  404. [gcode_macro G34]
  405. gcode:
  406. BED_MESH_CLEAR
  407. {% if printer.toolhead.homed_axes|lower != "xyz" %}
  408. G28
  409. {% else %}
  410. G28 Z
  411. {% endif %}
  412. QUAD_GANTRY_LEVEL
  413. G28 Z
  414. G0 X175 Y175 Z30 F3600
  415.  
  416. [delayed_gcode bed_mesh_init]
  417. initial_duration: .01
  418. gcode:
  419. BED_MESH_PROFILE LOAD=default
  420.  
  421. [delayed_gcode _print_start_wait]
  422. gcode:
  423. {% if printer['gcode_macro START_PRINT'].state == 'Heating'%}
  424. {action_respond_info("Prepare->Heating!")}
  425. {% elif printer['gcode_macro START_PRINT'].state == 'Start' %}
  426. {action_respond_info("Heating->Start!")}
  427. {% endif %}
  428.  
  429. {% if printer['gcode_macro START_PRINT'].execute|lower != 'false' %}
  430. START_PRINT
  431. {% endif %}
  432.  
  433.  
  434. [gcode_macro CANCEL_PRINT]
  435. description:
  436. rename_existing: CANCEL_PRINT_BASE
  437. gcode:
  438. {% set x_park = printer['gcode_macro _global_var'].cancel_park.x|float %}
  439. {% set y_park = printer['gcode_macro _global_var'].cancel_park.y|float %}
  440. {% set z_park = printer['gcode_macro _global_var'].cancel_park.z|float %}
  441. {% set z_lift_max = printer['gcode_macro _global_var'].z_maximum_lifting_distance %}
  442. {% set e_restract = printer['gcode_macro _global_var'].cancel_park.e|float %}
  443. {% set e_mintemp = printer.configfile.settings['extruder'].min_extrude_temp %}
  444.  
  445. CANCEL_PRINT_BASE
  446.  
  447. M117 Print canceled!
  448. G91
  449. {% if printer['filament_switch_sensor filament_sensor'].enabled == True and
  450. printer['filament_switch_sensor filament_sensor'].filament_detected == True
  451. %}
  452. {% if (printer.extruder.target != 0 and printer.extruder.temperature >= printer.extruder.target) or
  453. printer.extruder.temperature >= e_mintemp
  454. %}
  455. G1 E-{e_restract} F500
  456. {% else %}
  457. {action_respond_info("Nozzle not hot enough")}
  458. {% endif %}
  459. {% endif %}
  460.  
  461. {%if (printer.gcode_move.position.z + 10) < z_lift_max %}
  462. G1 Z+10 F3000
  463. {% else %}
  464. G1 Z+{(z_lift_max - printer.gcode_move.position.z)} F3000
  465. {% endif %}
  466. G90
  467. G1 X{x_park} Y{y_park} F9000
  468.  
  469. TURN_OFF_HEATERS
  470. _ALL_FAN_OFF
  471.  
  472. CLEAR_PAUSE
  473. M84 X Y Z E
  474.  
  475. M117 Ready
  476. {action_respond_info("Cancel Print Success!")}
  477. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=state VALUE='"Prepare"'
  478. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=record_extruder_temp VALUE=0
  479. SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=max_record_extruder_temp VALUE=0
  480.  
  481.  
  482. [gcode_macro PAUSE]
  483. rename_existing: PAUSE_BASE
  484. variable_state: 'normal'
  485. gcode:
  486. {% if printer.pause_resume.is_paused == False %}
  487. {% set x_park = printer['gcode_macro _global_var'].pause_park.x|float %}
  488. {% set y_park = printer['gcode_macro _global_var'].pause_park.y|float %}
  489. {% set e_restract = printer['gcode_macro _global_var'].pause_park.e|float %}
  490. {% set z_lift_max = printer['gcode_macro _global_var'].z_maximum_lifting_distance %}
  491.  
  492. {% set state = params.STATE if 'filament_change' in params.STATE else 'normal' %}
  493.  
  494. {action_respond_info("Pause Print!")}
  495.  
  496. PAUSE_BASE
  497. M117 Pause Print!!!
  498. G91
  499. {% if (printer.gcode_move.position.z + 5) < z_lift_max %}
  500. G1 Z+5 F3000
  501. {% else %}
  502. G1 Z+{(z_lift_max - printer.gcode_move.position.z)} F3000
  503. {% endif %}
  504. G90
  505. {% if printer.gcode_move.position.x != x_park and
  506. printer.gcode_move.position.y != y_park
  507. %}
  508. G1 X{x_park} Y{y_park} F{printer["gcode_macro _global_var"].pause_resume_travel_speed * 60}
  509. {% endif %}
  510.  
  511. M104 S{printer.extruder.target}
  512.  
  513. {% if state == 'normal' %}
  514. {% if (printer.extruder.temperature + 5 >= printer.extruder.target) and (printer.extruder.temperature >= printer.configfile.settings['extruder'].min_extrude_temp) %}
  515. {% if printer['filament_switch_sensor filament_sensor'].enabled == True and
  516. printer['filament_switch_sensor filament_sensor'].filament_detected == True
  517. %}
  518. G91
  519. G1 E-{e_restract} F300
  520. G90
  521. {% elif printer['filament_switch_sensor filament_sensor'].enabled == True and
  522. printer['filament_switch_sensor filament_sensor'].filament_detected != True %}
  523. G91
  524. G1 E+95 F300
  525. G1 E-10 F1500
  526. G1 E-20 F600
  527. M400
  528. G4 P3000
  529. G1 E-50 F300
  530. G90
  531. {% endif %}
  532. {% endif %}
  533. {% elif state == 'filament_change' %}
  534. {% if (printer.extruder.temperature + 5 >= printer.extruder.target) and (printer.extruder.temperature >= printer.configfile.settings['extruder'].min_extrude_temp) %}
  535. G91
  536. G1 E+25 F300
  537. G1 E-10 F1500
  538. G1 E-20 F600
  539. M400
  540. G4 P3000
  541. G1 E-50 F300
  542. G90
  543. {% endif %}
  544. {% endif %}
  545. {% endif %}
  546.  
  547.  
  548. [delayed_gcode _resume_wait]
  549. gcode:
  550. {% if printer['gcode_macro RESUME'].execute|lower != 'false' %}
  551. RESUME
  552. {% endif %}
  553.  
  554.  
  555. [gcode_macro RESUME]
  556. description: Pause the actual running print
  557. rename_existing: RESUME_BASE
  558. variable_state: 'normal'
  559. gcode:
  560. {% set e_restract = printer['gcode_macro _global_var'].pause_park.e|float %}
  561. {% set extruder_target_temp = printer.extruder.target|int %}
  562.  
  563. {% set state = params.STATE if 'filament_change' in params.STATE else 'normal' %}
  564.  
  565. {% if state == 'filament_change' %}
  566. {% if printer["filament_switch_sensor filament_sensor"].enable == True and
  567. printer["filament_switch_sensor filament_sensor"].filament_detected != True
  568. %}
  569. {action_respond_info("Please Insert filament in Sensor!")}
  570. {% else %}
  571. {% if printer.extruder.temperature + 5 >= printer.extruder.target %}
  572. G91
  573. G1 E30 F300
  574. G1 E10 F150
  575. G90
  576. {% else %}
  577. M104 S{extruder_target_temp}
  578. {action_respond_info("Nozzle not hot enough!")}
  579. {action_respond_info("Nozzle heating...")}
  580. M109 S{extruder_target_temp}
  581. G91
  582. G1 E30 F300
  583. G1 E10 F150
  584. G90
  585. {% endif %}
  586. {action_respond_info("Print resumming!")}
  587. RESUME_BASE
  588. {% endif %}
  589. {% elif state == 'normal' %}
  590. {% if printer['filament_switch_sensor filament_sensor'].enable != True and
  591. printer['filament_switch_sensor filament_sensor'].filament_detected != True
  592. %}
  593. {action_respond_info("Please Insert filament in Sensor!")}
  594. {% else %}
  595. {action_respond_info("Print resumming!")}
  596. G91
  597. G1 E{e_restract} F300
  598. G90
  599. M117 Printing now!!!
  600. RESUME_BASE
  601. {% endif %}
  602. {% endif %}
  603.  
  604.  
  605. [gcode_macro LOAD_FILAMENT]
  606. gcode:
  607. {% set extruder_temp = printer['gcode_macro _global_var'].load_filament_extruder_temp|int %}
  608. {% set current_target_temp = printer.extruder.target|int %}
  609.  
  610. {% if printer.print_stats.state != "printing" %}
  611. {% if printer.print_stats.state != "paused" %}
  612. M104 S{extruder_temp}
  613. M117 Nozzle heating...
  614. {action_respond_info("Nozzle not hot enough!")}
  615. {action_respond_info("Nozzle heating...")}
  616. M109 S{extruder_temp}
  617. {% else %}
  618. {% if printer.extruder.target == 0 %}
  619. M104 S{extruder_temp}
  620. M117 Nozzle heating...
  621. {action_respond_info("Nozzle not hot enough!")}
  622. {action_respond_info("Nozzle heating...")}
  623. M109 S{extruder_temp}
  624. {% else %}
  625. M104 S{printer.extruder.target}
  626. M117 Nozzle heating...
  627. {action_respond_info("Nozzle not hot enough!")}
  628. {action_respond_info("Nozzle heating...")}
  629. M109 S{printer.extruder.target}
  630. {% endif %}
  631. {% endif %}
  632. M117 Extruding...
  633. G91
  634. G1 E75 F300
  635. G1 E30 F150
  636. G1 E-2 F300
  637. G90
  638. M400
  639. M117 Filament loaded.
  640. M400
  641. {% if current_target_temp == 0 or printer.print_stats.state != "paused"%}
  642. M104 S0
  643. {% endif %}
  644. {% else %}
  645. {action_respond_info("Don't load filament during printing!!!")}
  646. {% endif %}
  647.  
  648.  
  649. [gcode_macro UNLOAD_FILAMENT]
  650. gcode:
  651. {% set extruder_temp = printer['gcode_macro _global_var'].load_filament_extruder_temp|int %}
  652. {% set current_target_temp = printer.extruder.target|int %}
  653.  
  654. {% if printer.print_stats.state != "printing" %}
  655. {% if printer.print_stats.state != "paused" %}
  656. M104 S{extruder_temp}
  657. M117 Nozzle heating...
  658. {action_respond_info("Nozzle not hot enough!")}
  659. {action_respond_info("Nozzle heating...")}
  660. M109 S{extruder_temp}
  661. {% else %}
  662. {% if printer.extruder.target == 0 %}
  663. M104 S{extruder_temp}
  664. M117 Nozzle heating...
  665. {action_respond_info("Nozzle not hot enough!")}
  666. {action_respond_info("Nozzle heating...")}
  667. M109 S{extruder_temp}
  668. {% else %}
  669. M104 S{printer.extruder.target}
  670. M117 Nozzle heating...
  671. {action_respond_info("Nozzle not hot enough!")}
  672. {action_respond_info("Nozzle heating...")}
  673. M109 S{printer.extruder.target}
  674. {% endif %}
  675. {% endif %}
  676. M117 Retracting...
  677. G91
  678. G1 E+25 F300
  679. G1 E-10 F1500
  680. G1 E-20 F600
  681. M400
  682. G4 P3000
  683. G1 E-50 F300
  684. G90
  685. M400
  686. M117 Filament ejected.
  687. M400
  688. {% if current_target_temp == 0 or printer.print_stats.state != "paused"%}
  689. M104 S0
  690. {% endif %}
  691. {% else %}
  692. {action_respond_info("Don't unload filament during printing!!!")}
  693. {% endif %}
  694.  
  695. [gcode_macro M109]
  696. rename_existing: M99109
  697. gcode:
  698. {% set s = params.S|float %}
  699. M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
  700. {% if s != 0 %}
  701. TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s-1} MAXIMUM={s+1}
  702. {% endif %}
  703.  
  704. [gcode_macro M190]
  705. rename_existing: M99190
  706. gcode:
  707. {% set s = params.S|float %}
  708. M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}
  709. {% if s != 0 %}
  710. TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-1} MAXIMUM={s+1}
  711. {% endif %}
  712.  
  713.  
  714. [gcode_macro M600]
  715. gcode:
  716. PAUSE STATE=filament_change
Advertisement
Add Comment
Please, Sign In to add comment