Commit 35e84cbf35bb9e66f8b9a9e3f18cb69e7ef34896

Authored by Thiago Franco de Moraes
1 parent 2b068431

melhorias

invesalius/data/measures.py
... ... @@ -490,6 +490,7 @@ class LinearMeasure(object):
490 490 a.GetPositionCoordinate().SetCoordinateSystemToWorld()
491 491 a.GetPositionCoordinate().SetValue(x,y,z)
492 492 a.GetProperty().SetColor((0, 1, 0))
  493 + a.GetProperty().SetOpacity(0.75)
493 494 self.text_actor = a
494 495  
495 496 def GetNumberOfPoints(self):
... ...
invesalius/data/styles.py
... ... @@ -389,7 +389,7 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
389 389 ((x, y,z), const.LINEAR,
390 390 ORIENTATIONS[self.orientation],
391 391 slice_number, self.radius))
392   - self.viewer.interactor.Render()
  392 + Publisher.sendMessage('Reload actual slice %s' % self.orientation)
393 393  
394 394 def OnReleaseMeasurePoint(self, obj, evt):
395 395 if self.selected:
... ... @@ -405,7 +405,8 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
405 405 mr.SetPoint2(x, y, z)
406 406 m.points[1] = x, y, z
407 407  
408   - self.viewer.interactor.Render()
  408 + m.value = mr.GetValue()
  409 +
409 410 Publisher.sendMessage('Reload actual slice %s' % self.orientation)
410 411 self.selected = None
411 412  
... ... @@ -423,7 +424,6 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
423 424 mr.SetPoint2(x, y, z)
424 425 m.points[1] = x, y, z
425 426  
426   - self.viewer.interactor.Render()
427 427 Publisher.sendMessage('Reload actual slice %s' % self.orientation)
428 428  
429 429 def CleanUp(self):
... ... @@ -441,12 +441,20 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle):
441 441  
442 442 def _verify_clicked(self, x, y, z):
443 443 slice_number = self.slice_data.number
  444 + sx, sy, sz = self.viewer.slice_.spacing
  445 + if self.orientation == "AXIAL":
  446 + max_dist = 2 * max(sx, sy)
  447 + elif self.orientation == "CORONAL":
  448 + max_dist = 2 * max(sx, sz)
  449 + elif self.orientation == "SAGITAL":
  450 + max_dist = 2 * max(sy, sz)
  451 +
444 452 if slice_number in self.measures.measures[self._ori]:
445 453 for m, mr in self.measures.measures[self._ori][slice_number]:
446 454 for n, p in enumerate(m.points):
447 455 px, py, pz = p
448 456 dist = ((px-x)**2 + (py-y)**2 + (pz-z)**2)**0.5
449   - if dist < 2:
  457 + if dist < max_dist:
450 458 return (n, m, mr)
451 459 return None
452 460  
... ...
invesalius/data/viewer_slice.py
... ... @@ -19,6 +19,7 @@
19 19 # detalhes.
20 20 #--------------------------------------------------------------------------
21 21  
  22 +import collections
22 23 import itertools
23 24 import tempfile
24 25  
... ... @@ -172,7 +173,7 @@ class Viewer(wx.Panel):
172 173 self.orientation_texts = []
173 174  
174 175 self.measures = measures.MeasureData()
175   - self.actors_by_slice_number = {}
  176 + self.actors_by_slice_number = collections.defaultdict(list)
176 177 self.renderers_by_slice_number = {}
177 178  
178 179 self.orientation = orientation
... ... @@ -1178,9 +1179,9 @@ class Viewer(wx.Panel):
1178 1179 image = self.slice_.GetSlices(self.orientation, index,
1179 1180 self.number_slices, inverted, border_size)
1180 1181 self.slice_data.actor.SetInputData(image)
1181   - for actor in self.actors_by_slice_number.get(self.slice_data.number, []):
  1182 + for actor in self.actors_by_slice_number[self.slice_data.number]:
1182 1183 self.slice_data.renderer.RemoveActor(actor)
1183   - for actor in self.actors_by_slice_number.get(index, []):
  1184 + for actor in self.actors_by_slice_number[index]:
1184 1185 self.slice_data.renderer.AddActor(actor)
1185 1186  
1186 1187 for (m, mr) in self.measures[self.orientation].get(self.slice_data.number, []):
... ... @@ -1247,10 +1248,7 @@ class Viewer(wx.Panel):
1247 1248 for actor in actors:
1248 1249 self.slice_data.renderer.AddActor(actor)
1249 1250  
1250   - try:
1251   - self.actors_by_slice_number[n].extend(actors)
1252   - except KeyError:
1253   - self.actors_by_slice_number[n] = list(actors)
  1251 + self.actors_by_slice_number[n].extend(actors)
1254 1252  
1255 1253 def RemoveActors(self, pubsub_evt):
1256 1254 "Remove a list of actors"
... ...