From e2ea2304920eaad4a78c8578929b6a60e006c59b Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 12 Dec 2020 06:13:07 +0200 Subject: [PATCH] - SolderPaste Tool - fixed not recognizing the default tools --- CHANGELOG.md | 2 ++ appTools/ToolDrilling.py | 2 +- appTools/ToolSolderPaste.py | 44 +++++++++++++++++++++---------------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 127a3902..21f94a6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ CHANGELOG for FlatCAM beta - added an experimental 3D area (archball camera) - Drilling Tool - fix a bug introduced in the latter changes; when the Tool is launched and there is no Excellon object loaded then the default_data can't be filled in: solved by using the self.app.options in that case +- Drilling Tool - made sure that the preprocessors that are not allowed in this Tool are not loaded in the combobox +- SolderPaste Tool - fixed not recognizing the default tools 11.12.2020 diff --git a/appTools/ToolDrilling.py b/appTools/ToolDrilling.py index 0fe62e0f..b4bf64db 100644 --- a/appTools/ToolDrilling.py +++ b/appTools/ToolDrilling.py @@ -318,7 +318,7 @@ class ToolDrilling(AppTool, Excellon): pp_list = [] for name in self.app.preprocessors.keys(): # the HPGL preprocessor is only for Geometry not for Excellon job therefore don't add it - if name == 'hpgl': + if name in ['hpgl', 'Paste_1', 'Check_points']: continue pp_list.append(name) pp_list.sort() diff --git a/appTools/ToolSolderPaste.py b/appTools/ToolSolderPaste.py index 5775f517..4464ceef 100644 --- a/appTools/ToolSolderPaste.py +++ b/appTools/ToolSolderPaste.py @@ -5,18 +5,20 @@ # MIT Licence # # ########################################################## +from PyQt5 import QtGui, QtCore, QtWidgets +from PyQt5.QtCore import Qt + from appTool import AppTool from appCommon.Common import LoudDict from appGUI.GUIElements import FCComboBox, FCEntry, FCTable, FCDoubleSpinner, FCSpinner, FCFileSaveDialog, \ FCInputSpinner -from app_Main import log + from camlib import distance from appEditors.AppTextEditor import AppTextEditor -from PyQt5 import QtGui, QtCore, QtWidgets -from PyQt5.QtCore import Qt from copy import deepcopy from datetime import datetime +import re from shapely.geometry import Polygon, LineString from shapely.ops import unary_union @@ -183,11 +185,15 @@ class SolderPaste(AppTool): icon=QtGui.QIcon(self.app.resource_location + "/delete32.png") ) + # either originally it was a string or not, xy_end will be made string + dias_option = self.app.defaults["tools_solderpaste_tools"] + dias_option = re.sub('[()\[\]]', '', str(dias_option)) if dias_option else None try: - dias = [float(eval(dia)) for dia in self.app.defaults["tools_solderpaste_tools"].split(",") if dia != ''] - except Exception: - log.error("At least one Nozzle tool diameter needed. " - "Verify in Edit -> Preferences -> TOOLS -> Solder Paste Tools.") + dias = [float(eval(dia)) for dia in dias_option.split(",") if dia != ''] + except Exception as err: + self.app.log.debug("SolderPaste.set_tool_ui() -> nozzle dias -> %s" % str(err)) + self.app.log.error("At least one Nozzle tool diameter needed. " + "Verify in Edit -> Preferences -> TOOLS -> Solder Paste Tools.") return self.tooluid = 0 @@ -208,9 +214,9 @@ class SolderPaste(AppTool): self.units = self.app.defaults['units'].upper() - for name in list(self.app.preprocessors.keys()): + for name in self.app.preprocessors.keys(): # populate only with preprocessor files that start with 'Paste_' - if name.partition('_')[0] != 'Paste': + if name.partition('_')[0].lower() != 'paste': continue self.ui.pp_combo.addItem(name) @@ -308,7 +314,7 @@ class SolderPaste(AppTool): try: tooluid = int(self.ui.tools_table.item(current_row, 2).text()) except Exception as e: - log.debug("Tool missing. Add a tool in Tool Table. %s" % str(e)) + self.app.log.debug("Tool missing. Add a tool in Tool Table. %s" % str(e)) return # update the form @@ -318,7 +324,7 @@ class SolderPaste(AppTool): if int(tooluid_key) == tooluid: self.set_form(deepcopy(tooluid_value['data'])) except Exception as e: - log.debug("ToolSolderPaste ---> update_ui() " + str(e)) + self.app.log.debug("ToolSolderPaste ---> update_ui() " + str(e)) self.ui_connect() @@ -442,7 +448,7 @@ class SolderPaste(AppTool): """ if not isinstance(val, dict): - log.debug("ToolSoderPaste.set_form() --> parameter not a dict") + self.app.log.debug("ToolSoderPaste.set_form() --> parameter not a dict") return for key in self.form_fields: @@ -611,7 +617,7 @@ class SolderPaste(AppTool): self.app.inform.emit('[WARNING_NOTCL] %s' % _("Delete failed. Select a tool to delete.")) return except Exception as e: - log.debug(str(e)) + self.app.log.debug(str(e)) self.app.inform.emit('[success] %s' % _("Tools deleted from Tool Table.")) self.build_ui() @@ -811,7 +817,7 @@ class SolderPaste(AppTool): try: geo_obj.tools[tooluid]['solid_geometry'].append(geo) except Exception as e: - log.debug('ToolSolderPaste.on_create_geo() --> %s' % str(e)) + self.app.log.debug('ToolSolderPaste.on_create_geo() --> %s' % str(e)) else: rest_geo.append(g) @@ -844,7 +850,7 @@ class SolderPaste(AppTool): try: app_obj.app_obj.new_object("geometry", name + "_solderpaste", geo_init) except Exception as e: - log.error("SolderPaste.on_create_geo() --> %s" % str(e)) + self.app.log.error("SolderPaste.on_create_geo() --> %s" % str(e)) proc.done() return proc.done() @@ -908,7 +914,7 @@ class SolderPaste(AppTool): xmax = obj.options['xmax'] ymax = obj.options['ymax'] except Exception as e: - log.debug("SolderPaste.on_create_gcode() --> %s\n" % str(e)) + self.app.log.debug("SolderPaste.on_create_gcode() --> %s\n" % str(e)) msg = '[ERROR] %s' % _("An internal error has occurred. See shell.\n") msg += 'SolderPaste.on_create_gcode() --> %s' % str(e) msg += traceback.format_exc() @@ -950,7 +956,7 @@ class SolderPaste(AppTool): res = job_obj.generate_gcode_from_solderpaste_geo(**tooluid_value) if res == 'fail': - log.debug("GeometryObject.mtool_gen_cncjob() --> generate_from_geometry2() failed") + self.app.log.debug("GeometryObject.mtool_gen_cncjob() --> generate_from_geometry2() failed") return 'fail' else: tool_cnc_dict['gcode'] = res @@ -1037,7 +1043,7 @@ class SolderPaste(AppTool): try: lines = StringIO(gcode) except Exception as e: - log.debug("ToolSolderpaste.on_view_gcode() --> %s" % str(e)) + self.app.log.debug("ToolSolderpaste.on_view_gcode() --> %s" % str(e)) self.app.inform.emit('[ERROR_NOTCL] %s...' % _("No Gcode in the object")) return @@ -1047,7 +1053,7 @@ class SolderPaste(AppTool): # self.text_editor_tab.code_editor.append(proc_line) self.text_editor_tab.load_text(lines, move_to_start=True) except Exception as e: - log.debug('ToolSolderPaste.on_view_gcode() -->%s' % str(e)) + self.app.log.debug('ToolSolderPaste.on_view_gcode() -->%s' % str(e)) self.app.inform.emit('[ERROR] %s --> %s' % ('ToolSolderPaste.on_view_gcode()', str(e))) return