Commit 57c41ef5d96a613412a70bec057b5ac7660659b6

Authored by tatiana
1 parent 2794a7ed

ADD: Volume raycasting cut plane enable/disable as volume is shown/hiden

Showing 1 changed file with 26 additions and 16 deletions   Show diff stats
invesalius/data/volume.py
... ... @@ -76,13 +76,11 @@ class Volume():
76 76 self.wl = None
77 77 self.n = 0
78 78 self.plane = None
  79 + self.plane_on = False
79 80  
80 81 self.__bind_events()
81 82  
82 83 def __bind_events(self):
83   - #ps.Publisher().subscribe(self.OnLoadVolume, 'Create volume raycasting')
84   - #ps.Publisher().subscribe(self.OnShowVolume,
85   - # 'Show raycasting volume')
86 84 ps.Publisher().subscribe(self.OnHideVolume,
87 85 'Hide raycasting volume')
88 86 ps.Publisher().subscribe(self.OnUpdatePreset,
... ... @@ -102,12 +100,19 @@ class Volume():
102 100 self.LoadVolume()
103 101  
104 102 def OnHideVolume(self, pubsub_evt):
  103 + print "Hide", self.plane, self.plane_on
105 104 self.volume.SetVisibility(0)
  105 + if (self.plane and self.plane_on):
  106 + print "--- Hide Plane"
  107 + self.plane.Disable()
106 108 ps.Publisher().sendMessage('Render volume viewer')
107 109  
108 110 def OnShowVolume(self, pubsub_evt):
109 111 if self.exist:
110 112 self.volume.SetVisibility(1)
  113 + if (self.plane and self.plane_on):
  114 + print "----- Show Plane"
  115 + self.plane.Enable()
111 116 ps.Publisher().sendMessage('Render volume viewer')
112 117 else:
113 118 ps.Publisher.sendMessage('Load raycasting preset', const.RAYCASTING_LABEL)
... ... @@ -125,6 +130,9 @@ class Volume():
125 130 self.LoadVolume()
126 131 self.exist = 1
127 132  
  133 + if (self.plane and self.plane_on):
  134 + self.plane.Enable()
  135 +
128 136 def __load_preset_config(self):
129 137 self.config = prj.Project().raycasting_preset
130 138  
... ... @@ -470,11 +478,13 @@ class Volume():
470 478 if tool_name == "Cut plane":
471 479 if self.plane:
472 480 if enable:
473   - self.plane.EnablePlane()
  481 + self.plane_on = True
  482 + self.plane.Enable()
474 483 else:
475   - print "TODO: Desabilitar plano"
476   - self.plane.DisablePlane()
  484 + self.plane_on = False
  485 + self.plane.Disable()
477 486 else:
  487 + self.plane_on = True
478 488 self.plane = CutPlane(self.final_imagedata,
479 489 self.volume_mapper)
480 490  
... ... @@ -491,18 +501,18 @@ class CutPlane:
491 501 def __init__(self, img, volume_mapper):
492 502 self.img = img
493 503 self.volume_mapper = volume_mapper
494   - self.CreatePlane()
  504 + self.Create()
495 505 self.__bind_events()
496 506  
497 507 def __bind_events(self):
498   - ps.Publisher().subscribe(self.ResetPlane,
  508 + ps.Publisher().subscribe(self.Reset,
499 509 'Reset Cut Plane')
500   - ps.Publisher().subscribe(self.EnablePlane,
  510 + ps.Publisher().subscribe(self.Enable,
501 511 'Enable Cut Plane')
502   - ps.Publisher().subscribe(self.DisablePlane,
  512 + ps.Publisher().subscribe(self.Disable,
503 513 'Disable Cut Plane')
504 514  
505   - def CreatePlane(self):
  515 + def Create(self):
506 516 self.plane_widget = plane_widget = vtk.vtkImagePlaneWidget()
507 517 plane_widget.SetInput(self.img)
508 518 plane_widget.SetPlaneOrientationToXAxes()
... ... @@ -527,7 +537,7 @@ class CutPlane:
527 537 plane_actor.SetMapper(plane_mapper)
528 538 plane_actor.GetProperty().BackfaceCullingOn()
529 539 plane_actor.GetProperty().SetOpacity(0)
530   - plane_widget.AddObserver("InteractionEvent", self.UpdatePlane)
  540 + plane_widget.AddObserver("InteractionEvent", self.Update)
531 541 ps.Publisher().sendMessage('AppendActor', self.plane_actor)
532 542 ps.Publisher().sendMessage('Set Widget Interactor', self.plane_widget)
533 543 plane_actor.SetVisibility(1)
... ... @@ -542,7 +552,7 @@ class CutPlane:
542 552 self.p2 = plane_widget.GetPoint2()
543 553 self.normal = plane_widget.GetNormal()
544 554  
545   - def UpdatePlane(self, a, b):
  555 + def Update(self, a, b):
546 556 plane_source = self.plane_source
547 557 plane_widget = self.plane_widget
548 558 plane_source.SetOrigin(plane_widget.GetOrigin())
... ... @@ -554,19 +564,19 @@ class CutPlane:
554 564 self.plane.SetOrigin(plane_source.GetOrigin())
555 565 ps.Publisher().sendMessage('Render volume viewer', None)
556 566  
557   - def EnablePlane(self, evt_pubsub=None):
  567 + def Enable(self, evt_pubsub=None):
558 568 self.plane_widget.On()
559 569 self.plane_actor.VisibilityOn()
560 570 self.volume_mapper.RemoveClippingPlane(self.plane)
561 571 ps.Publisher().sendMessage('Render volume viewer', None)
562 572  
563   - def DisablePlane(self,evt_pubsub=None):
  573 + def Disable(self,evt_pubsub=None):
564 574 self.plane_widget.Off()
565 575 self.plane_actor.VisibilityOff()
566 576 self.volume_mapper.AddClippingPlane(self.plane)
567 577 ps.Publisher().sendMessage('Render volume viewer', None)
568 578  
569   - def ResetPlane(self, evt_pubsub=None):
  579 + def Reset(self, evt_pubsub=None):
570 580 plane_source = self.plane_source
571 581 plane_widget = self.plane_widget
572 582 plane_source.SetOrigin(self.origin)
... ...