00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "Step7.h" 00019 00020 #include <QmitkRenderWindow.h> 00021 #include <QmitkSliceWidget.h> 00022 00023 #include <mitkProperties.h> 00024 00025 #include <mitkSurface.h> 00026 #include <mitkRenderingManager.h> 00027 00028 #include <vtkMarchingCubes.h> 00029 #include <vtkSTLWriter.h> 00030 #include <vtkImageData.h> 00031 00032 00033 00034 //##Documentation 00035 //## @brief Convert result of region-grower into a surface 00036 //## by means of a VTK filter 00037 Step7::Step7( int argc, char* argv[], QWidget *parent ) 00038 : Step6( argc, argv, parent ) 00039 { 00040 } 00041 void Step7::StartRegionGrowing() 00042 { 00043 Step6::StartRegionGrowing(); 00044 00045 std::cout << "7"; 00046 if(m_ResultImage.IsNotNull()) 00047 { 00048 m_ResultNode->SetProperty("volumerendering", mitk::BoolProperty::New(false)); 00049 00050 vtkMarchingCubes* surfaceCreator = vtkMarchingCubes::New(); 00051 surfaceCreator->SetInput(m_ResultImage->GetVtkImageData()); 00052 surfaceCreator->SetValue(0, 1); 00053 00054 mitk::Surface::Pointer surface = mitk::Surface::New(); 00055 surface->SetVtkPolyData(surfaceCreator->GetOutput()); 00056 00057 mitk::DataNode::Pointer surfaceNode = mitk::DataNode::New(); 00058 surfaceNode->SetData(surface); 00059 00060 m_DataStorage->Add(surfaceNode); 00061 00062 mitk::RenderingManager::GetInstance()->RequestUpdateAll(); 00063 std::cout << "8"; 00064 surfaceCreator->Delete(); 00065 } 00066 00067 std::cout << "9"; 00068 00069 } 00070