Преглед изворни кода

- fixed bugs in Minimum Distance Tool

Marius Stanciu пре 6 година
родитељ
комит
3ac8e96071

+ 10 - 7
FlatCAMApp.py

@@ -1967,7 +1967,7 @@ class App(QtCore.QObject):
 
 
         self.ui.menueditdelete.triggered.connect(self.on_delete)
         self.ui.menueditdelete.triggered.connect(self.on_delete)
 
 
-        self.ui.menueditcopyobject.triggered.connect(self.on_copy_object)
+        self.ui.menueditcopyobject.triggered.connect(self.on_copy_command)
         self.ui.menueditconvert_any2geo.triggered.connect(self.convert_any2geo)
         self.ui.menueditconvert_any2geo.triggered.connect(self.convert_any2geo)
         self.ui.menueditconvert_any2gerber.triggered.connect(self.convert_any2gerber)
         self.ui.menueditconvert_any2gerber.triggered.connect(self.convert_any2gerber)
 
 
@@ -2030,7 +2030,7 @@ class App(QtCore.QObject):
         self.ui.menuprojectgeneratecnc.triggered.connect(lambda: self.generate_cnc_job(self.collection.get_selected()))
         self.ui.menuprojectgeneratecnc.triggered.connect(lambda: self.generate_cnc_job(self.collection.get_selected()))
         self.ui.menuprojectviewsource.triggered.connect(self.on_view_source)
         self.ui.menuprojectviewsource.triggered.connect(self.on_view_source)
 
 
-        self.ui.menuprojectcopy.triggered.connect(self.on_copy_object)
+        self.ui.menuprojectcopy.triggered.connect(self.on_copy_command)
         self.ui.menuprojectedit.triggered.connect(self.object2editor)
         self.ui.menuprojectedit.triggered.connect(self.object2editor)
 
 
         self.ui.menuprojectdelete.triggered.connect(self.on_delete)
         self.ui.menuprojectdelete.triggered.connect(self.on_delete)
@@ -2061,7 +2061,7 @@ class App(QtCore.QObject):
         self.ui.clearplot.triggered.connect(self.clear_plots)
         self.ui.clearplot.triggered.connect(self.clear_plots)
         self.ui.replot.triggered.connect(self.plot_all)
         self.ui.replot.triggered.connect(self.plot_all)
 
 
-        self.ui.popmenu_copy.triggered.connect(self.on_copy_object)
+        self.ui.popmenu_copy.triggered.connect(self.on_copy_command)
         self.ui.popmenu_delete.triggered.connect(self.on_delete)
         self.ui.popmenu_delete.triggered.connect(self.on_delete)
         self.ui.popmenu_edit.triggered.connect(self.object2editor)
         self.ui.popmenu_edit.triggered.connect(self.object2editor)
         self.ui.popmenu_save.triggered.connect(lambda: self.editor2object())
         self.ui.popmenu_save.triggered.connect(lambda: self.editor2object())
@@ -3259,7 +3259,7 @@ class App(QtCore.QObject):
         self.ui.newexc_btn.triggered.connect(self.new_excellon_object)
         self.ui.newexc_btn.triggered.connect(self.new_excellon_object)
         self.ui.editgeo_btn.triggered.connect(self.object2editor)
         self.ui.editgeo_btn.triggered.connect(self.object2editor)
         self.ui.update_obj_btn.triggered.connect(lambda: self.editor2object())
         self.ui.update_obj_btn.triggered.connect(lambda: self.editor2object())
-        self.ui.copy_btn.triggered.connect(self.on_copy_object)
+        self.ui.copy_btn.triggered.connect(self.on_copy_command)
         self.ui.delete_btn.triggered.connect(self.on_delete)
         self.ui.delete_btn.triggered.connect(self.on_delete)
 
 
         self.ui.distance_btn.triggered.connect(lambda: self.distance_tool.run(toggle=True))
         self.ui.distance_btn.triggered.connect(lambda: self.distance_tool.run(toggle=True))
@@ -7540,8 +7540,8 @@ class App(QtCore.QObject):
         self.inform.emit('[success] %s' % _("Done."))
         self.inform.emit('[success] %s' % _("Done."))
         return location
         return location
 
 
-    def on_copy_object(self):
-        self.report_usage("on_copy_object()")
+    def on_copy_command(self):
+        self.report_usage("on_copy_command()")
 
 
         def initialize(obj_init, app):
         def initialize(obj_init, app):
             obj_init.solid_geometry = deepcopy(obj.solid_geometry)
             obj_init.solid_geometry = deepcopy(obj.solid_geometry)
@@ -7559,7 +7559,7 @@ class App(QtCore.QObject):
                 if obj.tools:
                 if obj.tools:
                     obj_init.tools = deepcopy(obj.tools)
                     obj_init.tools = deepcopy(obj.tools)
             except Exception as e:
             except Exception as e:
-                log.debug("App.on_copy_object() --> %s" % str(e))
+                log.debug("App.on_copy_command() --> %s" % str(e))
 
 
             try:
             try:
                 obj_init.source_file = deepcopy(obj.source_file)
                 obj_init.source_file = deepcopy(obj.source_file)
@@ -7600,6 +7600,9 @@ class App(QtCore.QObject):
             except Exception as e:
             except Exception as e:
                 return "Operation failed: %s" % str(e)
                 return "Operation failed: %s" % str(e)
 
 
+    def on_paste_command(self):
+        pass
+
     def on_copy_object2(self, custom_name):
     def on_copy_object2(self, custom_name):
 
 
         def initialize_geometry(obj_init, app):
         def initialize_geometry(obj_init, app):

+ 1 - 0
README.md

@@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing.
 - small changes to the Toolchange manual preprocessor
 - small changes to the Toolchange manual preprocessor
 - fix for plotting Excellon objects if the color is changed and then the object is moved
 - fix for plotting Excellon objects if the color is changed and then the object is moved
 - laying the GUI for a new Tool: Punch Gerber Tool which will add holes in the Gerber apertures
 - laying the GUI for a new Tool: Punch Gerber Tool which will add holes in the Gerber apertures
+- fixed bugs in Minimum Distance Tool
 
 
 22.01.2020
 22.01.2020
 
 

+ 1 - 1
flatcamEditors/FlatCAMExcEditor.py

@@ -2974,7 +2974,7 @@ class FlatCAMExcEditor(QtCore.QObject):
         except (TypeError, AttributeError):
         except (TypeError, AttributeError):
             pass
             pass
 
 
-        self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_object)
+        self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_command)
         self.app.ui.popmenu_delete.triggered.connect(self.app.on_delete)
         self.app.ui.popmenu_delete.triggered.connect(self.app.on_delete)
         self.app.ui.popmenu_move.triggered.connect(self.app.obj_move)
         self.app.ui.popmenu_move.triggered.connect(self.app.obj_move)
 
 

+ 1 - 1
flatcamEditors/FlatCAMGeoEditor.py

@@ -3553,7 +3553,7 @@ class FlatCAMGeoEditor(QtCore.QObject):
         except (TypeError, AttributeError):
         except (TypeError, AttributeError):
             pass
             pass
 
 
-        self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_object)
+        self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_command)
         self.app.ui.popmenu_delete.triggered.connect(self.app.on_delete)
         self.app.ui.popmenu_delete.triggered.connect(self.app.on_delete)
         self.app.ui.popmenu_move.triggered.connect(self.app.obj_move)
         self.app.ui.popmenu_move.triggered.connect(self.app.obj_move)
 
 

+ 1 - 1
flatcamEditors/FlatCAMGrbEditor.py

@@ -3742,7 +3742,7 @@ class FlatCAMGrbEditor(QtCore.QObject):
         except (TypeError, AttributeError):
         except (TypeError, AttributeError):
             pass
             pass
 
 
-        self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_object)
+        self.app.ui.popmenu_copy.triggered.connect(self.app.on_copy_command)
         self.app.ui.popmenu_delete.triggered.connect(self.app.on_delete)
         self.app.ui.popmenu_delete.triggered.connect(self.app.on_delete)
         self.app.ui.popmenu_move.triggered.connect(self.app.obj_move)
         self.app.ui.popmenu_move.triggered.connect(self.app.obj_move)
 
 

+ 1 - 1
flatcamGUI/FlatCAMGUI.py

@@ -2815,7 +2815,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
                         self.app.tools_db_tab.on_tool_copy()
                         self.app.tools_db_tab.on_tool_copy()
                         return
                         return
 
 
-                    self.app.on_copy_object()
+                    self.app.on_copy_command()
 
 
                 # Copy an FlatCAM object
                 # Copy an FlatCAM object
                 if key == QtCore.Qt.Key_D:
                 if key == QtCore.Qt.Key_D:

+ 2 - 2
flatcamTools/ToolCalibration.py

@@ -1275,7 +1275,7 @@ class ToolCalibration(FlatCAMTool):
                 if obj.tools:
                 if obj.tools:
                     obj_init.tools = deepcopy(obj.tools)
                     obj_init.tools = deepcopy(obj.tools)
             except Exception as ee:
             except Exception as ee:
-                log.debug("App.on_copy_object() --> %s" % str(ee))
+                log.debug("ToolCalibration.new_calibrated_object.initialize_geometry() --> %s" % str(ee))
 
 
             obj_init.scale(xfactor=scalex, yfactor=scaley, point=(origin_x, origin_y))
             obj_init.scale(xfactor=scalex, yfactor=scaley, point=(origin_x, origin_y))
             obj_init.skew(angle_x=skewx, angle_y=skewy, point=(origin_x, origin_y))
             obj_init.skew(angle_x=skewx, angle_y=skewy, point=(origin_x, origin_y))
@@ -1301,7 +1301,7 @@ class ToolCalibration(FlatCAMTool):
                 if obj.tools:
                 if obj.tools:
                     obj_init.tools = deepcopy(obj.tools)
                     obj_init.tools = deepcopy(obj.tools)
             except Exception as err:
             except Exception as err:
-                log.debug("App.on_copy_object() --> %s" % str(err))
+                log.debug("ToolCalibration.new_calibrated_object.initialize_gerber() --> %s" % str(err))
 
 
             obj_init.scale(xfactor=scalex, yfactor=scaley, point=(origin_x, origin_y))
             obj_init.scale(xfactor=scalex, yfactor=scaley, point=(origin_x, origin_y))
             obj_init.skew(angle_x=skewx, angle_y=skewy, point=(origin_x, origin_y))
             obj_init.skew(angle_x=skewx, angle_y=skewy, point=(origin_x, origin_y))

+ 14 - 2
flatcamTools/ToolDistanceMin.py

@@ -11,7 +11,8 @@ from flatcamGUI.VisPyVisuals import *
 from flatcamGUI.GUIElements import FCEntry
 from flatcamGUI.GUIElements import FCEntry
 
 
 from shapely.ops import nearest_points
 from shapely.ops import nearest_points
-from shapely.geometry import Point
+from shapely.geometry import Point, MultiPolygon
+from shapely.ops import cascaded_union
 
 
 import math
 import math
 import logging
 import logging
@@ -205,6 +206,17 @@ class DistanceMin(FlatCAMTool):
                                      str(len(selected_objs))))
                                      str(len(selected_objs))))
                 return
                 return
             else:
             else:
+                if isinstance(selected_objs[0].solid_geometry, list):
+                    try:
+                        selected_objs[0].solid_geometry = MultiPolygon(selected_objs[0].solid_geometry)
+                    except Exception:
+                        selected_objs[0].solid_geometry = cascaded_union(selected_objs[0].solid_geometry)
+
+                    try:
+                        selected_objs[1].solid_geometry = MultiPolygon(selected_objs[1].solid_geometry)
+                    except Exception:
+                        selected_objs[1].solid_geometry = cascaded_union(selected_objs[1].solid_geometry)
+
                 first_pos, last_pos = nearest_points(selected_objs[0].solid_geometry, selected_objs[1].solid_geometry)
                 first_pos, last_pos = nearest_points(selected_objs[0].solid_geometry, selected_objs[1].solid_geometry)
 
 
         elif self.app.call_source == 'geo_editor':
         elif self.app.call_source == 'geo_editor':
@@ -278,7 +290,7 @@ class DistanceMin(FlatCAMTool):
             )
             )
 
 
         if d != 0:
         if d != 0:
-            self.app.inform.emit("{tx1}: {tx2} D(x) = {d_x} | D(y) = {d_y} | (tx3} = {d_z}".format(
+            self.app.inform.emit("{tx1}: {tx2} D(x) = {d_x} | D(y) = {d_y} | {tx3} = {d_z}".format(
                 tx1=_("MEASURING"),
                 tx1=_("MEASURING"),
                 tx2=_("Result"),
                 tx2=_("Result"),
                 tx3=_("Distance"),
                 tx3=_("Distance"),