ExcellonAdvOptPrefGroupUI.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtCore import QSettings
  3. from AppGUI.GUIElements import FCDoubleSpinner, RadioSet, FCCheckBox, NumericalEvalTupleEntry, NumericalEvalEntry
  4. from AppGUI.preferences.OptionsGroupUI import OptionsGroupUI
  5. import gettext
  6. import AppTranslation as fcTranslate
  7. import builtins
  8. fcTranslate.apply_language('strings')
  9. if '_' not in builtins.__dict__:
  10. _ = gettext.gettext
  11. settings = QSettings("Open Source", "FlatCAM")
  12. if settings.contains("machinist"):
  13. machinist_setting = settings.value('machinist', type=int)
  14. else:
  15. machinist_setting = 0
  16. class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
  17. def __init__(self, decimals=4, parent=None):
  18. # OptionsGroupUI.__init__(self, "Excellon Advanced Options", parent=parent)
  19. super(ExcellonAdvOptPrefGroupUI, self).__init__(self, parent=parent)
  20. self.setTitle(str(_("Excellon Adv. Options")))
  21. self.decimals = decimals
  22. # #######################
  23. # ## ADVANCED OPTIONS ###
  24. # #######################
  25. self.exc_label = QtWidgets.QLabel('<b>%s:</b>' % _('Advanced Options'))
  26. self.exc_label.setToolTip(
  27. _("A list of Excellon advanced parameters.\n"
  28. "Those parameters are available only for\n"
  29. "Advanced App. Level.")
  30. )
  31. self.layout.addWidget(self.exc_label)
  32. grid1 = QtWidgets.QGridLayout()
  33. self.layout.addLayout(grid1)
  34. # Offset Z
  35. offsetlabel = QtWidgets.QLabel('%s:' % _('Offset Z'))
  36. offsetlabel.setToolTip(
  37. _("Some drill bits (the larger ones) need to drill deeper\n"
  38. "to create the desired exit hole diameter due of the tip shape.\n"
  39. "The value here can compensate the Cut Z parameter."))
  40. self.offset_entry = FCDoubleSpinner()
  41. self.offset_entry.set_precision(self.decimals)
  42. self.offset_entry.set_range(-999.9999, 999.9999)
  43. grid1.addWidget(offsetlabel, 0, 0)
  44. grid1.addWidget(self.offset_entry, 0, 1)
  45. # ToolChange X,Y
  46. toolchange_xy_label = QtWidgets.QLabel('%s:' % _('Toolchange X,Y'))
  47. toolchange_xy_label.setToolTip(
  48. _("Toolchange X,Y position.")
  49. )
  50. self.toolchangexy_entry = NumericalEvalTupleEntry(border_color='#0069A9')
  51. grid1.addWidget(toolchange_xy_label, 1, 0)
  52. grid1.addWidget(self.toolchangexy_entry, 1, 1)
  53. # Start Z
  54. startzlabel = QtWidgets.QLabel('%s:' % _('Start Z'))
  55. startzlabel.setToolTip(
  56. _("Height of the tool just after start.\n"
  57. "Delete the value if you don't need this feature.")
  58. )
  59. self.estartz_entry = NumericalEvalEntry(border_color='#0069A9')
  60. grid1.addWidget(startzlabel, 2, 0)
  61. grid1.addWidget(self.estartz_entry, 2, 1)
  62. # Feedrate Rapids
  63. fr_rapid_label = QtWidgets.QLabel('%s:' % _('Feedrate Rapids'))
  64. fr_rapid_label.setToolTip(
  65. _("Tool speed while drilling\n"
  66. "(in units per minute).\n"
  67. "This is for the rapid move G00.\n"
  68. "It is useful only for Marlin,\n"
  69. "ignore for any other cases.")
  70. )
  71. self.feedrate_rapid_entry = FCDoubleSpinner()
  72. self.feedrate_rapid_entry.set_precision(self.decimals)
  73. self.feedrate_rapid_entry.set_range(0, 99999.9999)
  74. grid1.addWidget(fr_rapid_label, 3, 0)
  75. grid1.addWidget(self.feedrate_rapid_entry, 3, 1)
  76. # Probe depth
  77. self.pdepth_label = QtWidgets.QLabel('%s:' % _("Probe Z depth"))
  78. self.pdepth_label.setToolTip(
  79. _("The maximum depth that the probe is allowed\n"
  80. "to probe. Negative value, in current units.")
  81. )
  82. self.pdepth_entry = FCDoubleSpinner()
  83. self.pdepth_entry.set_precision(self.decimals)
  84. self.pdepth_entry.set_range(-99999.9999, 0.0000)
  85. grid1.addWidget(self.pdepth_label, 4, 0)
  86. grid1.addWidget(self.pdepth_entry, 4, 1)
  87. # Probe feedrate
  88. self.feedrate_probe_label = QtWidgets.QLabel('%s:' % _("Feedrate Probe"))
  89. self.feedrate_probe_label.setToolTip(
  90. _("The feedrate used while the probe is probing.")
  91. )
  92. self.feedrate_probe_entry = FCDoubleSpinner()
  93. self.feedrate_probe_entry.set_precision(self.decimals)
  94. self.feedrate_probe_entry.set_range(0, 99999.9999)
  95. grid1.addWidget(self.feedrate_probe_label, 5, 0)
  96. grid1.addWidget(self.feedrate_probe_entry, 5, 1)
  97. # Spindle direction
  98. spindle_dir_label = QtWidgets.QLabel('%s:' % _('Spindle direction'))
  99. spindle_dir_label.setToolTip(
  100. _("This sets the direction that the spindle is rotating.\n"
  101. "It can be either:\n"
  102. "- CW = clockwise or\n"
  103. "- CCW = counter clockwise")
  104. )
  105. self.spindledir_radio = RadioSet([{'label': _('CW'), 'value': 'CW'},
  106. {'label': _('CCW'), 'value': 'CCW'}])
  107. grid1.addWidget(spindle_dir_label, 6, 0)
  108. grid1.addWidget(self.spindledir_radio, 6, 1)
  109. self.fplunge_cb = FCCheckBox('%s' % _('Fast Plunge'))
  110. self.fplunge_cb.setToolTip(
  111. _("By checking this, the vertical move from\n"
  112. "Z_Toolchange to Z_move is done with G0,\n"
  113. "meaning the fastest speed available.\n"
  114. "WARNING: the move is done at Toolchange X,Y coords.")
  115. )
  116. grid1.addWidget(self.fplunge_cb, 7, 0, 1, 2)
  117. self.fretract_cb = FCCheckBox('%s' % _('Fast Retract'))
  118. self.fretract_cb.setToolTip(
  119. _("Exit hole strategy.\n"
  120. " - When uncheked, while exiting the drilled hole the drill bit\n"
  121. "will travel slow, with set feedrate (G1), up to zero depth and then\n"
  122. "travel as fast as possible (G0) to the Z Move (travel height).\n"
  123. " - When checked the travel from Z cut (cut depth) to Z_move\n"
  124. "(travel height) is done as fast as possible (G0) in one move.")
  125. )
  126. grid1.addWidget(self.fretract_cb, 8, 0, 1, 2)
  127. self.layout.addStretch()