Tools2RulesCheckPrefGroupUI.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtCore import QSettings
  3. from AppGUI.GUIElements import FCCheckBox, FCDoubleSpinner
  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 Tools2RulesCheckPrefGroupUI(OptionsGroupUI):
  17. def __init__(self, decimals=4, parent=None):
  18. super(Tools2RulesCheckPrefGroupUI, self).__init__(self, parent=parent)
  19. self.setTitle(str(_("Check Rules Tool Options")))
  20. self.decimals = decimals
  21. self.crlabel = QtWidgets.QLabel("<b>%s:</b>" % _("Parameters"))
  22. self.crlabel.setToolTip(
  23. _("A tool to check if Gerber files are within a set\n"
  24. "of Manufacturing Rules.")
  25. )
  26. self.layout.addWidget(self.crlabel)
  27. # Form Layout
  28. self.form_layout_1 = QtWidgets.QFormLayout()
  29. self.layout.addLayout(self.form_layout_1)
  30. # Trace size
  31. self.trace_size_cb = FCCheckBox('%s:' % _("Trace Size"))
  32. self.trace_size_cb.setToolTip(
  33. _("This checks if the minimum size for traces is met.")
  34. )
  35. self.form_layout_1.addRow(self.trace_size_cb)
  36. # Trace size value
  37. self.trace_size_entry = FCDoubleSpinner()
  38. self.trace_size_entry.set_range(0.00001, 999.99999)
  39. self.trace_size_entry.set_precision(self.decimals)
  40. self.trace_size_entry.setSingleStep(0.1)
  41. self.trace_size_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  42. self.trace_size_lbl.setToolTip(
  43. _("Minimum acceptable trace size.")
  44. )
  45. self.form_layout_1.addRow(self.trace_size_lbl, self.trace_size_entry)
  46. # Copper2copper clearance
  47. self.clearance_copper2copper_cb = FCCheckBox('%s:' % _("Copper to Copper clearance"))
  48. self.clearance_copper2copper_cb.setToolTip(
  49. _("This checks if the minimum clearance between copper\n"
  50. "features is met.")
  51. )
  52. self.form_layout_1.addRow(self.clearance_copper2copper_cb)
  53. # Copper2copper clearance value
  54. self.clearance_copper2copper_entry = FCDoubleSpinner()
  55. self.clearance_copper2copper_entry.set_range(0.00001, 999.99999)
  56. self.clearance_copper2copper_entry.set_precision(self.decimals)
  57. self.clearance_copper2copper_entry.setSingleStep(0.1)
  58. self.clearance_copper2copper_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  59. self.clearance_copper2copper_lbl.setToolTip(
  60. _("Minimum acceptable clearance value.")
  61. )
  62. self.form_layout_1.addRow(self.clearance_copper2copper_lbl, self.clearance_copper2copper_entry)
  63. # Copper2outline clearance
  64. self.clearance_copper2ol_cb = FCCheckBox('%s:' % _("Copper to Outline clearance"))
  65. self.clearance_copper2ol_cb.setToolTip(
  66. _("This checks if the minimum clearance between copper\n"
  67. "features and the outline is met.")
  68. )
  69. self.form_layout_1.addRow(self.clearance_copper2ol_cb)
  70. # Copper2outline clearance value
  71. self.clearance_copper2ol_entry = FCDoubleSpinner()
  72. self.clearance_copper2ol_entry.set_range(0.00001, 999.99999)
  73. self.clearance_copper2ol_entry.set_precision(self.decimals)
  74. self.clearance_copper2ol_entry.setSingleStep(0.1)
  75. self.clearance_copper2ol_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  76. self.clearance_copper2ol_lbl.setToolTip(
  77. _("Minimum acceptable clearance value.")
  78. )
  79. self.form_layout_1.addRow(self.clearance_copper2ol_lbl, self.clearance_copper2ol_entry)
  80. # Silkscreen2silkscreen clearance
  81. self.clearance_silk2silk_cb = FCCheckBox('%s:' % _("Silk to Silk Clearance"))
  82. self.clearance_silk2silk_cb.setToolTip(
  83. _("This checks if the minimum clearance between silkscreen\n"
  84. "features and silkscreen features is met.")
  85. )
  86. self.form_layout_1.addRow(self.clearance_silk2silk_cb)
  87. # Copper2silkscreen clearance value
  88. self.clearance_silk2silk_entry = FCDoubleSpinner()
  89. self.clearance_silk2silk_entry.set_range(0.00001, 999.99999)
  90. self.clearance_silk2silk_entry.set_precision(self.decimals)
  91. self.clearance_silk2silk_entry.setSingleStep(0.1)
  92. self.clearance_silk2silk_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  93. self.clearance_silk2silk_lbl.setToolTip(
  94. _("Minimum acceptable clearance value.")
  95. )
  96. self.form_layout_1.addRow(self.clearance_silk2silk_lbl, self.clearance_silk2silk_entry)
  97. # Silkscreen2soldermask clearance
  98. self.clearance_silk2sm_cb = FCCheckBox('%s:' % _("Silk to Solder Mask Clearance"))
  99. self.clearance_silk2sm_cb.setToolTip(
  100. _("This checks if the minimum clearance between silkscreen\n"
  101. "features and soldermask features is met.")
  102. )
  103. self.form_layout_1.addRow(self.clearance_silk2sm_cb)
  104. # Silkscreen2soldermask clearance value
  105. self.clearance_silk2sm_entry = FCDoubleSpinner()
  106. self.clearance_silk2sm_entry.set_range(0.00001, 999.99999)
  107. self.clearance_silk2sm_entry.set_precision(self.decimals)
  108. self.clearance_silk2sm_entry.setSingleStep(0.1)
  109. self.clearance_silk2sm_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  110. self.clearance_silk2sm_lbl.setToolTip(
  111. _("Minimum acceptable clearance value.")
  112. )
  113. self.form_layout_1.addRow(self.clearance_silk2sm_lbl, self.clearance_silk2sm_entry)
  114. # Silk2outline clearance
  115. self.clearance_silk2ol_cb = FCCheckBox('%s:' % _("Silk to Outline Clearance"))
  116. self.clearance_silk2ol_cb.setToolTip(
  117. _("This checks if the minimum clearance between silk\n"
  118. "features and the outline is met.")
  119. )
  120. self.form_layout_1.addRow(self.clearance_silk2ol_cb)
  121. # Silk2outline clearance value
  122. self.clearance_silk2ol_entry = FCDoubleSpinner()
  123. self.clearance_silk2ol_entry.set_range(0.00001, 999.99999)
  124. self.clearance_silk2ol_entry.set_precision(self.decimals)
  125. self.clearance_silk2ol_entry.setSingleStep(0.1)
  126. self.clearance_silk2ol_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  127. self.clearance_silk2ol_lbl.setToolTip(
  128. _("Minimum acceptable clearance value.")
  129. )
  130. self.form_layout_1.addRow(self.clearance_silk2ol_lbl, self.clearance_silk2ol_entry)
  131. # Soldermask2soldermask clearance
  132. self.clearance_sm2sm_cb = FCCheckBox('%s:' % _("Minimum Solder Mask Sliver"))
  133. self.clearance_sm2sm_cb.setToolTip(
  134. _("This checks if the minimum clearance between soldermask\n"
  135. "features and soldermask features is met.")
  136. )
  137. self.form_layout_1.addRow(self.clearance_sm2sm_cb)
  138. # Soldermask2soldermask clearance value
  139. self.clearance_sm2sm_entry = FCDoubleSpinner()
  140. self.clearance_sm2sm_entry.set_range(0.00001, 999.99999)
  141. self.clearance_sm2sm_entry.set_precision(self.decimals)
  142. self.clearance_sm2sm_entry.setSingleStep(0.1)
  143. self.clearance_sm2sm_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  144. self.clearance_sm2sm_lbl.setToolTip(
  145. _("Minimum acceptable clearance value.")
  146. )
  147. self.form_layout_1.addRow(self.clearance_sm2sm_lbl, self.clearance_sm2sm_entry)
  148. # Ring integrity check
  149. self.ring_integrity_cb = FCCheckBox('%s:' % _("Minimum Annular Ring"))
  150. self.ring_integrity_cb.setToolTip(
  151. _("This checks if the minimum copper ring left by drilling\n"
  152. "a hole into a pad is met.")
  153. )
  154. self.form_layout_1.addRow(self.ring_integrity_cb)
  155. # Ring integrity value
  156. self.ring_integrity_entry = FCDoubleSpinner()
  157. self.ring_integrity_entry.set_range(0.00001, 999.99999)
  158. self.ring_integrity_entry.set_precision(self.decimals)
  159. self.ring_integrity_entry.setSingleStep(0.1)
  160. self.ring_integrity_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  161. self.ring_integrity_lbl.setToolTip(
  162. _("Minimum acceptable ring value.")
  163. )
  164. self.form_layout_1.addRow(self.ring_integrity_lbl, self.ring_integrity_entry)
  165. self.form_layout_1.addRow(QtWidgets.QLabel(""))
  166. # Hole2Hole clearance
  167. self.clearance_d2d_cb = FCCheckBox('%s:' % _("Hole to Hole Clearance"))
  168. self.clearance_d2d_cb.setToolTip(
  169. _("This checks if the minimum clearance between a drill hole\n"
  170. "and another drill hole is met.")
  171. )
  172. self.form_layout_1.addRow(self.clearance_d2d_cb)
  173. # Hole2Hole clearance value
  174. self.clearance_d2d_entry = FCDoubleSpinner()
  175. self.clearance_d2d_entry.set_range(0.00001, 999.99999)
  176. self.clearance_d2d_entry.set_precision(self.decimals)
  177. self.clearance_d2d_entry.setSingleStep(0.1)
  178. self.clearance_d2d_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  179. self.clearance_d2d_lbl.setToolTip(
  180. _("Minimum acceptable drill size.")
  181. )
  182. self.form_layout_1.addRow(self.clearance_d2d_lbl, self.clearance_d2d_entry)
  183. # Drill holes size check
  184. self.drill_size_cb = FCCheckBox('%s:' % _("Hole Size"))
  185. self.drill_size_cb.setToolTip(
  186. _("This checks if the drill holes\n"
  187. "sizes are above the threshold.")
  188. )
  189. self.form_layout_1.addRow(self.drill_size_cb)
  190. # Drile holes value
  191. self.drill_size_entry = FCDoubleSpinner()
  192. self.drill_size_entry.set_range(0.00001, 999.99999)
  193. self.drill_size_entry.set_precision(self.decimals)
  194. self.drill_size_entry.setSingleStep(0.1)
  195. self.drill_size_lbl = QtWidgets.QLabel('%s:' % _("Min value"))
  196. self.drill_size_lbl.setToolTip(
  197. _("Minimum acceptable clearance value.")
  198. )
  199. self.form_layout_1.addRow(self.drill_size_lbl, self.drill_size_entry)
  200. self.layout.addStretch()