public void ExtractEdgesVTKBuilderWithoutRunning(ref vtkActor actor, ref vtkPoints points, ref vtkCellArray polys, ref vtkFloatArray scalars, ref vtkLookupTable Luk) { int pointsNum = 0; TowerModelInstance.VTKDrawModel(ref points, ref polys, ref scalars, ref pointsNum, paras); vtkPolyData profile = vtkPolyData.New(); profile.SetPoints(points); profile.SetPolys(polys); vtkExtractEdges ExtProfile = new vtkExtractEdges(); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); if (paras.RotateAngle == 0) { profile.GetCellData().SetScalars(scalars); ExtProfile.SetInput(profile); mapper.SetInputConnection(ExtProfile.GetOutputPort()); } else { vtkRotationalExtrusionFilter refilter = vtkRotationalExtrusionFilter.New(); profile.Update(); profile.GetCellData().SetScalars(scalars); //profile.GetPointData().SetScalars(scalars); ExtProfile.SetInput(profile); refilter.SetInputConnection(ExtProfile.GetOutputPort()); refilter.SetResolution(50); refilter.SetAngle(paras.RotateAngle); refilter.SetTranslation(0); refilter.SetDeltaRadius(0); mapper.SetInputConnection(refilter.GetOutputPort()); } mapper.SetScalarRange(0, 5); mapper.SetLookupTable(Luk); actor.SetMapper(mapper); Luk.SetNumberOfTableValues(7); Luk.SetTableValue(0, 0, 1, 0, 1); // Luk.SetTableValue(1, 0, 0, 0.8, 1); //inner surface Luk.SetTableValue(2, 0, 1, 0, 1); // Luk.SetTableValue(3, 0, 0, 1, 1); Luk.SetTableValue(4, 0, 0, 0.8, 1); //insider Luk.SetTableValue(5, 0, 0.8, 0, 1); //outer surface Luk.Build(); }
private void ExtractEdges() { vtkSphereSource sphereSource = vtkSphereSource.New(); sphereSource.Update(); Debug.WriteLine("Sphere" + Environment.NewLine + "----------"); Debug.WriteLine("There are " + sphereSource.GetOutput().GetNumberOfCells() + " cells."); Debug.WriteLine("There are " + sphereSource.GetOutput().GetNumberOfPoints() + " points."); vtkExtractEdges extractEdges = vtkExtractEdges.New(); #if VTK_MAJOR_VERSION_5 extractEdges.SetInputConnection(sphereSource.GetOutputPort()); #else extractEdges.SetInputData(sphereSource); #endif extractEdges.Update(); vtkCellArray lines = extractEdges.GetOutput().GetLines(); vtkPoints points = extractEdges.GetOutput().GetPoints(); Debug.WriteLine(Environment.NewLine + "Edges" + Environment.NewLine + "----------"); Debug.WriteLine("There are " + lines.GetNumberOfCells() + " cells."); Debug.WriteLine("There are " + points.GetNumberOfPoints() + " points."); // Traverse all of the edges for (int i = 0; i < extractEdges.GetOutput().GetNumberOfCells(); i++) { //Debug.WriteLine("Type: " + extractEdges.GetOutput().GetCell(i).GetClassName() ); vtkLine line = vtkLine.SafeDownCast(extractEdges.GetOutput().GetCell(i)); Debug.WriteLine("Line " + i + " : " + line); } // Visualize the edges // Create a mapper and actor vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 mapper.SetInputConnection(extractEdges.GetOutputPort()); #else mapper.SetInputData(extractEdges); #endif vtkActor actor = vtkActor.New(); actor.SetMapper(mapper); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(1, 1, 1); // add our actor to the renderer renderer.AddActor(actor); }
/// <summary> /// Entry Point /// </summary> /// <param name="argv"></param> public static void Main(String[] argv) { // This example demonstrates how to use 2D Delaunay triangulation. // We create a fancy image of a 2D Delaunay triangulation. Points are // randomly generated. // first we load in the standard vtk packages into tcl // Generate some random points math = vtkMath.New(); points = vtkPoints.New(); for(int i = 0; i < 50; i++) { points.InsertPoint(i, vtkMath.Random(0, 1), vtkMath.Random(0, 1), 0.0); } // Create a polydata with the points we just created. profile = vtkPolyData.New(); profile.SetPoints(points); // Perform a 2D Delaunay triangulation on them. del = vtkDelaunay2D.New(); del.SetInput(profile); del.SetTolerance(0.001); mapMesh = vtkPolyDataMapper.New(); mapMesh.SetInputConnection(del.GetOutputPort()); meshActor = vtkActor.New(); meshActor.SetMapper(mapMesh); meshActor.GetProperty().SetColor(.1, .2, .4); // We will now create a nice looking mesh by wrapping the edges in tubes, // and putting fat spheres at the points. extract = vtkExtractEdges.New(); extract.SetInputConnection(del.GetOutputPort()); tubes = vtkTubeFilter.New(); tubes.SetInputConnection(extract.GetOutputPort()); tubes.SetRadius(0.01); tubes.SetNumberOfSides(6); mapEdges = vtkPolyDataMapper.New(); mapEdges.SetInputConnection(tubes.GetOutputPort()); edgeActor = vtkActor.New(); edgeActor.SetMapper(mapEdges); edgeActor.GetProperty().SetColor(0.2000, 0.6300, 0.7900); edgeActor.GetProperty().SetSpecularColor(1, 1, 1); edgeActor.GetProperty().SetSpecular(0.3); edgeActor.GetProperty().SetSpecularPower(20); edgeActor.GetProperty().SetAmbient(0.2); edgeActor.GetProperty().SetDiffuse(0.8); ball = vtkSphereSource.New(); ball.SetRadius(0.025); ball.SetThetaResolution(12); ball.SetPhiResolution(12); balls = vtkGlyph3D.New(); balls.SetInputConnection(del.GetOutputPort()); balls.SetSourceConnection(ball.GetOutputPort()); mapBalls = vtkPolyDataMapper.New(); mapBalls.SetInputConnection(balls.GetOutputPort()); ballActor = vtkActor.New(); ballActor.SetMapper(mapBalls); ballActor.GetProperty().SetColor(1.0000, 0.4118, 0.7059); ballActor.GetProperty().SetSpecularColor(1, 1, 1); ballActor.GetProperty().SetSpecular(0.3); ballActor.GetProperty().SetSpecularPower(20); ballActor.GetProperty().SetAmbient(0.2); ballActor.GetProperty().SetDiffuse(0.8); // Create graphics objects // Create the rendering window, renderer, and interactive renderer ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer(ren1); iren = vtkRenderWindowInteractor.New(); iren.SetRenderWindow(renWin); // Add the actors to the renderer, set the background and size ren1.AddActor(ballActor); ren1.AddActor(edgeActor); ren1.SetBackground(1, 1, 1); renWin.SetSize(150, 150); // render the image ren1.ResetCamera(); ren1.GetActiveCamera().Zoom(1.5); iren.Initialize(); iren.Start(); // Clean Up deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestRectilinearGridToTetrahedra(String[] argv) { //Prefix Content is: "" //## SetUp the pipeline[] FormMesh = new vtkRectilinearGridToTetrahedra(); FormMesh.SetInput((double)4, (double)2, (double)2, (double)1, (double)1, (double)1, (double)0.001); FormMesh.RememberVoxelIdOn(); TetraEdges = new vtkExtractEdges(); TetraEdges.SetInputConnection((vtkAlgorithmOutput)FormMesh.GetOutputPort()); tubes = new vtkTubeFilter(); tubes.SetInputConnection((vtkAlgorithmOutput)TetraEdges.GetOutputPort()); tubes.SetRadius((double)0.05); tubes.SetNumberOfSides((int)6); //## Run the pipeline 3 times, with different conversions to TetMesh[] Tubes[0] = new vtkPolyData(); FormMesh.SetTetraPerCellTo5(); tubes.Update(); Tubes[0].DeepCopy((vtkDataObject)tubes.GetOutput()); Tubes[1] = new vtkPolyData(); FormMesh.SetTetraPerCellTo6(); tubes.Update(); Tubes[1].DeepCopy((vtkDataObject)tubes.GetOutput()); Tubes[2] = new vtkPolyData(); FormMesh.SetTetraPerCellTo12(); tubes.Update(); Tubes[2].DeepCopy((vtkDataObject)tubes.GetOutput()); //## Run the pipeline once more, this time converting some cells to[] //## 5 and some data to 12 TetMesh[] //## Determine which cells are which[] DivTypes = new vtkIntArray(); numCell = (long)((vtkDataSet)FormMesh.GetInput()).GetNumberOfCells(); DivTypes.SetNumberOfValues((int)numCell); i = 0; while ((i) < numCell) { DivTypes.SetValue((int)i, (int)5 + (7 * (i % 4))); i = i + 1; } //## Finish this pipeline[] Tubes[3] = new vtkPolyData(); FormMesh.SetTetraPerCellTo5And12(); ((vtkRectilinearGrid)FormMesh.GetInput()).GetCellData().SetScalars(DivTypes); tubes.Update(); Tubes[3].DeepCopy((vtkDataObject)tubes.GetOutput()); //## Finish the 4 pipelines[] i = 1; while ((i) < 5) { mapEdges[i] = vtkPolyDataMapper.New(); mapEdges[i].SetInputData((vtkPolyData)Tubes[i - 1]); edgeActor[i] = new vtkActor(); edgeActor[i].SetMapper((vtkMapper)mapEdges[i]); edgeActor[i].GetProperty().SetColor((double)0.2000, 0.6300, 0.7900); edgeActor[i].GetProperty().SetSpecularColor((double)1, (double)1, (double)1); edgeActor[i].GetProperty().SetSpecular((double)0.3); edgeActor[i].GetProperty().SetSpecularPower((double)20); edgeActor[i].GetProperty().SetAmbient((double)0.2); edgeActor[i].GetProperty().SetDiffuse((double)0.8); ren[i] = vtkRenderer.New(); ren[i].AddActor((vtkProp)edgeActor[i]); ren[i].SetBackground((double)0, (double)0, (double)0); ren[i].ResetCamera(); ren[i].GetActiveCamera().Zoom((double)1); ren[i].GetActiveCamera().SetPosition((double)1.73906, (double)12.7987, (double)-0.257808); ren[i].GetActiveCamera().SetViewUp((double)0.992444, (double)0.00890284, (double)-0.122379); ren[i].GetActiveCamera().SetClippingRange((double)9.36398, (double)15.0496); i = i + 1; } // Create graphics objects[] // Create the rendering window, renderer, and interactive renderer[] renWin = vtkRenderWindow.New(); renWin.AddRenderer(ren[1]); renWin.AddRenderer(ren[2]); renWin.AddRenderer(ren[3]); renWin.AddRenderer(ren[4]); renWin.SetSize(600, 300); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); // Add the actors to the renderer, set the background and size[] ren[1].SetViewport((double).75, (double)0, (double)1, (double)1); ren[2].SetViewport((double).50, (double)0, (double).75, (double)1); ren[3].SetViewport((double).25, (double)0, (double).50, (double)1); ren[4].SetViewport((double)0, (double)0, (double).25, (double)1); // render the image[] //[] iren.Initialize(); // prevent the tk window from showing up then start the event loop[] //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestPolygonWriters(String [] argv) { //Prefix Content is: "" // Create the RenderWindow, Renderer and both Actors[] //[] ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); // read data[] //[] input = new vtkPolyDataReader(); input.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/brainImageSmooth.vtk"); //[] // generate vectors[] clean = new vtkCleanPolyData(); clean.SetInputConnection((vtkAlgorithmOutput)input.GetOutputPort()); smooth = new vtkWindowedSincPolyDataFilter(); smooth.SetInputConnection((vtkAlgorithmOutput)clean.GetOutputPort()); smooth.GenerateErrorVectorsOn(); smooth.GenerateErrorScalarsOn(); smooth.Update(); mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); mapper.SetScalarRange((double)((vtkDataSet)smooth.GetOutput()).GetScalarRange()[0], (double)((vtkDataSet)smooth.GetOutput()).GetScalarRange()[1]); brain = new vtkActor(); brain.SetMapper((vtkMapper)mapper); // Add the actors to the renderer, set the background and size[] //[] ren1.AddActor((vtkProp)brain); renWin.SetSize((int)320,(int)240); ren1.GetActiveCamera().SetPosition((double)149.653,(double)-65.3464,(double)96.0401); ren1.GetActiveCamera().SetFocalPoint((double)146.003,(double)22.3839,(double)0.260541); ren1.GetActiveCamera().SetViewAngle((double)30); ren1.GetActiveCamera().SetViewUp((double)-0.255578,(double)-0.717754,(double)-0.647695); ren1.GetActiveCamera().SetClippingRange((double)79.2526,(double)194.052); iren.Initialize(); renWin.Render(); // render the image[] //[] // prevent the tk window from showing up then start the event loop[] //[] // If the current directory is writable, then test the witers[] //[] try { channel = new StreamWriter("test.tmp"); tryCatchError = "NOERROR"; } catch(Exception) {tryCatchError = "ERROR";} if(tryCatchError.Equals("NOERROR")) { channel.Close(); File.Delete("test.tmp"); //[] //[] // test the writers[] dsw = new vtkDataSetWriter(); dsw.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); dsw.SetFileName((string)"brain.dsw"); dsw.Write(); File.Delete("brain.dsw"); pdw = new vtkPolyDataWriter(); pdw.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); pdw.SetFileName((string)"brain.pdw"); pdw.Write(); File.Delete("brain.pdw"); iv = new vtkIVWriter(); iv.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); iv.SetFileName((string)"brain.iv"); iv.Write(); File.Delete("brain.iv"); //[] // the next writers only handle triangles[] triangles = new vtkTriangleFilter(); triangles.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); iv2 = new vtkIVWriter(); iv2.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); iv2.SetFileName((string)"brain2.iv"); iv2.Write(); File.Delete("brain2.iv"); edges = new vtkExtractEdges(); edges.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); iv3 = new vtkIVWriter(); iv3.SetInputConnection((vtkAlgorithmOutput)edges.GetOutputPort()); iv3.SetFileName((string)"brain3.iv"); iv3.Write(); File.Delete("brain3.iv"); byu = new vtkBYUWriter(); byu.SetGeometryFileName((string)"brain.g"); byu.SetScalarFileName((string)"brain.s"); byu.SetDisplacementFileName((string)"brain.d"); byu.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); byu.Write(); File.Delete("brain.g"); File.Delete("brain.s"); File.Delete("brain.d"); mcubes = new vtkMCubesWriter(); mcubes.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); mcubes.SetFileName((string)"brain.tri"); mcubes.SetLimitsFileName((string)"brain.lim"); mcubes.Write(); File.Delete("brain.lim"); File.Delete("brain.tri"); stl = new vtkSTLWriter(); stl.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); stl.SetFileName((string)"brain.stl"); stl.Write(); File.Delete("brain.stl"); stlBinary = new vtkSTLWriter(); stlBinary.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); stlBinary.SetFileName((string)"brainBinary.stl"); stlBinary.SetFileType((int)2); stlBinary.Write(); File.Delete("brainBinary.stl"); } //deleteAllVTKObjects(); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestPolygonWriters(String [] argv) { //Prefix Content is: "" // Create the RenderWindow, Renderer and both Actors[] //[] ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); // read data[] //[] input = new vtkPolyDataReader(); input.SetFileName((string)"" + (VTK_DATA_ROOT.ToString()) + "/Data/brainImageSmooth.vtk"); //[] // generate vectors[] clean = new vtkCleanPolyData(); clean.SetInputConnection((vtkAlgorithmOutput)input.GetOutputPort()); smooth = new vtkWindowedSincPolyDataFilter(); smooth.SetInputConnection((vtkAlgorithmOutput)clean.GetOutputPort()); smooth.GenerateErrorVectorsOn(); smooth.GenerateErrorScalarsOn(); smooth.Update(); mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); mapper.SetScalarRange((double)((vtkDataSet)smooth.GetOutput()).GetScalarRange()[0], (double)((vtkDataSet)smooth.GetOutput()).GetScalarRange()[1]); brain = new vtkActor(); brain.SetMapper((vtkMapper)mapper); // Add the actors to the renderer, set the background and size[] //[] ren1.AddActor((vtkProp)brain); renWin.SetSize((int)320, (int)240); ren1.GetActiveCamera().SetPosition((double)149.653, (double)-65.3464, (double)96.0401); ren1.GetActiveCamera().SetFocalPoint((double)146.003, (double)22.3839, (double)0.260541); ren1.GetActiveCamera().SetViewAngle((double)30); ren1.GetActiveCamera().SetViewUp((double)-0.255578, (double)-0.717754, (double)-0.647695); ren1.GetActiveCamera().SetClippingRange((double)79.2526, (double)194.052); iren.Initialize(); renWin.Render(); // render the image[] //[] // prevent the tk window from showing up then start the event loop[] //[] // If the current directory is writable, then test the witers[] //[] try { channel = new StreamWriter("test.tmp"); tryCatchError = "NOERROR"; } catch (Exception) { tryCatchError = "ERROR"; } if (tryCatchError.Equals("NOERROR")) { channel.Close(); File.Delete("test.tmp"); //[] //[] // test the writers[] dsw = new vtkDataSetWriter(); dsw.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); dsw.SetFileName((string)"brain.dsw"); dsw.Write(); File.Delete("brain.dsw"); pdw = new vtkPolyDataWriter(); pdw.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); pdw.SetFileName((string)"brain.pdw"); pdw.Write(); File.Delete("brain.pdw"); iv = new vtkIVWriter(); iv.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); iv.SetFileName((string)"brain.iv"); iv.Write(); File.Delete("brain.iv"); //[] // the next writers only handle triangles[] triangles = new vtkTriangleFilter(); triangles.SetInputConnection((vtkAlgorithmOutput)smooth.GetOutputPort()); iv2 = new vtkIVWriter(); iv2.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); iv2.SetFileName((string)"brain2.iv"); iv2.Write(); File.Delete("brain2.iv"); edges = new vtkExtractEdges(); edges.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); iv3 = new vtkIVWriter(); iv3.SetInputConnection((vtkAlgorithmOutput)edges.GetOutputPort()); iv3.SetFileName((string)"brain3.iv"); iv3.Write(); File.Delete("brain3.iv"); byu = new vtkBYUWriter(); byu.SetGeometryFileName((string)"brain.g"); byu.SetScalarFileName((string)"brain.s"); byu.SetDisplacementFileName((string)"brain.d"); byu.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); byu.Write(); File.Delete("brain.g"); File.Delete("brain.s"); File.Delete("brain.d"); mcubes = new vtkMCubesWriter(); mcubes.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); mcubes.SetFileName((string)"brain.tri"); mcubes.SetLimitsFileName((string)"brain.lim"); mcubes.Write(); File.Delete("brain.lim"); File.Delete("brain.tri"); stl = new vtkSTLWriter(); stl.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); stl.SetFileName((string)"brain.stl"); stl.Write(); File.Delete("brain.stl"); stlBinary = new vtkSTLWriter(); stlBinary.SetInputConnection((vtkAlgorithmOutput)triangles.GetOutputPort()); stlBinary.SetFileName((string)"brainBinary.stl"); stlBinary.SetFileType((int)2); stlBinary.Write(); File.Delete("brainBinary.stl"); } //deleteAllVTKObjects(); }