Commit 0087de43c87cc570a74b0c9f1a1dfb110cb5ca6b
1 parent
3b2da4e1
Exists in
master
and in
68 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 | 38 | sphere.SetCenter(x, y, z) |
| 39 | 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 | 45 | m.SetInputConnection(sphere.GetOutputPort()) |
| 46 | - m.SetTransformCoordinate(c) | |
| 46 | +# m.SetTransformCoordinate(c) | |
| 47 | 47 | |
| 48 | - a = vtk.vtkActor2D() | |
| 48 | + a = vtk.vtkActor() | |
| 49 | 49 | a.SetMapper(m) |
| 50 | 50 | a.GetProperty().SetColor(self.colour) |
| 51 | 51 | ... | ... |
invesalius/data/viewer_volume.py
| ... | ... | @@ -91,8 +91,8 @@ class Viewer(wx.Panel): |
| 91 | 91 | |
| 92 | 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 | 96 | self.measures = [] |
| 97 | 97 | |
| 98 | 98 | |
| ... | ... | @@ -299,6 +299,10 @@ class Viewer(wx.Panel): |
| 299 | 299 | const.STATE_MEASURE_DISTANCE: |
| 300 | 300 | { |
| 301 | 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 | 316 | self.text.Hide() |
| 313 | 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 | 321 | self.interactor.SetPicker(self.measure_picker) |
| 317 | 322 | |
| 318 | 323 | if (state == const.STATE_ZOOM_SL): |
| ... | ... | @@ -610,17 +615,20 @@ class Viewer(wx.Panel): |
| 610 | 615 | x,y = self.interactor.GetEventPosition() |
| 611 | 616 | self.measure_picker.Pick(x, y, 0, self.ren) |
| 612 | 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 | 634 | class SlicePlane: | ... | ... |
invesalius/gui/task_tools.py
| ... | ... | @@ -121,12 +121,12 @@ class InnerTaskPanel(wx.Panel): |
| 121 | 121 | print "TODO: Send Signal - Add text annotation (both 2d and 3d)" |
| 122 | 122 | |
| 123 | 123 | def OnLinkLinearMeasure(self): |
| 124 | - #print "TODO: Send Signal - Add linear measure (both 2d and 3d)" | |
| 125 | 124 | ps.Publisher().sendMessage('Enable style', |
| 126 | - constants.STATE_LINEAR_MEASURE) | |
| 125 | + constants.STATE_MEASURE_DISTANCE) | |
| 127 | 126 | |
| 128 | 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 | 131 | def OnButton(self, evt): |
| 132 | 132 | id = evt.GetId() | ... | ... |