BQ_PauseAtHeight.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from ..Script import Script
  2. class BQ_PauseAtHeight(Script):
  3. def __init__(self):
  4. super().__init__()
  5. def getSettingDataString(self):
  6. return """{
  7. "name":"Pause at height (BQ Printers)",
  8. "key": "BQ_PauseAtHeight",
  9. "metadata":{},
  10. "version": 2,
  11. "settings":
  12. {
  13. "pause_height":
  14. {
  15. "label": "Pause height",
  16. "description": "At what height should the pause occur",
  17. "unit": "mm",
  18. "type": "float",
  19. "default_value": 5.0
  20. }
  21. }
  22. }"""
  23. def execute(self, data):
  24. pause_z = self.getSettingValueByKey("pause_height")
  25. for layer in data:
  26. lines = layer.split("\n")
  27. for line in lines:
  28. if self.getValue(line, 'G') == 1 or self.getValue(line, 'G') == 0:
  29. current_z = self.getValue(line, 'Z')
  30. if current_z is not None:
  31. if current_z >= pause_z:
  32. prepend_gcode = ";TYPE:CUSTOM\n"
  33. prepend_gcode += "; -- Pause at height (%.2f mm) --\n" % pause_z
  34. # Insert Pause gcode
  35. prepend_gcode += "M25 ; Pauses the print and waits for the user to resume it\n"
  36. index = data.index(layer)
  37. layer = prepend_gcode + layer
  38. data[index] = layer # Override the data of this layer with the modified data
  39. return data
  40. break
  41. return data