public void ExtractFeatures() { Filter = vtkDataSetSurfaceFilter.New(); Filter.SetInput(Grid); Filter.Update(); Faces = Filter.GetOutput(); vtkFeatureEdges FeatureEdges = vtkFeatureEdges.New(); FeatureEdges.SetInput(Filter.GetOutput()); FeatureEdges.Update(); FeatureEdges.BoundaryEdgesOn(); FeatureEdges.FeatureEdgesOn(); FeatureEdges.ManifoldEdgesOn(); FeatureEdges.NonManifoldEdgesOn(); // Change Edge color FeatureEdges.SetColoring(0); // Update FeatureEdges.Update(); vtkPolyDataMapper EdgeMapper = vtkPolyDataMapper.New(); EdgeMapper.SetInput(FeatureEdges.GetOutput()); EdgeMapper.ScalarVisibilityOff(); Edges.SetMapper(EdgeMapper); Edges.GetProperty().SetEdgeColor(0, 0, 0); Edges.GetProperty().SetColor(0.0, 0.0, 0.0); Edges.GetProperty().SetLineWidth((float)1.0); // Set default edge thickness Edges.SetVisibility(0); }
private static void ClosedSurface() { // Create a sphere vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); vtkFeatureEdges featureEdges = vtkFeatureEdges.New(); featureEdges.FeatureEdgesOff(); featureEdges.BoundaryEdgesOn(); featureEdges.NonManifoldEdgesOn(); featureEdges.SetInputConnection(sphereSource.GetOutputPort()); featureEdges.Update(); int numberOfOpenEdges = featureEdges.GetOutput().GetNumberOfCells(); if (numberOfOpenEdges > 0) { Console.WriteLine("Surface is not closed"); } else { Console.WriteLine("Surface is closed"); } // nothing to show graphically Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); }
private void BoundaryEdges() { vtkDiskSource diskSource = vtkDiskSource.New(); diskSource.Update(); vtkFeatureEdges featureEdges = vtkFeatureEdges.New(); #if VTK_MAJOR_VERSION_5 featureEdges.SetInputConnection(diskSource.GetOutputPort()); #else featureEdges.SetInputData(diskSource); #endif featureEdges.BoundaryEdgesOn(); featureEdges.FeatureEdgesOff(); featureEdges.ManifoldEdgesOff(); featureEdges.NonManifoldEdgesOff(); featureEdges.Update(); // Visualize vtkPolyDataMapper edgeMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 edgeMapper.SetInputConnection(featureEdges.GetOutputPort()); #else edgeMapper.SetInputData(featureEdges); #endif vtkActor edgeActor = vtkActor.New(); edgeActor.GetProperty().SetLineWidth(3); edgeActor.SetMapper(edgeMapper); vtkPolyDataMapper diskMapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 diskMapper.SetInputConnection(diskSource.GetOutputPort()); #else diskMapper.SetInputData(diskSource); #endif vtkActor diskActor = vtkActor.New(); diskActor.SetMapper(diskMapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(0.3, 0.6, 0.3); // add our actor to the renderer renderer.AddActor(diskActor); renderer.AddActor(edgeActor); }