VTK/Examples/Cxx/Meshes/BoundaryEdges
From KitwarePublic
This filter will extract the boundary edges of a mesh. The original mesh is shown with the feature edges shown in red.
BoundaryEdges.cxx
#include <vtkSmartPointer.h> #include <vtkFeatureEdges.h> #include <vtkPolyData.h> #include <vtkDiskSource.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteractor.h> int main(int, char *[]) { vtkSmartPointer<vtkDiskSource> diskSource = vtkSmartPointer<vtkDiskSource>::New(); diskSource->Update(); vtkSmartPointer<vtkFeatureEdges> featureEdges = vtkSmartPointer<vtkFeatureEdges>::New(); featureEdges->SetInputConnection(diskSource->GetOutputPort()); featureEdges->BoundaryEdgesOn(); featureEdges->FeatureEdgesOff(); featureEdges->ManifoldEdgesOff(); featureEdges->NonManifoldEdgesOff(); featureEdges->Update(); // Visualize vtkSmartPointer<vtkPolyDataMapper> edgeMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); edgeMapper->SetInputConnection(featureEdges->GetOutputPort()); vtkSmartPointer<vtkActor> edgeActor = vtkSmartPointer<vtkActor>::New(); edgeActor->SetMapper(edgeMapper); vtkSmartPointer<vtkPolyDataMapper> diskMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); diskMapper->SetInputConnection(diskSource->GetOutputPort()); vtkSmartPointer<vtkActor> diskActor = vtkSmartPointer<vtkActor>::New(); diskActor->SetMapper(diskMapper); // Create a renderer, render window, and interactor vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindowInteractor->SetRenderWindow(renderWindow); renderer->AddActor(edgeActor); renderer->AddActor(diskActor); renderer->SetBackground(.3, .6, .3); // Background color green renderWindow->Render(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) PROJECT(BoundaryEdges) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) if (APPLE) add_executable(BoundaryEdges MACOSX_BUNDLE BoundaryEdges.cxx) else() add_executable(BoundaryEdges BoundaryEdges.cxx) endif() if(VTK_LIBRARIES) target_link_libraries(BoundaryEdges ${VTK_LIBRARIES}) else() target_link_libraries(BoundaryEdges vtkHybrid ) endif()
