Commit 7d82f0c0a33e35b812520a4da8eabe4aaaf3515a
1 parent
b5d8f652
Exists in
surface_area
Calculating surface area
Showing
2 changed files
with
30 additions
and
12 deletions
Show diff stats
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): | ... | ... |