Commit 58af85f1d3a3dd40de4905746be61164fa77c65d
1 parent
347582dc
Exists in
master
and in
6 other branches
ADD: Angular measures
Showing
3 changed files
with
27 additions
and
4 deletions
Show diff stats
invesalius/constants.py
@@ -451,7 +451,8 @@ SLICE_STYLES = TOOL_STATES + TOOL_SLICE_STATES | @@ -451,7 +451,8 @@ SLICE_STYLES = TOOL_STATES + TOOL_SLICE_STATES | ||
451 | SLICE_STYLES.append(STATE_DEFAULT) | 451 | SLICE_STYLES.append(STATE_DEFAULT) |
452 | SLICE_STYLES.append(SLICE_STATE_EDITOR) | 452 | SLICE_STYLES.append(SLICE_STATE_EDITOR) |
453 | 453 | ||
454 | -VOLUME_STYLES = TOOL_STATES + [VOLUME_STATE_SEED, STATE_MEASURE_DISTANCE] | 454 | +VOLUME_STYLES = TOOL_STATES + [VOLUME_STATE_SEED, STATE_MEASURE_DISTANCE, |
455 | + STATE_MEASURE_ANGLE] | ||
455 | VOLUME_STYLES.append(STATE_DEFAULT) | 456 | VOLUME_STYLES.append(STATE_DEFAULT) |
456 | 457 | ||
457 | 458 |
invesalius/data/measures.py
@@ -230,6 +230,11 @@ class AngularMeasure(object): | @@ -230,6 +230,11 @@ class AngularMeasure(object): | ||
230 | self.points[2] = (x, y, z) | 230 | self.points[2] = (x, y, z) |
231 | self.point_actor3 = self.representation.GetRepresentation(x, y, z) | 231 | self.point_actor3 = self.representation.GetRepresentation(x, y, z) |
232 | self.render.AddActor(self.point_actor3) | 232 | self.render.AddActor(self.point_actor3) |
233 | + self.CreateMeasure() | ||
234 | + | ||
235 | + def CreateMeasure(self): | ||
236 | + self._draw_line() | ||
237 | + self._draw_text() | ||
233 | 238 | ||
234 | def _draw_line(self): | 239 | def _draw_line(self): |
235 | line1 = vtk.vtkLineSource() | 240 | line1 = vtk.vtkLineSource() |
@@ -258,7 +263,7 @@ class AngularMeasure(object): | @@ -258,7 +263,7 @@ class AngularMeasure(object): | ||
258 | a.SetMapper(m) | 263 | a.SetMapper(m) |
259 | a.GetProperty().SetColor(self.colour) | 264 | a.GetProperty().SetColor(self.colour) |
260 | self.line_actor = a | 265 | self.line_actor = a |
261 | - return a | 266 | + self.render.AddActor(self.line_actor) |
262 | 267 | ||
263 | def DrawArc(self): | 268 | def DrawArc(self): |
264 | 269 | ||
@@ -307,7 +312,7 @@ class AngularMeasure(object): | @@ -307,7 +312,7 @@ class AngularMeasure(object): | ||
307 | a.GetPositionCoordinate().SetCoordinateSystemToWorld() | 312 | a.GetPositionCoordinate().SetCoordinateSystemToWorld() |
308 | a.GetPositionCoordinate().SetValue(x,y,z) | 313 | a.GetPositionCoordinate().SetValue(x,y,z) |
309 | self.text_actor = a | 314 | self.text_actor = a |
310 | - return a | 315 | + self.render.AddActor(self.text_actor) |
311 | 316 | ||
312 | def GetNumberOfPoints(self): | 317 | def GetNumberOfPoints(self): |
313 | return self.number_of_points | 318 | return self.number_of_points |
invesalius/data/viewer_volume.py
@@ -300,7 +300,7 @@ class Viewer(wx.Panel): | @@ -300,7 +300,7 @@ class Viewer(wx.Panel): | ||
300 | { | 300 | { |
301 | "LeftButtonPressEvent": self.OnInsertLinearMeasurePoint | 301 | "LeftButtonPressEvent": self.OnInsertLinearMeasurePoint |
302 | }, | 302 | }, |
303 | - const.STATE_ANGULAR_MEASURE: | 303 | + const.STATE_MEASURE_ANGLE: |
304 | { | 304 | { |
305 | "LeftButtonPressEvent": self.OnInsertAngularMeasurePoint | 305 | "LeftButtonPressEvent": self.OnInsertAngularMeasurePoint |
306 | } | 306 | } |
@@ -629,6 +629,23 @@ class Viewer(wx.Panel): | @@ -629,6 +629,23 @@ class Viewer(wx.Panel): | ||
629 | 629 | ||
630 | def OnInsertAngularMeasurePoint(self, obj, evt): | 630 | def OnInsertAngularMeasurePoint(self, obj, evt): |
631 | print "Hey, you inserted a angular point" | 631 | print "Hey, you inserted a angular point" |
632 | + x,y = self.interactor.GetEventPosition() | ||
633 | + self.measure_picker.Pick(x, y, 0, self.ren) | ||
634 | + x, y, z = self.measure_picker.GetPickPosition() | ||
635 | +# if self.measure_picker.GetPointId() != -1: | ||
636 | + if not self.measures or self.measures[-1].point_actor3: | ||
637 | + m = measures.AngularMeasure(self.ren) | ||
638 | + m.SetPoint1(x, y, z) | ||
639 | + self.measures.append(m) | ||
640 | + elif not self.measures[-1].point_actor2: | ||
641 | + m = self.measures[-1] | ||
642 | + m.SetPoint2(x, y, z) | ||
643 | + else: | ||
644 | + m = self.measures[-1] | ||
645 | + m.SetPoint3(x, y, z) | ||
646 | + ps.Publisher().sendMessage("Add measure to list", | ||
647 | + ("3D", _("%.3f" % m.GetValue()))) | ||
648 | + self.interactor.Render() | ||
632 | 649 | ||
633 | 650 | ||
634 | class SlicePlane: | 651 | class SlicePlane: |