diff --git a/README.md b/README.md
index d2f06309..6295f79e 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing.
- Gerber Editor: added two new tools: Add Disc and Add SemiDisc (porting of Circle and Arc from Geometry Editor)
- Gerber Editor: made Add Pad repeat until user exits the Add Pad through either mouse right click, or ESC key or deselecting the Add Pad menu item
- Gerber and Geometry Editors: fixed some issues with the Add Arc/Add Semidisc; in mode 132, the norm() function was not the one from numpy but from a FlatCAM Class. Also fixed some of the texts and made sure that when changing the mode, the current points are reset to prepare for the newly selected mode.
+- Fixed Measurement Tool to show the mouse coordinates on the status bar (it was broken at some point)
22.04.2019
diff --git a/flatcamTools/ToolMeasurement.py b/flatcamTools/ToolMeasurement.py
index e8a4f96f..e2b759f8 100644
--- a/flatcamTools/ToolMeasurement.py
+++ b/flatcamTools/ToolMeasurement.py
@@ -106,6 +106,9 @@ class Measurement(FlatCAMTool):
# store here the first click and second click of the measurement process
self.points = []
+ self.rel_point1 = None
+ self.rel_point2 = None
+
self.active = False
self.original_call_source = 'app'
@@ -120,6 +123,9 @@ class Measurement(FlatCAMTool):
self.points[:] = []
+ self.rel_point1 = None
+ self.rel_point2 = None
+
if self.app.tool_tab_locked is True:
return
@@ -244,12 +250,21 @@ class Measurement(FlatCAMTool):
if event.button == 1:
pos_canvas = self.canvas.vispy_canvas.translate_coords(event.pos)
# if GRID is active we need to get the snapped positions
- if self.app.grid_status() == True:
+ if self.app.grid_status():
pos = self.app.geo_editor.snap(pos_canvas[0], pos_canvas[1])
else:
pos = pos_canvas[0], pos_canvas[1]
self.points.append(pos)
+ # Reset here the relative coordinates so there is a new reference on the click position
+ if self.rel_point1 is None:
+ self.app.ui.rel_position_label.setText("Dx: %.4f Dy: "
+ "%.4f " % (0.0, 0.0))
+ self.rel_point1 = pos
+ else:
+ self.rel_point2 = copy(self.rel_point1)
+ self.rel_point1 = pos
+
if len(self.points) == 1:
self.start_entry.set_value("(%.4f, %.4f)" % pos)
self.app.inform.emit(_("MEASURING: Click on the Destination point ..."))
@@ -258,7 +273,6 @@ class Measurement(FlatCAMTool):
dx = self.points[1][0] - self.points[0][0]
dy = self.points[1][1] - self.points[0][1]
d = sqrt(dx ** 2 + dy ** 2)
-
self.stop_entry.set_value("(%.4f, %.4f)" % pos)
self.app.inform.emit(_("MEASURING: Result D(x) = {d_x} | D(y) = {d_y} | Distance = {d_z}").format(
@@ -267,19 +281,40 @@ class Measurement(FlatCAMTool):
self.distance_x_entry.set_value('%.4f' % abs(dx))
self.distance_y_entry.set_value('%.4f' % abs(dy))
self.total_distance_entry.set_value('%.4f' % abs(d))
-
+ self.app.ui.rel_position_label.setText("Dx: %.4f Dy: "
+ "%.4f " % (pos[0], pos[1]))
self.deactivate_measure_tool()
def on_mouse_move_meas(self, event):
- pos_canvas = self.canvas.vispy_canvas.translate_coords(event.pos)
- # Update cursor
- pos = self.app.geo_editor.snap(pos_canvas[0], pos_canvas[1])
- if self.app.grid_status() == True:
- self.app.app_cursor.set_data(np.asarray([(pos[0], pos[1])]), symbol='++', edge_color='black', size=20)
+ try: # May fail in case mouse not within axes
+ pos_canvas = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos)
+ if self.app.grid_status():
+ pos = self.app.geo_editor.snap(pos_canvas[0], pos_canvas[1])
+ self.app.app_cursor.enabled = True
+ # Update cursor
+ self.app.app_cursor.set_data(np.asarray([(pos[0], pos[1])]),
+ symbol='++', edge_color='black', size=20)
+ else:
+ pos = (pos_canvas[0], pos_canvas[1])
+ self.app.app_cursor.enabled = False
- # update utility geometry
- if len(self.points) == 1:
- self.utility_geometry(pos=pos)
+ if self.rel_point1 is not None:
+ dx = pos[0] - self.rel_point1[0]
+ dy = pos[1] - self.rel_point1[1]
+ else:
+ dx = pos[0]
+ dy = pos[1]
+
+ self.app.ui.position_label.setText(" X: %.4f "
+ "Y: %.4f" % (pos[0], pos[1]))
+ self.app.ui.rel_position_label.setText("Dx: %.4f Dy: "
+ "%.4f " % (dx, dy))
+ # update utility geometry
+ if len(self.points) == 1:
+ self.utility_geometry(pos=pos)
+ except:
+ self.app.ui.position_label.setText("")
+ self.app.ui.rel_position_label.setText("")
def utility_geometry(self, pos):
# first delete old shape