Commit 35e84cbf35bb9e66f8b9a9e3f18cb69e7ef34896
1 parent
2b068431
Exists in
measure_improvements
melhorias
Showing
3 changed files
with
18 additions
and
11 deletions
Show diff stats
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" | ... | ... |