ToolsSolderpastePrefGroupUI.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtCore import QSettings
  3. from appGUI.GUIElements import FCDoubleSpinner, FCSpinner, FCComboBox, NumericalEvalTupleEntry
  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 ToolsSolderpastePrefGroupUI(OptionsGroupUI):
  17. def __init__(self, decimals=4, parent=None):
  18. super(ToolsSolderpastePrefGroupUI, self).__init__(self, parent=parent)
  19. self.setTitle(str(_("SolderPaste Tool Options")))
  20. self.decimals = decimals
  21. # ## Solder Paste Dispensing
  22. self.solderpastelabel = QtWidgets.QLabel("<b>%s:</b>" % _("Parameters"))
  23. self.solderpastelabel.setToolTip(
  24. _("A tool to create GCode for dispensing\n"
  25. "solder paste onto a PCB.")
  26. )
  27. self.layout.addWidget(self.solderpastelabel)
  28. grid0 = QtWidgets.QGridLayout()
  29. self.layout.addLayout(grid0)
  30. # Nozzle Tool Diameters
  31. nozzletdlabel = QtWidgets.QLabel('<b><font color="green">%s:</font></b>' % _('Tools Dia'))
  32. nozzletdlabel.setToolTip(
  33. _("Diameters of the tools, separated by comma.\n"
  34. "The value of the diameter has to use the dot decimals separator.\n"
  35. "Valid values: 0.3, 1.0")
  36. )
  37. self.nozzle_tool_dia_entry = NumericalEvalTupleEntry(border_color='#0069A9')
  38. grid0.addWidget(nozzletdlabel, 0, 0)
  39. grid0.addWidget(self.nozzle_tool_dia_entry, 0, 1)
  40. # New Nozzle Tool Dia
  41. self.addtool_entry_lbl = QtWidgets.QLabel('<b>%s:</b>' % _('New Nozzle Dia'))
  42. self.addtool_entry_lbl.setToolTip(
  43. _("Diameter for the new Nozzle tool to add in the Tool Table")
  44. )
  45. self.addtool_entry = FCDoubleSpinner()
  46. self.addtool_entry.set_precision(self.decimals)
  47. self.addtool_entry.set_range(0.0000001, 10000.0000)
  48. self.addtool_entry.setSingleStep(0.1)
  49. grid0.addWidget(self.addtool_entry_lbl, 1, 0)
  50. grid0.addWidget(self.addtool_entry, 1, 1)
  51. # Z dispense start
  52. self.z_start_entry = FCDoubleSpinner()
  53. self.z_start_entry.set_precision(self.decimals)
  54. self.z_start_entry.set_range(0.0000001, 10000.0000)
  55. self.z_start_entry.setSingleStep(0.1)
  56. self.z_start_label = QtWidgets.QLabel('%s:' % _("Z Dispense Start"))
  57. self.z_start_label.setToolTip(
  58. _("The height (Z) when solder paste dispensing starts.")
  59. )
  60. grid0.addWidget(self.z_start_label, 2, 0)
  61. grid0.addWidget(self.z_start_entry, 2, 1)
  62. # Z dispense
  63. self.z_dispense_entry = FCDoubleSpinner()
  64. self.z_dispense_entry.set_precision(self.decimals)
  65. self.z_dispense_entry.set_range(0.0000001, 10000.0000)
  66. self.z_dispense_entry.setSingleStep(0.1)
  67. self.z_dispense_label = QtWidgets.QLabel('%s:' % _("Z Dispense"))
  68. self.z_dispense_label.setToolTip(
  69. _("The height (Z) when doing solder paste dispensing.")
  70. )
  71. grid0.addWidget(self.z_dispense_label, 3, 0)
  72. grid0.addWidget(self.z_dispense_entry, 3, 1)
  73. # Z dispense stop
  74. self.z_stop_entry = FCDoubleSpinner()
  75. self.z_stop_entry.set_precision(self.decimals)
  76. self.z_stop_entry.set_range(0.0000001, 10000.0000)
  77. self.z_stop_entry.setSingleStep(0.1)
  78. self.z_stop_label = QtWidgets.QLabel('%s:' % _("Z Dispense Stop"))
  79. self.z_stop_label.setToolTip(
  80. _("The height (Z) when solder paste dispensing stops.")
  81. )
  82. grid0.addWidget(self.z_stop_label, 4, 0)
  83. grid0.addWidget(self.z_stop_entry, 4, 1)
  84. # Z travel
  85. self.z_travel_entry = FCDoubleSpinner()
  86. self.z_travel_entry.set_precision(self.decimals)
  87. self.z_travel_entry.set_range(0.0000001, 10000.0000)
  88. self.z_travel_entry.setSingleStep(0.1)
  89. self.z_travel_label = QtWidgets.QLabel('%s:' % _("Z Travel"))
  90. self.z_travel_label.setToolTip(
  91. _("The height (Z) for travel between pads\n"
  92. "(without dispensing solder paste).")
  93. )
  94. grid0.addWidget(self.z_travel_label, 5, 0)
  95. grid0.addWidget(self.z_travel_entry, 5, 1)
  96. # Z toolchange location
  97. self.z_toolchange_entry = FCDoubleSpinner()
  98. self.z_toolchange_entry.set_precision(self.decimals)
  99. self.z_toolchange_entry.set_range(0.0000001, 10000.0000)
  100. self.z_toolchange_entry.setSingleStep(0.1)
  101. self.z_toolchange_label = QtWidgets.QLabel('%s:' % _("Z Toolchange"))
  102. self.z_toolchange_label.setToolTip(
  103. _("The height (Z) for tool (nozzle) change.")
  104. )
  105. grid0.addWidget(self.z_toolchange_label, 6, 0)
  106. grid0.addWidget(self.z_toolchange_entry, 6, 1)
  107. # X,Y Toolchange location
  108. self.xy_toolchange_entry = NumericalEvalTupleEntry(border_color='#0069A9')
  109. self.xy_toolchange_label = QtWidgets.QLabel('%s:' % _("Toolchange X-Y"))
  110. self.xy_toolchange_label.setToolTip(
  111. _("The X,Y location for tool (nozzle) change.\n"
  112. "The format is (x, y) where x and y are real numbers.")
  113. )
  114. grid0.addWidget(self.xy_toolchange_label, 7, 0)
  115. grid0.addWidget(self.xy_toolchange_entry, 7, 1)
  116. # Feedrate X-Y
  117. self.frxy_entry = FCDoubleSpinner()
  118. self.frxy_entry.set_precision(self.decimals)
  119. self.frxy_entry.set_range(0.0000001, 910000.0000)
  120. self.frxy_entry.setSingleStep(0.1)
  121. self.frxy_label = QtWidgets.QLabel('%s:' % _("Feedrate X-Y"))
  122. self.frxy_label.setToolTip(
  123. _("Feedrate (speed) while moving on the X-Y plane.")
  124. )
  125. grid0.addWidget(self.frxy_label, 8, 0)
  126. grid0.addWidget(self.frxy_entry, 8, 1)
  127. # Feedrate Z
  128. self.frz_entry = FCDoubleSpinner()
  129. self.frz_entry.set_precision(self.decimals)
  130. self.frz_entry.set_range(0.0000001, 910000.0000)
  131. self.frz_entry.setSingleStep(0.1)
  132. self.frz_label = QtWidgets.QLabel('%s:' % _("Feedrate Z"))
  133. self.frz_label.setToolTip(
  134. _("Feedrate (speed) while moving vertically\n"
  135. "(on Z plane).")
  136. )
  137. grid0.addWidget(self.frz_label, 9, 0)
  138. grid0.addWidget(self.frz_entry, 9, 1)
  139. # Feedrate Z Dispense
  140. self.frz_dispense_entry = FCDoubleSpinner()
  141. self.frz_dispense_entry.set_precision(self.decimals)
  142. self.frz_dispense_entry.set_range(0.0000001, 910000.0000)
  143. self.frz_dispense_entry.setSingleStep(0.1)
  144. self.frz_dispense_label = QtWidgets.QLabel('%s:' % _("Feedrate Z Dispense"))
  145. self.frz_dispense_label.setToolTip(
  146. _("Feedrate (speed) while moving up vertically\n"
  147. "to Dispense position (on Z plane).")
  148. )
  149. grid0.addWidget(self.frz_dispense_label, 10, 0)
  150. grid0.addWidget(self.frz_dispense_entry, 10, 1)
  151. # Spindle Speed Forward
  152. self.speedfwd_entry = FCSpinner()
  153. self.speedfwd_entry.set_range(0, 99999)
  154. self.speedfwd_entry.set_step(1000)
  155. self.speedfwd_label = QtWidgets.QLabel('%s:' % _("Spindle Speed FWD"))
  156. self.speedfwd_label.setToolTip(
  157. _("The dispenser speed while pushing solder paste\n"
  158. "through the dispenser nozzle.")
  159. )
  160. grid0.addWidget(self.speedfwd_label, 11, 0)
  161. grid0.addWidget(self.speedfwd_entry, 11, 1)
  162. # Dwell Forward
  163. self.dwellfwd_entry = FCDoubleSpinner()
  164. self.dwellfwd_entry.set_precision(self.decimals)
  165. self.dwellfwd_entry.set_range(0.0000001, 10000.0000)
  166. self.dwellfwd_entry.setSingleStep(0.1)
  167. self.dwellfwd_label = QtWidgets.QLabel('%s:' % _("Dwell FWD"))
  168. self.dwellfwd_label.setToolTip(
  169. _("Pause after solder dispensing.")
  170. )
  171. grid0.addWidget(self.dwellfwd_label, 12, 0)
  172. grid0.addWidget(self.dwellfwd_entry, 12, 1)
  173. # Spindle Speed Reverse
  174. self.speedrev_entry = FCSpinner()
  175. self.speedrev_entry.set_range(0, 999999)
  176. self.speedrev_entry.set_step(1000)
  177. self.speedrev_label = QtWidgets.QLabel('%s:' % _("Spindle Speed REV"))
  178. self.speedrev_label.setToolTip(
  179. _("The dispenser speed while retracting solder paste\n"
  180. "through the dispenser nozzle.")
  181. )
  182. grid0.addWidget(self.speedrev_label, 13, 0)
  183. grid0.addWidget(self.speedrev_entry, 13, 1)
  184. # Dwell Reverse
  185. self.dwellrev_entry = FCDoubleSpinner()
  186. self.dwellrev_entry.set_precision(self.decimals)
  187. self.dwellrev_entry.set_range(0.0000001, 10000.0000)
  188. self.dwellrev_entry.setSingleStep(0.1)
  189. self.dwellrev_label = QtWidgets.QLabel('%s:' % _("Dwell REV"))
  190. self.dwellrev_label.setToolTip(
  191. _("Pause after solder paste dispenser retracted,\n"
  192. "to allow pressure equilibrium.")
  193. )
  194. grid0.addWidget(self.dwellrev_label, 14, 0)
  195. grid0.addWidget(self.dwellrev_entry, 14, 1)
  196. # Preprocessors
  197. pp_label = QtWidgets.QLabel('%s:' % _('Preprocessor'))
  198. pp_label.setToolTip(
  199. _("Files that control the GCode generation.")
  200. )
  201. self.pp_combo = FCComboBox()
  202. grid0.addWidget(pp_label, 15, 0)
  203. grid0.addWidget(self.pp_combo, 15, 1)
  204. self.layout.addStretch()