Commit 0087de43c87cc570a74b0c9f1a1dfb110cb5ca6b
1 parent
3b2da4e1
Exists in
master
and in
6 other branches
ENH: Using PropPicker instead of PointPicker in measures
Showing
3 changed files
with
30 additions
and
22 deletions
Show diff stats
invesalius/data/measures.py
@@ -38,14 +38,14 @@ class CirclePointRepresentation(object): | @@ -38,14 +38,14 @@ class CirclePointRepresentation(object): | ||
38 | sphere.SetCenter(x, y, z) | 38 | sphere.SetCenter(x, y, z) |
39 | sphere.SetRadius(self.radius) | 39 | sphere.SetRadius(self.radius) |
40 | 40 | ||
41 | - c = vtk.vtkCoordinate() | ||
42 | - c.SetCoordinateSystemToWorld() | 41 | +# c = vtk.vtkCoordinate() |
42 | +# c.SetCoordinateSystemToWorld() | ||
43 | 43 | ||
44 | - m = vtk.vtkPolyDataMapper2D() | 44 | + m = vtk.vtkPolyDataMapper() |
45 | m.SetInputConnection(sphere.GetOutputPort()) | 45 | m.SetInputConnection(sphere.GetOutputPort()) |
46 | - m.SetTransformCoordinate(c) | 46 | +# m.SetTransformCoordinate(c) |
47 | 47 | ||
48 | - a = vtk.vtkActor2D() | 48 | + a = vtk.vtkActor() |
49 | a.SetMapper(m) | 49 | a.SetMapper(m) |
50 | a.GetProperty().SetColor(self.colour) | 50 | a.GetProperty().SetColor(self.colour) |
51 | 51 |
invesalius/data/viewer_volume.py
@@ -91,8 +91,8 @@ class Viewer(wx.Panel): | @@ -91,8 +91,8 @@ class Viewer(wx.Panel): | ||
91 | 91 | ||
92 | self.points_reference = [] | 92 | self.points_reference = [] |
93 | 93 | ||
94 | - self.measure_picker = vtk.vtkPointPicker() | ||
95 | - self.measure_picker.SetTolerance(0.005) | 94 | + self.measure_picker = vtk.vtkPropPicker() |
95 | + #self.measure_picker.SetTolerance(0.005) | ||
96 | self.measures = [] | 96 | self.measures = [] |
97 | 97 | ||
98 | 98 | ||
@@ -299,6 +299,10 @@ class Viewer(wx.Panel): | @@ -299,6 +299,10 @@ class Viewer(wx.Panel): | ||
299 | const.STATE_MEASURE_DISTANCE: | 299 | const.STATE_MEASURE_DISTANCE: |
300 | { | 300 | { |
301 | "LeftButtonPressEvent": self.OnInsertLinearMeasurePoint | 301 | "LeftButtonPressEvent": self.OnInsertLinearMeasurePoint |
302 | + }, | ||
303 | + const.STATE_ANGULAR_MEASURE: | ||
304 | + { | ||
305 | + "LeftButtonPressEvent": self.OnInsertAngularMeasurePoint | ||
302 | } | 306 | } |
303 | } | 307 | } |
304 | 308 | ||
@@ -312,7 +316,8 @@ class Viewer(wx.Panel): | @@ -312,7 +316,8 @@ class Viewer(wx.Panel): | ||
312 | self.text.Hide() | 316 | self.text.Hide() |
313 | self.interactor.Render() | 317 | self.interactor.Render() |
314 | 318 | ||
315 | - if state == const.STATE_MEASURE_DISTANCE: | 319 | + if state in (const.STATE_MEASURE_DISTANCE, |
320 | + const.STATE_MEASURE_ANGLE): | ||
316 | self.interactor.SetPicker(self.measure_picker) | 321 | self.interactor.SetPicker(self.measure_picker) |
317 | 322 | ||
318 | if (state == const.STATE_ZOOM_SL): | 323 | if (state == const.STATE_ZOOM_SL): |
@@ -610,17 +615,20 @@ class Viewer(wx.Panel): | @@ -610,17 +615,20 @@ class Viewer(wx.Panel): | ||
610 | x,y = self.interactor.GetEventPosition() | 615 | x,y = self.interactor.GetEventPosition() |
611 | self.measure_picker.Pick(x, y, 0, self.ren) | 616 | self.measure_picker.Pick(x, y, 0, self.ren) |
612 | x, y, z = self.measure_picker.GetPickPosition() | 617 | x, y, z = self.measure_picker.GetPickPosition() |
613 | - if self.measure_picker.GetPointId() != -1: | ||
614 | - if not self.measures or self.measures[-1].point_actor2: | ||
615 | - m = measures.LinearMeasure(self.ren) | ||
616 | - m.SetPoint1(x, y, z) | ||
617 | - self.measures.append(m) | ||
618 | - else: | ||
619 | - m = self.measures[-1] | ||
620 | - m.SetPoint2(x, y, z) | ||
621 | - ps.Publisher().sendMessage("Add measure to list", | ||
622 | - ("3D", _("%.3f mm3" % m.GetValue()))) | ||
623 | - self.interactor.Render() | 618 | +# if self.measure_picker.GetPointId() != -1: |
619 | + if not self.measures or self.measures[-1].point_actor2: | ||
620 | + m = measures.LinearMeasure(self.ren) | ||
621 | + m.SetPoint1(x, y, z) | ||
622 | + self.measures.append(m) | ||
623 | + else: | ||
624 | + m = self.measures[-1] | ||
625 | + m.SetPoint2(x, y, z) | ||
626 | + ps.Publisher().sendMessage("Add measure to list", | ||
627 | + ("3D", _("%.3f mm3" % m.GetValue()))) | ||
628 | + self.interactor.Render() | ||
629 | + | ||
630 | + def OnInsertAngularMeasurePoint(self, obj, evt): | ||
631 | + print "Hey, you inserted a angular point" | ||
624 | 632 | ||
625 | 633 | ||
626 | class SlicePlane: | 634 | class SlicePlane: |
invesalius/gui/task_tools.py
@@ -121,12 +121,12 @@ class InnerTaskPanel(wx.Panel): | @@ -121,12 +121,12 @@ class InnerTaskPanel(wx.Panel): | ||
121 | print "TODO: Send Signal - Add text annotation (both 2d and 3d)" | 121 | print "TODO: Send Signal - Add text annotation (both 2d and 3d)" |
122 | 122 | ||
123 | def OnLinkLinearMeasure(self): | 123 | def OnLinkLinearMeasure(self): |
124 | - #print "TODO: Send Signal - Add linear measure (both 2d and 3d)" | ||
125 | ps.Publisher().sendMessage('Enable style', | 124 | ps.Publisher().sendMessage('Enable style', |
126 | - constants.STATE_LINEAR_MEASURE) | 125 | + constants.STATE_MEASURE_DISTANCE) |
127 | 126 | ||
128 | def OnLinkAngularMeasure(self): | 127 | def OnLinkAngularMeasure(self): |
129 | - print "TODO: Send Signal - Add angular measure (both 2d and 3d)" | 128 | + ps.Publisher().sendMessage('Enable style', |
129 | + constants.STATE_MEASURE_ANGLE) | ||
130 | 130 | ||
131 | def OnButton(self, evt): | 131 | def OnButton(self, evt): |
132 | id = evt.GetId() | 132 | id = evt.GetId() |