From 0158ec5bee055134c74258b561b601b5f489ca5c Mon Sep 17 00:00:00 2001 From: tatiana Date: Tue, 26 Jan 2010 17:49:18 +0000 Subject: [PATCH] ADD: Surface connectivity tools --- invesalius/data/polydata_utils.py | 2 +- invesalius/data/surface.py | 12 ++++++++++-- invesalius/gui/task_surface.py | 6 ++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/invesalius/data/polydata_utils.py b/invesalius/data/polydata_utils.py index 417d0b5..c58dd86 100644 --- a/invesalius/data/polydata_utils.py +++ b/invesalius/data/polydata_utils.py @@ -159,7 +159,7 @@ def SplitDisconectedParts(polydata): polydata_collection = [] - for region in nregions: + for region in xrange(nregions): conn.InitializeSpecifiedRegionList() conn.AddSpecifiedRegion(region) conn.Update() diff --git a/invesalius/data/surface.py b/invesalius/data/surface.py index abf144f..a9eb9f4 100644 --- a/invesalius/data/surface.py +++ b/invesalius/data/surface.py @@ -127,6 +127,7 @@ class SurfaceManager(): def OnSeedSurface(self, pubsub_evt): index, points_id_list = pubsub_evt.data + index = self.last_surface_index proj = prj.Project() surface = proj.surface_dict[index] @@ -136,6 +137,7 @@ class SurfaceManager(): def OnSplitSurface(self, pubsub_evt): index = pubsub_evt.data + index = self.last_surface_index proj = prj.Project() surface = proj.surface_dict[index] @@ -145,11 +147,13 @@ class SurfaceManager(): def OnLargestSurface(self, pubsub_evt): index = pubsub_evt.data + index = self.last_surface_index proj = prj.Project() surface = proj.surface_dict[index] new_polydata = pu.SelectLargestPart(surface.polydata) self.CreateSurfaceFromPolydata(new_polydata) + #TODO: Hide previous def CreateSurfaceFromPolydata(self, polydata, overwrite=False): mapper = vtk.vtkPolyDataMapper() @@ -170,6 +174,7 @@ class SurfaceManager(): # Set actor colour and transparency actor.GetProperty().SetColor(surface.colour) actor.GetProperty().SetOpacity(1-surface.transparency) + self.actors_dict[surface.index] = actor # Append surface into Project.surface_dict proj = prj.Project() @@ -185,8 +190,6 @@ class SurfaceManager(): # The following lines have to be here, otherwise all volumes disappear measured_polydata = vtk.vtkMassProperties() - measured_polydata.AddObserver("ProgressEvent", lambda obj,evt: - UpdateProgress(obj, _("Generating 3D surface..."))) measured_polydata.SetInput(polydata) volume = measured_polydata.GetVolume() surface.volume = volume @@ -194,6 +197,11 @@ class SurfaceManager(): ps.Publisher().sendMessage('Load surface actor into viewer', actor) + ps.Publisher().sendMessage('Update surface info in GUI', + (surface.index, surface.name, + surface.colour, surface.volume, + surface.transparency)) + def OnCloseProject(self, pubsub_evt): self.CloseProject() diff --git a/invesalius/gui/task_surface.py b/invesalius/gui/task_surface.py index 974e923..01976f4 100644 --- a/invesalius/gui/task_surface.py +++ b/invesalius/gui/task_surface.py @@ -327,6 +327,7 @@ class SurfaceTools(wx.Panel): self.SelectSeed() def OnButton(self, evt): + id = evt.GetId() if id == BTN_LARGEST: self.SelectLargest() elif id == BTN_SPLIT: @@ -336,11 +337,12 @@ class SurfaceTools(wx.Panel): def SelectLargest(self): index = self.combo_surface_name.GetSelection() - ps.Publisher().sendMessage('Split surface', index) + ps.Publisher().sendMessage('Create surface from largest region', index) def SplitSurface(self): index = self.combo_surface_name.GetSelection() - ps.Publisher().sendMessage('Create surface from largest region', index) + ps.Publisher().sendMessage('Split surface', index) + # surface_manager def SelectSeed(self): -- libgit2 0.21.2