Commit 7d82f0c0a33e35b812520a4da8eabe4aaaf3515a

Authored by Thiago Franco de Moraes
1 parent b5d8f652
Exists in surface_area

Calculating surface area

invesalius/data/surface.py
... ... @@ -59,7 +59,8 @@ class Surface():
59 59 self.polydata = ''
60 60 self.colour = ''
61 61 self.transparency = const.SURFACE_TRANSPARENCY
62   - self.volume = 0
  62 + self.volume = 0.0
  63 + self.area = 0.0
63 64 self.is_shown = 1
64 65 if not name:
65 66 self.name = const.SURFACE_NAME_PATTERN %(self.index+1)
... ... @@ -81,6 +82,7 @@ class Surface():
81 82 'transparency': self.transparency,
82 83 'visible': bool(self.is_shown),
83 84 'volume': self.volume,
  85 + 'area': self.area,
84 86 }
85 87 plist_filename = filename + '.plist'
86 88 #plist_filepath = os.path.join(dir_temp, filename + '.plist')
... ... @@ -100,6 +102,10 @@ class Surface():
100 102 self.transparency = sp['transparency']
101 103 self.is_shown = sp['visible']
102 104 self.volume = sp['volume']
  105 + try:
  106 + self.area = sp['area']
  107 + except KeyError:
  108 + self.area = 0.0
103 109 self.polydata = pu.Import(os.path.join(dirpath, sp['polydata']))
104 110 Surface.general_index = max(Surface.general_index, self.index)
105 111  
... ... @@ -299,7 +305,9 @@ class SurfaceManager():
299 305 measured_polydata.SetInputConnection(triangle_filter.GetOutputPort())
300 306 measured_polydata.Update()
301 307 volume = measured_polydata.GetVolume()
  308 + area = measured_polydata.GetSurfaceArea()
302 309 surface.volume = volume
  310 + surface.area = area
303 311 print ">>>>", surface.volume
304 312 else:
305 313 surface.volume = volume
... ... @@ -377,8 +385,8 @@ class SurfaceManager():
377 385 # The following lines have to be here, otherwise all volumes disappear
378 386 Publisher.sendMessage('Update surface info in GUI',
379 387 (surface.index, surface.name,
380   - surface.colour, surface.volume,
381   - surface.transparency))
  388 + surface.colour, surface.volume,
  389 + surface.area, surface.transparency))
382 390 if not surface.is_shown:
383 391 self.ShowActor(key, False)
384 392  
... ... @@ -727,7 +735,9 @@ class SurfaceManager():
727 735 # measured_polydata.ReleaseDataFlagOn()
728 736 measured_polydata.SetInputData(to_measure)
729 737 volume = float(measured_polydata.GetVolume())
  738 + area = float(measured_polydata.GetSurfaceArea())
730 739 surface.volume = volume
  740 + surface.area = area
731 741 self.last_surface_index = surface.index
732 742 del measured_polydata
733 743 del to_measure
... ... @@ -745,6 +755,7 @@ class SurfaceManager():
745 755 Publisher.sendMessage('Update surface info in GUI',
746 756 (surface.index, surface.name,
747 757 surface.colour, surface.volume,
  758 + surface.area,
748 759 surface.transparency))
749 760  
750 761 #When you finalize the progress. The bar is cleaned.
... ...
invesalius/gui/data_notebook.py
... ... @@ -769,12 +769,14 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
769 769 self.InsertColumn(0, "", wx.LIST_FORMAT_CENTER)
770 770 self.InsertColumn(1, _("Name"))
771 771 self.InsertColumn(2, _(u"Volume (mm³)"))
772   - self.InsertColumn(3, _("Transparency"), wx.LIST_FORMAT_RIGHT)
  772 + self.InsertColumn(3, _(u"Area (mm²)"))
  773 + self.InsertColumn(4, _("Transparency"), wx.LIST_FORMAT_RIGHT)
773 774  
774 775 self.SetColumnWidth(0, 25)
775 776 self.SetColumnWidth(1, 85)
776 777 self.SetColumnWidth(2, 85)
777   - self.SetColumnWidth(3, 80)
  778 + self.SetColumnWidth(3, 85)
  779 + self.SetColumnWidth(4, 80)
778 780  
779 781 def __init_image_list(self):
780 782 self.imagelist = wx.ImageList(16, 16)
... ... @@ -834,7 +836,8 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
834 836 name = pubsub_evt.data[1]
835 837 colour = pubsub_evt.data[2]
836 838 volume = "%.3f"%pubsub_evt.data[3]
837   - transparency = "%d%%"%(int(100*pubsub_evt.data[4]))
  839 + area = "%.3f"%pubsub_evt.data[4]
  840 + transparency = "%d%%"%(int(100*pubsub_evt.data[5]))
838 841  
839 842 if index not in self.surface_list_index:
840 843 image = self.CreateColourBitmap(colour)
... ... @@ -844,25 +847,29 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
844 847 self.surface_list_index[index] = image_index
845 848  
846 849 if (index in index_list) and index_list:
847   - self.UpdateItemInfo(index, name, volume, transparency, colour)
  850 + self.UpdateItemInfo(index, name, volume, area, transparency, colour)
848 851 else:
849   - self.InsertNewItem(index, name, volume, transparency, colour)
  852 + self.InsertNewItem(index, name, volume, area, transparency, colour)
850 853  
851 854 def InsertNewItem(self, index=0, label="Surface 1", volume="0 mm3",
852   - transparency="0%%", colour=None):
  855 + area="0 mm2", transparency="0%%", colour=None):
853 856 self.InsertStringItem(index, "")
  857 + print ">>>>AREA<<<<<<", area
  858 + print ">>>>AREA<<<<<<", transparency
854 859 self.SetStringItem(index, 1, label,
855 860 imageId = self.surface_list_index[index])
856 861 self.SetStringItem(index, 2, volume)
857   - self.SetStringItem(index, 3, transparency)
  862 + self.SetStringItem(index, 3, area)
  863 + self.SetStringItem(index, 4, transparency)
858 864 self.SetItemImage(index, 1)
859 865  
860 866 def UpdateItemInfo(self, index=0, label="Surface 1", volume="0 mm3",
861   - transparency="0%%", colour=None):
  867 + area="0 mm2", transparency="0%%", colour=None):
862 868 self.SetStringItem(index, 1, label,
863 869 imageId = self.surface_list_index[index])
864 870 self.SetStringItem(index, 2, volume)
865   - self.SetStringItem(index, 3, transparency)
  871 + self.SetStringItem(index, 3, area)
  872 + self.SetStringItem(index, 4, transparency)
866 873 self.SetItemImage(index, 1)
867 874  
868 875 def CreateColourBitmap(self, colour):
... ...