GeometryAdvOptPrefGroupUI.py 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtCore import QSettings
  3. from flatcamGUI.GUIElements import FCEntry, FloatEntry, FCDoubleSpinner, FCCheckBox, RadioSet
  4. from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
  5. import gettext
  6. import FlatCAMTranslation 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 GeometryAdvOptPrefGroupUI(OptionsGroupUI):
  17. def __init__(self, decimals=4, parent=None):
  18. # OptionsGroupUI.__init__(self, "Geometry Advanced Options Preferences", parent=parent)
  19. super(GeometryAdvOptPrefGroupUI, self).__init__(self, parent=parent)
  20. self.setTitle(str(_("Geometry Adv. Options")))
  21. self.decimals = decimals
  22. # ------------------------------
  23. # ## Advanced Options
  24. # ------------------------------
  25. self.geo_label = QtWidgets.QLabel('<b>%s:</b>' % _('Advanced Options'))
  26. self.geo_label.setToolTip(
  27. _("A list of Geometry advanced parameters.\n"
  28. "Those parameters are available only for\n"
  29. "Advanced App. Level.")
  30. )
  31. self.layout.addWidget(self.geo_label)
  32. grid1 = QtWidgets.QGridLayout()
  33. self.layout.addLayout(grid1)
  34. # Toolchange X,Y
  35. toolchange_xy_label = QtWidgets.QLabel('%s:' % _('Toolchange X-Y'))
  36. toolchange_xy_label.setToolTip(
  37. _("Toolchange X,Y position.")
  38. )
  39. grid1.addWidget(toolchange_xy_label, 1, 0)
  40. self.toolchangexy_entry = FCEntry()
  41. grid1.addWidget(self.toolchangexy_entry, 1, 1)
  42. # Start move Z
  43. startzlabel = QtWidgets.QLabel('%s:' % _('Start Z'))
  44. startzlabel.setToolTip(
  45. _("Height of the tool just after starting the work.\n"
  46. "Delete the value if you don't need this feature.")
  47. )
  48. grid1.addWidget(startzlabel, 2, 0)
  49. self.gstartz_entry = FloatEntry()
  50. grid1.addWidget(self.gstartz_entry, 2, 1)
  51. # Feedrate rapids
  52. fr_rapid_label = QtWidgets.QLabel('%s:' % _('Feedrate Rapids'))
  53. fr_rapid_label.setToolTip(
  54. _("Cutting speed in the XY plane\n"
  55. "(in units per minute).\n"
  56. "This is for the rapid move G00.\n"
  57. "It is useful only for Marlin,\n"
  58. "ignore for any other cases.")
  59. )
  60. self.feedrate_rapid_entry = FCDoubleSpinner()
  61. self.feedrate_rapid_entry.set_range(0, 99999.9999)
  62. self.feedrate_rapid_entry.set_precision(self.decimals)
  63. self.feedrate_rapid_entry.setSingleStep(0.1)
  64. self.feedrate_rapid_entry.setWrapping(True)
  65. grid1.addWidget(fr_rapid_label, 4, 0)
  66. grid1.addWidget(self.feedrate_rapid_entry, 4, 1)
  67. # End move extra cut
  68. self.extracut_cb = FCCheckBox('%s' % _('Re-cut'))
  69. self.extracut_cb.setToolTip(
  70. _("In order to remove possible\n"
  71. "copper leftovers where first cut\n"
  72. "meet with last cut, we generate an\n"
  73. "extended cut over the first cut section.")
  74. )
  75. self.e_cut_entry = FCDoubleSpinner()
  76. self.e_cut_entry.set_range(0, 99999)
  77. self.e_cut_entry.set_precision(self.decimals)
  78. self.e_cut_entry.setSingleStep(0.1)
  79. self.e_cut_entry.setWrapping(True)
  80. self.e_cut_entry.setToolTip(
  81. _("In order to remove possible\n"
  82. "copper leftovers where first cut\n"
  83. "meet with last cut, we generate an\n"
  84. "extended cut over the first cut section.")
  85. )
  86. grid1.addWidget(self.extracut_cb, 5, 0)
  87. grid1.addWidget(self.e_cut_entry, 5, 1)
  88. # Probe depth
  89. self.pdepth_label = QtWidgets.QLabel('%s:' % _("Probe Z depth"))
  90. self.pdepth_label.setToolTip(
  91. _("The maximum depth that the probe is allowed\n"
  92. "to probe. Negative value, in current units.")
  93. )
  94. self.pdepth_entry = FCDoubleSpinner()
  95. self.pdepth_entry.set_range(-99999, 0.0000)
  96. self.pdepth_entry.set_precision(self.decimals)
  97. self.pdepth_entry.setSingleStep(0.1)
  98. self.pdepth_entry.setWrapping(True)
  99. grid1.addWidget(self.pdepth_label, 6, 0)
  100. grid1.addWidget(self.pdepth_entry, 6, 1)
  101. # Probe feedrate
  102. self.feedrate_probe_label = QtWidgets.QLabel('%s:' % _("Feedrate Probe"))
  103. self.feedrate_probe_label.setToolTip(
  104. _("The feedrate used while the probe is probing.")
  105. )
  106. self.feedrate_probe_entry = FCDoubleSpinner()
  107. self.feedrate_probe_entry.set_range(0, 99999.9999)
  108. self.feedrate_probe_entry.set_precision(self.decimals)
  109. self.feedrate_probe_entry.setSingleStep(0.1)
  110. self.feedrate_probe_entry.setWrapping(True)
  111. grid1.addWidget(self.feedrate_probe_label, 7, 0)
  112. grid1.addWidget(self.feedrate_probe_entry, 7, 1)
  113. # Spindle direction
  114. spindle_dir_label = QtWidgets.QLabel('%s:' % _('Spindle direction'))
  115. spindle_dir_label.setToolTip(
  116. _("This sets the direction that the spindle is rotating.\n"
  117. "It can be either:\n"
  118. "- CW = clockwise or\n"
  119. "- CCW = counter clockwise")
  120. )
  121. self.spindledir_radio = RadioSet([{'label': _('CW'), 'value': 'CW'},
  122. {'label': _('CCW'), 'value': 'CCW'}])
  123. grid1.addWidget(spindle_dir_label, 8, 0)
  124. grid1.addWidget(self.spindledir_radio, 8, 1)
  125. # Fast Move from Z Toolchange
  126. self.fplunge_cb = FCCheckBox('%s' % _('Fast Plunge'))
  127. self.fplunge_cb.setToolTip(
  128. _("By checking this, the vertical move from\n"
  129. "Z_Toolchange to Z_move is done with G0,\n"
  130. "meaning the fastest speed available.\n"
  131. "WARNING: the move is done at Toolchange X,Y coords.")
  132. )
  133. grid1.addWidget(self.fplunge_cb, 9, 0, 1, 2)
  134. # Size of trace segment on X axis
  135. segx_label = QtWidgets.QLabel('%s:' % _("Segment X size"))
  136. segx_label.setToolTip(
  137. _("The size of the trace segment on the X axis.\n"
  138. "Useful for auto-leveling.\n"
  139. "A value of 0 means no segmentation on the X axis.")
  140. )
  141. self.segx_entry = FCDoubleSpinner()
  142. self.segx_entry.set_range(0, 99999)
  143. self.segx_entry.set_precision(self.decimals)
  144. self.segx_entry.setSingleStep(0.1)
  145. self.segx_entry.setWrapping(True)
  146. grid1.addWidget(segx_label, 10, 0)
  147. grid1.addWidget(self.segx_entry, 10, 1)
  148. # Size of trace segment on Y axis
  149. segy_label = QtWidgets.QLabel('%s:' % _("Segment Y size"))
  150. segy_label.setToolTip(
  151. _("The size of the trace segment on the Y axis.\n"
  152. "Useful for auto-leveling.\n"
  153. "A value of 0 means no segmentation on the Y axis.")
  154. )
  155. self.segy_entry = FCDoubleSpinner()
  156. self.segy_entry.set_range(0, 99999)
  157. self.segy_entry.set_precision(self.decimals)
  158. self.segy_entry.setSingleStep(0.1)
  159. self.segy_entry.setWrapping(True)
  160. grid1.addWidget(segy_label, 11, 0)
  161. grid1.addWidget(self.segy_entry, 11, 1)
  162. self.layout.addStretch()