BedLevelMachineAction.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from cura.MachineAction import MachineAction
  2. from PyQt5.QtCore import pyqtSlot
  3. from UM.Application import Application
  4. from cura.PrinterOutputDevice import PrinterOutputDevice
  5. class BedLevelMachineAction(MachineAction):
  6. def __init__(self):
  7. super().__init__("BedLevel", "Level bed")
  8. self._qml_url = "BedLevelMachineAction.qml"
  9. self._bed_level_position = 0
  10. def _execute(self):
  11. pass
  12. def _reset(self):
  13. self._bed_level_position = 0
  14. printer_output_devices = self._getPrinterOutputDevices()
  15. if printer_output_devices:
  16. printer_output_devices[0].homeBed()
  17. printer_output_devices[0].moveHead(0, 0, 3)
  18. printer_output_devices[0].homeHead()
  19. def _getPrinterOutputDevices(self):
  20. return [printer_output_device for printer_output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices() if isinstance(printer_output_device, PrinterOutputDevice)]
  21. @pyqtSlot()
  22. def moveToNextLevelPosition(self):
  23. output_devices = self._getPrinterOutputDevices()
  24. if output_devices: # We found at least one output device
  25. output_device = output_devices[0]
  26. if self._bed_level_position == 0:
  27. output_device.moveHead(0, 0, 3)
  28. output_device.homeHead()
  29. output_device.moveHead(0, 0, 3)
  30. output_device.moveHead(Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") - 10, 0, 0)
  31. output_device.moveHead(0, 0, -3)
  32. self._bed_level_position += 1
  33. elif self._bed_level_position == 1:
  34. output_device.moveHead(0, 0, 3)
  35. output_device.moveHead(-Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value" ) / 2, Application.getInstance().getGlobalContainerStack().getProperty("machine_depth", "value") - 10, 0)
  36. output_device.moveHead(0, 0, -3)
  37. self._bed_level_position += 1
  38. elif self._bed_level_position == 2:
  39. output_device.moveHead(0, 0, 3)
  40. output_device.moveHead(-Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") / 2 + 10, -(Application.getInstance().getGlobalContainerStack().getProperty("machine_depth", "value") + 10), 0)
  41. output_device.moveHead(0, 0, -3)
  42. self._bed_level_position += 1
  43. elif self._bed_level_position >= 3:
  44. self.setFinished()