private static void NullPoint() { vtkPoints points = vtkPoints.New(); points.InsertNextPoint(1, 1, 1); points.InsertNextPoint(2, 2, 2); points.InsertNextPoint(3, 3, 3); vtkPolyData polydata = vtkPolyData.New(); polydata.SetPoints(points); vtkFloatArray floatArray = vtkFloatArray.New(); floatArray.SetNumberOfValues(3); floatArray.SetNumberOfComponents(1); floatArray.SetName("FloatArray"); for (int i = 0; i < 3; i++) { floatArray.SetValue(i, 2); } polydata.GetPointData().AddArray(floatArray); vtkIntArray intArray = vtkIntArray.New(); intArray.SetNumberOfValues(3); intArray.SetNumberOfComponents(1); intArray.SetName("IntArray"); for (int i = 0; i < 3; i++) { intArray.SetValue(i, 2); } polydata.GetPointData().AddArray(intArray); Console.WriteLine("PointIdx x y z " + "floatArray" + " " + "intArray"); Console.WriteLine("----------------------------------------"); for (int i = 0; i < 3; i++) { double[] p = polydata.GetPoint(i); vtkFloatArray pointsFloatArray = vtkFloatArray.SafeDownCast(polydata.GetPointData().GetArray("FloatArray")); vtkIntArray pointsIntArray = vtkIntArray.SafeDownCast(polydata.GetPointData().GetArray("IntArray")); Console.WriteLine(" " + i + " " + p[0] + " " + p[1] + " " + p[2] + " " + pointsFloatArray.GetValue(i) + " " + pointsIntArray.GetValue(i)); } polydata.GetPointData().NullPoint(1); polydata.Modified(); Console.WriteLine(""); for (int i = 0; i < 3; i++) { double[] p = polydata.GetPoint(i); vtkFloatArray pointsFloatArray = vtkFloatArray.SafeDownCast(polydata.GetPointData().GetArray("FloatArray")); vtkIntArray pointsIntArray = vtkIntArray.SafeDownCast(polydata.GetPointData().GetArray("IntArray")); Console.WriteLine(" " + i + " " + p[0] + " " + p[1] + " " + p[2] + " " + pointsFloatArray.GetValue(i) + " " + pointsIntArray.GetValue(i)); } }
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(); }
public static PointData FromArray(vtkFloatArray array) { var result = new PointData { Name = array.GetName(), Data = new double[array.GetNumberOfTuples()] }; for (var i = 0; i < array.GetNumberOfTuples(); i++) { result.Data[i] = array.GetTuple1(i); result.Min = Math.Min(result.Min, result.Data[i]); result.Max = Math.Max(result.Max, result.Data[i]); } return(result); }
public static void SetHSectionPoints() { HZArray = vtkFloatArray.New(); HZArray.SetName("HZArray"); HZArray.SetNumberOfComponents(1); HArray = vtkFloatArray.New(); HArray.SetName("HArray"); HArray.SetNumberOfComponents(1); for (var i = 0; i < ImageWidth; ++i) { HArray.InsertNextTuple1(i); HZArray.InsertNextTuple1(PolyData.GetPoint(HSectionNum * ImageWidth + i)[2]); } }
public static void SetVSectionPoints() { VArray = vtkFloatArray.New(); VArray.SetName("VArray"); VArray.SetNumberOfComponents(1); VZArray = vtkFloatArray.New(); VZArray.SetName("VZArray"); VZArray.SetNumberOfComponents(1); for (var i = 0; i < ImageHeight; i++) { VArray.InsertNextTuple1(i); VZArray.InsertNextTuple1(PolyData.GetPoint(VSectionNum + i * ImageWidth)[2]); } }
public static void SetHSectionPoints(Rectangle rect) { HZArray = vtkFloatArray.New(); HZArray.SetName("HZArray"); HZArray.SetNumberOfComponents(1); HArray = vtkFloatArray.New(); HArray.SetName("HArray"); HArray.SetNumberOfComponents(1); HSectionNum = rect.Height / 2; for (var i = 0; i < rect.Width; ++i) { HArray.InsertNextTuple1(i); HZArray.InsertNextTuple1(RectPolyData.GetPoint(HSectionNum * rect.Width + i)[2]); } }
public static void SetVSectionPoints(Rectangle rect) { VArray = vtkFloatArray.New(); VArray.SetName("VArray"); VArray.SetNumberOfComponents(1); VZArray = vtkFloatArray.New(); VZArray.SetName("VZArray"); VZArray.SetNumberOfComponents(1); VSectionNum = rect.Width / 2; for (var i = 0; i < rect.Height; i++) { VArray.InsertNextTuple1(i); VZArray.InsertNextTuple1(RectPolyData.GetPoint(VSectionNum + i * rect.Width)[2]); } }
public static void LinePlotTest() { vtkTable table = vtkTable.New(); vtkFloatArray arrX = vtkFloatArray.New(); table.AddColumn(arrX); vtkFloatArray arrSine = vtkFloatArray.New(); table.AddColumn(arrSine); int numPoints = 100; table.SetNumberOfRows(100); for (int i = 0; i < numPoints; i++) { arrSine.SetValue(i, (float)Math.Cos(i)); } table.Update(); vtkContextView view = vtkContextView.New(); view.GetRenderer().SetBackground(0, 0, 0); vtkChartXY chart = vtkChartXY.New(); view.GetScene().AddItem(chart); chart.AddPlot(0).SetInput(table); view.GetInteractor().Initialize(); view.GetInteractor().Start(); }
///<summary> A Set Method for Static Variables </summary> public static void SetwedgeScalars(vtkFloatArray toSet) { wedgeScalars = toSet; }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVTestCellDerivs(String [] argv) { //Prefix Content is: "" // Demonstrates vtkCellDerivatives for all cell types[] //[] // get the interactor ui[] ren1 = vtkRenderer.New(); renWin = vtkRenderWindow.New(); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); // create a scene with one of each cell type[] // Voxel[] voxelPoints = new vtkPoints(); voxelPoints.SetNumberOfPoints((int)8); voxelPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); voxelPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); voxelPoints.InsertPoint((int)2,(double)0,(double)1,(double)0); voxelPoints.InsertPoint((int)3,(double)1,(double)1,(double)0); voxelPoints.InsertPoint((int)4,(double)0,(double)0,(double)1); voxelPoints.InsertPoint((int)5,(double)1,(double)0,(double)1); voxelPoints.InsertPoint((int)6,(double)0,(double)1,(double)1); voxelPoints.InsertPoint((int)7,(double)1,(double)1,(double)1); aVoxel = new vtkVoxel(); aVoxel.GetPointIds().SetId((int)0,(int)0); aVoxel.GetPointIds().SetId((int)1,(int)1); aVoxel.GetPointIds().SetId((int)2,(int)2); aVoxel.GetPointIds().SetId((int)3,(int)3); aVoxel.GetPointIds().SetId((int)4,(int)4); aVoxel.GetPointIds().SetId((int)5,(int)5); aVoxel.GetPointIds().SetId((int)6,(int)6); aVoxel.GetPointIds().SetId((int)7,(int)7); aVoxelGrid = new vtkUnstructuredGrid(); aVoxelGrid.Allocate((int)1,(int)1); aVoxelGrid.InsertNextCell((int)aVoxel.GetCellType(),(vtkIdList)aVoxel.GetPointIds()); aVoxelGrid.SetPoints((vtkPoints)voxelPoints); aVoxelMapper = new vtkDataSetMapper(); aVoxelMapper.SetInput((vtkDataSet)aVoxelGrid); aVoxelActor = new vtkActor(); aVoxelActor.SetMapper((vtkMapper)aVoxelMapper); aVoxelActor.GetProperty().BackfaceCullingOn(); // Hexahedron[] hexahedronPoints = new vtkPoints(); hexahedronPoints.SetNumberOfPoints((int)8); hexahedronPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); hexahedronPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); hexahedronPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); hexahedronPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); hexahedronPoints.InsertPoint((int)4,(double)0,(double)0,(double)1); hexahedronPoints.InsertPoint((int)5,(double)1,(double)0,(double)1); hexahedronPoints.InsertPoint((int)6,(double)1,(double)1,(double)1); hexahedronPoints.InsertPoint((int)7,(double)0,(double)1,(double)1); aHexahedron = new vtkHexahedron(); aHexahedron.GetPointIds().SetId((int)0,(int)0); aHexahedron.GetPointIds().SetId((int)1,(int)1); aHexahedron.GetPointIds().SetId((int)2,(int)2); aHexahedron.GetPointIds().SetId((int)3,(int)3); aHexahedron.GetPointIds().SetId((int)4,(int)4); aHexahedron.GetPointIds().SetId((int)5,(int)5); aHexahedron.GetPointIds().SetId((int)6,(int)6); aHexahedron.GetPointIds().SetId((int)7,(int)7); aHexahedronGrid = new vtkUnstructuredGrid(); aHexahedronGrid.Allocate((int)1,(int)1); aHexahedronGrid.InsertNextCell((int)aHexahedron.GetCellType(),(vtkIdList)aHexahedron.GetPointIds()); aHexahedronGrid.SetPoints((vtkPoints)hexahedronPoints); aHexahedronMapper = new vtkDataSetMapper(); aHexahedronMapper.SetInput((vtkDataSet)aHexahedronGrid); aHexahedronActor = new vtkActor(); aHexahedronActor.SetMapper((vtkMapper)aHexahedronMapper); aHexahedronActor.AddPosition((double)2,(double)0,(double)0); aHexahedronActor.GetProperty().BackfaceCullingOn(); // Tetra[] tetraPoints = new vtkPoints(); tetraPoints.SetNumberOfPoints((int)4); tetraPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); tetraPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); tetraPoints.InsertPoint((int)2,(double)0,(double)1,(double)0); tetraPoints.InsertPoint((int)3,(double)1,(double)1,(double)1); aTetra = new vtkTetra(); aTetra.GetPointIds().SetId((int)0,(int)0); aTetra.GetPointIds().SetId((int)1,(int)1); aTetra.GetPointIds().SetId((int)2,(int)2); aTetra.GetPointIds().SetId((int)3,(int)3); aTetraGrid = new vtkUnstructuredGrid(); aTetraGrid.Allocate((int)1,(int)1); aTetraGrid.InsertNextCell((int)aTetra.GetCellType(),(vtkIdList)aTetra.GetPointIds()); aTetraGrid.SetPoints((vtkPoints)tetraPoints); aTetraMapper = new vtkDataSetMapper(); aTetraMapper.SetInput((vtkDataSet)aTetraGrid); aTetraActor = new vtkActor(); aTetraActor.SetMapper((vtkMapper)aTetraMapper); aTetraActor.AddPosition((double)4,(double)0,(double)0); aTetraActor.GetProperty().BackfaceCullingOn(); // Wedge[] wedgePoints = new vtkPoints(); wedgePoints.SetNumberOfPoints((int)6); wedgePoints.InsertPoint((int)0,(double)0,(double)1,(double)0); wedgePoints.InsertPoint((int)1,(double)0,(double)0,(double)0); wedgePoints.InsertPoint((int)2,(double)0,(double).5,(double).5); wedgePoints.InsertPoint((int)3,(double)1,(double)1,(double)0); wedgePoints.InsertPoint((int)4,(double)1,(double)0,(double)0); wedgePoints.InsertPoint((int)5,(double)1,(double).5,(double).5); aWedge = new vtkWedge(); aWedge.GetPointIds().SetId((int)0,(int)0); aWedge.GetPointIds().SetId((int)1,(int)1); aWedge.GetPointIds().SetId((int)2,(int)2); aWedge.GetPointIds().SetId((int)3,(int)3); aWedge.GetPointIds().SetId((int)4,(int)4); aWedge.GetPointIds().SetId((int)5,(int)5); aWedgeGrid = new vtkUnstructuredGrid(); aWedgeGrid.Allocate((int)1,(int)1); aWedgeGrid.InsertNextCell((int)aWedge.GetCellType(),(vtkIdList)aWedge.GetPointIds()); aWedgeGrid.SetPoints((vtkPoints)wedgePoints); aWedgeMapper = new vtkDataSetMapper(); aWedgeMapper.SetInput((vtkDataSet)aWedgeGrid); aWedgeActor = new vtkActor(); aWedgeActor.SetMapper((vtkMapper)aWedgeMapper); aWedgeActor.AddPosition((double)6,(double)0,(double)0); aWedgeActor.GetProperty().BackfaceCullingOn(); // Pyramid[] pyramidPoints = new vtkPoints(); pyramidPoints.SetNumberOfPoints((int)5); pyramidPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); pyramidPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); pyramidPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); pyramidPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); pyramidPoints.InsertPoint((int)4,(double).5,(double).5,(double)1); aPyramid = new vtkPyramid(); aPyramid.GetPointIds().SetId((int)0,(int)0); aPyramid.GetPointIds().SetId((int)1,(int)1); aPyramid.GetPointIds().SetId((int)2,(int)2); aPyramid.GetPointIds().SetId((int)3,(int)3); aPyramid.GetPointIds().SetId((int)4,(int)4); aPyramidGrid = new vtkUnstructuredGrid(); aPyramidGrid.Allocate((int)1,(int)1); aPyramidGrid.InsertNextCell((int)aPyramid.GetCellType(),(vtkIdList)aPyramid.GetPointIds()); aPyramidGrid.SetPoints((vtkPoints)pyramidPoints); aPyramidMapper = new vtkDataSetMapper(); aPyramidMapper.SetInput((vtkDataSet)aPyramidGrid); aPyramidActor = new vtkActor(); aPyramidActor.SetMapper((vtkMapper)aPyramidMapper); aPyramidActor.AddPosition((double)8,(double)0,(double)0); aPyramidActor.GetProperty().BackfaceCullingOn(); // Pixel[] pixelPoints = new vtkPoints(); pixelPoints.SetNumberOfPoints((int)4); pixelPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); pixelPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); pixelPoints.InsertPoint((int)2,(double)0,(double)1,(double)0); pixelPoints.InsertPoint((int)3,(double)1,(double)1,(double)0); aPixel = new vtkPixel(); aPixel.GetPointIds().SetId((int)0,(int)0); aPixel.GetPointIds().SetId((int)1,(int)1); aPixel.GetPointIds().SetId((int)2,(int)2); aPixel.GetPointIds().SetId((int)3,(int)3); aPixelGrid = new vtkUnstructuredGrid(); aPixelGrid.Allocate((int)1,(int)1); aPixelGrid.InsertNextCell((int)aPixel.GetCellType(),(vtkIdList)aPixel.GetPointIds()); aPixelGrid.SetPoints((vtkPoints)pixelPoints); aPixelMapper = new vtkDataSetMapper(); aPixelMapper.SetInput((vtkDataSet)aPixelGrid); aPixelActor = new vtkActor(); aPixelActor.SetMapper((vtkMapper)aPixelMapper); aPixelActor.AddPosition((double)0,(double)0,(double)2); aPixelActor.GetProperty().BackfaceCullingOn(); // Quad[] quadPoints = new vtkPoints(); quadPoints.SetNumberOfPoints((int)4); quadPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); quadPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); quadPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); quadPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); aQuad = new vtkQuad(); aQuad.GetPointIds().SetId((int)0,(int)0); aQuad.GetPointIds().SetId((int)1,(int)1); aQuad.GetPointIds().SetId((int)2,(int)2); aQuad.GetPointIds().SetId((int)3,(int)3); aQuadGrid = new vtkUnstructuredGrid(); aQuadGrid.Allocate((int)1,(int)1); aQuadGrid.InsertNextCell((int)aQuad.GetCellType(),(vtkIdList)aQuad.GetPointIds()); aQuadGrid.SetPoints((vtkPoints)quadPoints); aQuadMapper = new vtkDataSetMapper(); aQuadMapper.SetInput((vtkDataSet)aQuadGrid); aQuadActor = new vtkActor(); aQuadActor.SetMapper((vtkMapper)aQuadMapper); aQuadActor.AddPosition((double)2,(double)0,(double)2); aQuadActor.GetProperty().BackfaceCullingOn(); // Triangle[] trianglePoints = new vtkPoints(); trianglePoints.SetNumberOfPoints((int)3); trianglePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); trianglePoints.InsertPoint((int)1,(double)1,(double)0,(double)0); trianglePoints.InsertPoint((int)2,(double).5,(double).5,(double)0); triangleTCoords = new vtkFloatArray(); triangleTCoords.SetNumberOfComponents((int)2); triangleTCoords.SetNumberOfTuples((int)3); triangleTCoords.InsertTuple2((int)0,(double)1,(double)1); triangleTCoords.InsertTuple2((int)1,(double)2,(double)2); triangleTCoords.InsertTuple2((int)2,(double)3,(double)3); aTriangle = new vtkTriangle(); aTriangle.GetPointIds().SetId((int)0,(int)0); aTriangle.GetPointIds().SetId((int)1,(int)1); aTriangle.GetPointIds().SetId((int)2,(int)2); aTriangleGrid = new vtkUnstructuredGrid(); aTriangleGrid.Allocate((int)1,(int)1); aTriangleGrid.InsertNextCell((int)aTriangle.GetCellType(),(vtkIdList)aTriangle.GetPointIds()); aTriangleGrid.SetPoints((vtkPoints)trianglePoints); aTriangleGrid.GetPointData().SetTCoords((vtkDataArray)triangleTCoords); aTriangleMapper = new vtkDataSetMapper(); aTriangleMapper.SetInput((vtkDataSet)aTriangleGrid); aTriangleActor = new vtkActor(); aTriangleActor.SetMapper((vtkMapper)aTriangleMapper); aTriangleActor.AddPosition((double)4,(double)0,(double)2); aTriangleActor.GetProperty().BackfaceCullingOn(); // Polygon[] polygonPoints = new vtkPoints(); polygonPoints.SetNumberOfPoints((int)4); polygonPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); polygonPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); polygonPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); polygonPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); aPolygon = new vtkPolygon(); aPolygon.GetPointIds().SetNumberOfIds((int)4); aPolygon.GetPointIds().SetId((int)0,(int)0); aPolygon.GetPointIds().SetId((int)1,(int)1); aPolygon.GetPointIds().SetId((int)2,(int)2); aPolygon.GetPointIds().SetId((int)3,(int)3); aPolygonGrid = new vtkUnstructuredGrid(); aPolygonGrid.Allocate((int)1,(int)1); aPolygonGrid.InsertNextCell((int)aPolygon.GetCellType(),(vtkIdList)aPolygon.GetPointIds()); aPolygonGrid.SetPoints((vtkPoints)polygonPoints); aPolygonMapper = new vtkDataSetMapper(); aPolygonMapper.SetInput((vtkDataSet)aPolygonGrid); aPolygonActor = new vtkActor(); aPolygonActor.SetMapper((vtkMapper)aPolygonMapper); aPolygonActor.AddPosition((double)6,(double)0,(double)2); aPolygonActor.GetProperty().BackfaceCullingOn(); // Triangle strip[] triangleStripPoints = new vtkPoints(); triangleStripPoints.SetNumberOfPoints((int)5); triangleStripPoints.InsertPoint((int)0,(double)0,(double)1,(double)0); triangleStripPoints.InsertPoint((int)1,(double)0,(double)0,(double)0); triangleStripPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); triangleStripPoints.InsertPoint((int)3,(double)1,(double)0,(double)0); triangleStripPoints.InsertPoint((int)4,(double)2,(double)1,(double)0); triangleStripTCoords = new vtkFloatArray(); triangleStripTCoords.SetNumberOfComponents((int)2); triangleStripTCoords.SetNumberOfTuples((int)3); triangleStripTCoords.InsertTuple2((int)0,(double)1,(double)1); triangleStripTCoords.InsertTuple2((int)1,(double)2,(double)2); triangleStripTCoords.InsertTuple2((int)2,(double)3,(double)3); triangleStripTCoords.InsertTuple2((int)3,(double)4,(double)4); triangleStripTCoords.InsertTuple2((int)4,(double)5,(double)5); aTriangleStrip = new vtkTriangleStrip(); aTriangleStrip.GetPointIds().SetNumberOfIds((int)5); aTriangleStrip.GetPointIds().SetId((int)0,(int)0); aTriangleStrip.GetPointIds().SetId((int)1,(int)1); aTriangleStrip.GetPointIds().SetId((int)2,(int)2); aTriangleStrip.GetPointIds().SetId((int)3,(int)3); aTriangleStrip.GetPointIds().SetId((int)4,(int)4); aTriangleStripGrid = new vtkUnstructuredGrid(); aTriangleStripGrid.Allocate((int)1,(int)1); aTriangleStripGrid.InsertNextCell((int)aTriangleStrip.GetCellType(),(vtkIdList)aTriangleStrip.GetPointIds()); aTriangleStripGrid.SetPoints((vtkPoints)triangleStripPoints); aTriangleStripGrid.GetPointData().SetTCoords((vtkDataArray)triangleStripTCoords); aTriangleStripMapper = new vtkDataSetMapper(); aTriangleStripMapper.SetInput((vtkDataSet)aTriangleStripGrid); aTriangleStripActor = new vtkActor(); aTriangleStripActor.SetMapper((vtkMapper)aTriangleStripMapper); aTriangleStripActor.AddPosition((double)8,(double)0,(double)2); aTriangleStripActor.GetProperty().BackfaceCullingOn(); // Line[] linePoints = new vtkPoints(); linePoints.SetNumberOfPoints((int)2); linePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); linePoints.InsertPoint((int)1,(double)1,(double)1,(double)0); aLine = new vtkLine(); aLine.GetPointIds().SetId((int)0,(int)0); aLine.GetPointIds().SetId((int)1,(int)1); aLineGrid = new vtkUnstructuredGrid(); aLineGrid.Allocate((int)1,(int)1); aLineGrid.InsertNextCell((int)aLine.GetCellType(),(vtkIdList)aLine.GetPointIds()); aLineGrid.SetPoints((vtkPoints)linePoints); aLineMapper = new vtkDataSetMapper(); aLineMapper.SetInput((vtkDataSet)aLineGrid); aLineActor = new vtkActor(); aLineActor.SetMapper((vtkMapper)aLineMapper); aLineActor.AddPosition((double)0,(double)0,(double)4); aLineActor.GetProperty().BackfaceCullingOn(); // Polyline[] polyLinePoints = new vtkPoints(); polyLinePoints.SetNumberOfPoints((int)3); polyLinePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); polyLinePoints.InsertPoint((int)1,(double)1,(double)1,(double)0); polyLinePoints.InsertPoint((int)2,(double)1,(double)0,(double)0); aPolyLine = new vtkPolyLine(); aPolyLine.GetPointIds().SetNumberOfIds((int)3); aPolyLine.GetPointIds().SetId((int)0,(int)0); aPolyLine.GetPointIds().SetId((int)1,(int)1); aPolyLine.GetPointIds().SetId((int)2,(int)2); aPolyLineGrid = new vtkUnstructuredGrid(); aPolyLineGrid.Allocate((int)1,(int)1); aPolyLineGrid.InsertNextCell((int)aPolyLine.GetCellType(),(vtkIdList)aPolyLine.GetPointIds()); aPolyLineGrid.SetPoints((vtkPoints)polyLinePoints); aPolyLineMapper = new vtkDataSetMapper(); aPolyLineMapper.SetInput((vtkDataSet)aPolyLineGrid); aPolyLineActor = new vtkActor(); aPolyLineActor.SetMapper((vtkMapper)aPolyLineMapper); aPolyLineActor.AddPosition((double)2,(double)0,(double)4); aPolyLineActor.GetProperty().BackfaceCullingOn(); // Vertex[] vertexPoints = new vtkPoints(); vertexPoints.SetNumberOfPoints((int)1); vertexPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); aVertex = new vtkVertex(); aVertex.GetPointIds().SetId((int)0,(int)0); aVertexGrid = new vtkUnstructuredGrid(); aVertexGrid.Allocate((int)1,(int)1); aVertexGrid.InsertNextCell((int)aVertex.GetCellType(),(vtkIdList)aVertex.GetPointIds()); aVertexGrid.SetPoints((vtkPoints)vertexPoints); aVertexMapper = new vtkDataSetMapper(); aVertexMapper.SetInput((vtkDataSet)aVertexGrid); aVertexActor = new vtkActor(); aVertexActor.SetMapper((vtkMapper)aVertexMapper); aVertexActor.AddPosition((double)0,(double)0,(double)6); aVertexActor.GetProperty().BackfaceCullingOn(); // Polyvertex[] polyVertexPoints = new vtkPoints(); polyVertexPoints.SetNumberOfPoints((int)3); polyVertexPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); polyVertexPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); polyVertexPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); aPolyVertex = new vtkPolyVertex(); aPolyVertex.GetPointIds().SetNumberOfIds((int)3); aPolyVertex.GetPointIds().SetId((int)0,(int)0); aPolyVertex.GetPointIds().SetId((int)1,(int)1); aPolyVertex.GetPointIds().SetId((int)2,(int)2); aPolyVertexGrid = new vtkUnstructuredGrid(); aPolyVertexGrid.Allocate((int)1,(int)1); aPolyVertexGrid.InsertNextCell((int)aPolyVertex.GetCellType(),(vtkIdList)aPolyVertex.GetPointIds()); aPolyVertexGrid.SetPoints((vtkPoints)polyVertexPoints); aPolyVertexMapper = new vtkDataSetMapper(); aPolyVertexMapper.SetInput((vtkDataSet)aPolyVertexGrid); aPolyVertexActor = new vtkActor(); aPolyVertexActor.SetMapper((vtkMapper)aPolyVertexMapper); aPolyVertexActor.AddPosition((double)2,(double)0,(double)6); aPolyVertexActor.GetProperty().BackfaceCullingOn(); // Pentagonal prism[] pentaPoints = new vtkPoints(); pentaPoints.SetNumberOfPoints((int)10); pentaPoints.InsertPoint((int)0,(double)0.25,(double)0.0,(double)0.0); pentaPoints.InsertPoint((int)1,(double)0.75,(double)0.0,(double)0.0); pentaPoints.InsertPoint((int)2,(double)1.0,(double)0.5,(double)0.0); pentaPoints.InsertPoint((int)3,(double)0.5,(double)1.0,(double)0.0); pentaPoints.InsertPoint((int)4,(double)0.0,(double)0.5,(double)0.0); pentaPoints.InsertPoint((int)5,(double)0.25,(double)0.0,(double)1.0); pentaPoints.InsertPoint((int)6,(double)0.75,(double)0.0,(double)1.0); pentaPoints.InsertPoint((int)7,(double)1.0,(double)0.5,(double)1.0); pentaPoints.InsertPoint((int)8,(double)0.5,(double)1.0,(double)1.0); pentaPoints.InsertPoint((int)9,(double)0.0,(double)0.5,(double)1.0); aPenta = new vtkPentagonalPrism(); aPenta.GetPointIds().SetId((int)0,(int)0); aPenta.GetPointIds().SetId((int)1,(int)1); aPenta.GetPointIds().SetId((int)2,(int)2); aPenta.GetPointIds().SetId((int)3,(int)3); aPenta.GetPointIds().SetId((int)4,(int)4); aPenta.GetPointIds().SetId((int)5,(int)5); aPenta.GetPointIds().SetId((int)6,(int)6); aPenta.GetPointIds().SetId((int)7,(int)7); aPenta.GetPointIds().SetId((int)8,(int)8); aPenta.GetPointIds().SetId((int)9,(int)9); aPentaGrid = new vtkUnstructuredGrid(); aPentaGrid.Allocate((int)1,(int)1); aPentaGrid.InsertNextCell((int)aPenta.GetCellType(),(vtkIdList)aPenta.GetPointIds()); aPentaGrid.SetPoints((vtkPoints)pentaPoints); aPentaMapper = new vtkDataSetMapper(); aPentaMapper.SetInput((vtkDataSet)aPentaGrid); aPentaActor = new vtkActor(); aPentaActor.SetMapper((vtkMapper)aPentaMapper); aPentaActor.AddPosition((double)10,(double)0,(double)0); aPentaActor.GetProperty().BackfaceCullingOn(); // Hexagonal prism[] hexaPoints = new vtkPoints(); hexaPoints.SetNumberOfPoints((int)12); hexaPoints.InsertPoint((int)0,(double)0.0,(double)0.0,(double)0.0); hexaPoints.InsertPoint((int)1,(double)0.5,(double)0.0,(double)0.0); hexaPoints.InsertPoint((int)2,(double)1.0,(double)0.5,(double)0.0); hexaPoints.InsertPoint((int)3,(double)1.0,(double)1.0,(double)0.0); hexaPoints.InsertPoint((int)4,(double)0.5,(double)1.0,(double)0.0); hexaPoints.InsertPoint((int)5,(double)0.0,(double)0.5,(double)0.0); hexaPoints.InsertPoint((int)6,(double)0.0,(double)0.0,(double)1.0); hexaPoints.InsertPoint((int)7,(double)0.5,(double)0.0,(double)1.0); hexaPoints.InsertPoint((int)8,(double)1.0,(double)0.5,(double)1.0); hexaPoints.InsertPoint((int)9,(double)1.0,(double)1.0,(double)1.0); hexaPoints.InsertPoint((int)10,(double)0.5,(double)1.0,(double)1.0); hexaPoints.InsertPoint((int)11,(double)0.0,(double)0.5,(double)1.0); aHexa = new vtkHexagonalPrism(); aHexa.GetPointIds().SetId((int)0,(int)0); aHexa.GetPointIds().SetId((int)1,(int)1); aHexa.GetPointIds().SetId((int)2,(int)2); aHexa.GetPointIds().SetId((int)3,(int)3); aHexa.GetPointIds().SetId((int)4,(int)4); aHexa.GetPointIds().SetId((int)5,(int)5); aHexa.GetPointIds().SetId((int)6,(int)6); aHexa.GetPointIds().SetId((int)7,(int)7); aHexa.GetPointIds().SetId((int)8,(int)8); aHexa.GetPointIds().SetId((int)9,(int)9); aHexa.GetPointIds().SetId((int)10,(int)10); aHexa.GetPointIds().SetId((int)11,(int)11); aHexaGrid = new vtkUnstructuredGrid(); aHexaGrid.Allocate((int)1,(int)1); aHexaGrid.InsertNextCell((int)aHexa.GetCellType(),(vtkIdList)aHexa.GetPointIds()); aHexaGrid.SetPoints((vtkPoints)hexaPoints); aHexaMapper = new vtkDataSetMapper(); aHexaMapper.SetInput((vtkDataSet)aHexaGrid); aHexaActor = new vtkActor(); aHexaActor.SetMapper((vtkMapper)aHexaMapper); aHexaActor.AddPosition((double)12,(double)0,(double)0); aHexaActor.GetProperty().BackfaceCullingOn(); ren1.SetBackground((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aVoxelActor); aVoxelActor.GetProperty().SetDiffuseColor((double)1,(double)0,(double)0); ren1.AddActor((vtkProp)aHexahedronActor); aHexahedronActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)0); ren1.AddActor((vtkProp)aTetraActor); aTetraActor.GetProperty().SetDiffuseColor((double)0,(double)1,(double)0); ren1.AddActor((vtkProp)aWedgeActor); aWedgeActor.GetProperty().SetDiffuseColor((double)0,(double)1,(double)1); ren1.AddActor((vtkProp)aPyramidActor); aPyramidActor.GetProperty().SetDiffuseColor((double)1,(double)0,(double)1); ren1.AddActor((vtkProp)aPixelActor); aPixelActor.GetProperty().SetDiffuseColor((double)0,(double)1,(double)1); ren1.AddActor((vtkProp)aQuadActor); aQuadActor.GetProperty().SetDiffuseColor((double)1,(double)0,(double)1); ren1.AddActor((vtkProp)aTriangleActor); aTriangleActor.GetProperty().SetDiffuseColor((double).3,(double)1,(double).5); ren1.AddActor((vtkProp)aPolygonActor); aPolygonActor.GetProperty().SetDiffuseColor((double)1,(double).4,(double).5); ren1.AddActor((vtkProp)aTriangleStripActor); aTriangleStripActor.GetProperty().SetDiffuseColor((double).3,(double).7,(double)1); ren1.AddActor((vtkProp)aLineActor); aLineActor.GetProperty().SetDiffuseColor((double).2,(double)1,(double)1); ren1.AddActor((vtkProp)aPolyLineActor); aPolyLineActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aVertexActor); aVertexActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aPolyVertexActor); aPolyVertexActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)1); ren1.AddActor((vtkProp)aPentaActor); aPentaActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)0); ren1.AddActor((vtkProp)aHexaActor); aHexaActor.GetProperty().SetDiffuseColor((double)1,(double)1,(double)0); //[] // get the cell center of each type and put a glyph there[] //[] ball = new vtkSphereSource(); ball.SetRadius((double).2); bool tryWorked = false; aVoxelScalars = new vtkFloatArray(); N = aVoxelGrid.GetNumberOfPoints(); aVoxelScalar = new vtkFloatArray(); aVoxelScalar.SetNumberOfTuples((int)N); aVoxelScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aVoxelScalar.SetValue(i,0); i = i + 1; } aVoxelScalar.SetValue(0,4); aVoxelGrid.GetPointData().SetScalars(aVoxelScalar); aHexahedronScalars = new vtkFloatArray(); N = aHexahedronGrid.GetNumberOfPoints(); aHexahedronScalar = new vtkFloatArray(); aHexahedronScalar.SetNumberOfTuples((int)N); aHexahedronScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aHexahedronScalar.SetValue(i,0); i = i + 1; } aHexahedronScalar.SetValue(0,4); aHexahedronGrid.GetPointData().SetScalars(aHexahedronScalar); aWedgeScalars = new vtkFloatArray(); N = aWedgeGrid.GetNumberOfPoints(); aWedgeScalar = new vtkFloatArray(); aWedgeScalar.SetNumberOfTuples((int)N); aWedgeScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aWedgeScalar.SetValue(i,0); i = i + 1; } aWedgeScalar.SetValue(0,4); aWedgeGrid.GetPointData().SetScalars(aWedgeScalar); aPyramidScalars = new vtkFloatArray(); N = aPyramidGrid.GetNumberOfPoints(); aPyramidScalar = new vtkFloatArray(); aPyramidScalar.SetNumberOfTuples((int)N); aPyramidScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPyramidScalar.SetValue(i,0); i = i + 1; } aPyramidScalar.SetValue(0,4); aPyramidGrid.GetPointData().SetScalars(aPyramidScalar); aTetraScalars = new vtkFloatArray(); N = aTetraGrid.GetNumberOfPoints(); aTetraScalar = new vtkFloatArray(); aTetraScalar.SetNumberOfTuples((int)N); aTetraScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aTetraScalar.SetValue(i,0); i = i + 1; } aTetraScalar.SetValue(0,4); aTetraGrid.GetPointData().SetScalars(aTetraScalar); aQuadScalars = new vtkFloatArray(); N = aQuadGrid.GetNumberOfPoints(); aQuadScalar = new vtkFloatArray(); aQuadScalar.SetNumberOfTuples((int)N); aQuadScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aQuadScalar.SetValue(i,0); i = i + 1; } aQuadScalar.SetValue(0,4); aQuadGrid.GetPointData().SetScalars(aQuadScalar); aTriangleScalars = new vtkFloatArray(); N = aTriangleGrid.GetNumberOfPoints(); aTriangleScalar = new vtkFloatArray(); aTriangleScalar.SetNumberOfTuples((int)N); aTriangleScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aTriangleScalar.SetValue(i,0); i = i + 1; } aTriangleScalar.SetValue(0,4); aTriangleGrid.GetPointData().SetScalars(aTriangleScalar); aTriangleStripScalars = new vtkFloatArray(); N = aTriangleStripGrid.GetNumberOfPoints(); aTriangleStripScalar = new vtkFloatArray(); aTriangleStripScalar.SetNumberOfTuples((int)N); aTriangleStripScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aTriangleStripScalar.SetValue(i,0); i = i + 1; } aTriangleStripScalar.SetValue(0,4); aTriangleStripGrid.GetPointData().SetScalars(aTriangleStripScalar); aLineScalars = new vtkFloatArray(); N = aLineGrid.GetNumberOfPoints(); aLineScalar = new vtkFloatArray(); aLineScalar.SetNumberOfTuples((int)N); aLineScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aLineScalar.SetValue(i,0); i = i + 1; } aLineScalar.SetValue(0,4); aLineGrid.GetPointData().SetScalars(aLineScalar); aPolyLineScalars = new vtkFloatArray(); N = aPolyLineGrid.GetNumberOfPoints(); aPolyLineScalar = new vtkFloatArray(); aPolyLineScalar.SetNumberOfTuples((int)N); aPolyLineScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPolyLineScalar.SetValue(i,0); i = i + 1; } aPolyLineScalar.SetValue(0,4); aPolyLineGrid.GetPointData().SetScalars(aPolyLineScalar); aVertexScalars = new vtkFloatArray(); N = aVertexGrid.GetNumberOfPoints(); aVertexScalar = new vtkFloatArray(); aVertexScalar.SetNumberOfTuples((int)N); aVertexScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aVertexScalar.SetValue(i,0); i = i + 1; } aVertexScalar.SetValue(0,4); aVertexGrid.GetPointData().SetScalars(aVertexScalar); aPolyVertexScalars = new vtkFloatArray(); N = aPolyVertexGrid.GetNumberOfPoints(); aPolyVertexScalar = new vtkFloatArray(); aPolyVertexScalar.SetNumberOfTuples((int)N); aPolyVertexScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPolyVertexScalar.SetValue(i,0); i = i + 1; } aPolyVertexScalar.SetValue(0,4); aPolyVertexGrid.GetPointData().SetScalars(aPolyVertexScalar); aPixelScalars = new vtkFloatArray(); N = aPixelGrid.GetNumberOfPoints(); aPixelScalar = new vtkFloatArray(); aPixelScalar.SetNumberOfTuples((int)N); aPixelScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPixelScalar.SetValue(i,0); i = i + 1; } aPixelScalar.SetValue(0,4); aPixelGrid.GetPointData().SetScalars(aPixelScalar); aPolygonScalars = new vtkFloatArray(); N = aPolygonGrid.GetNumberOfPoints(); aPolygonScalar = new vtkFloatArray(); aPolygonScalar.SetNumberOfTuples((int)N); aPolygonScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPolygonScalar.SetValue(i,0); i = i + 1; } aPolygonScalar.SetValue(0,4); aPolygonGrid.GetPointData().SetScalars(aPolygonScalar); aPentaScalars = new vtkFloatArray(); N = aPentaGrid.GetNumberOfPoints(); aPentaScalar = new vtkFloatArray(); aPentaScalar.SetNumberOfTuples((int)N); aPentaScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aPentaScalar.SetValue(i,0); i = i + 1; } aPentaScalar.SetValue(0,4); aPentaGrid.GetPointData().SetScalars(aPentaScalar); aHexaScalars = new vtkFloatArray(); N = aHexaGrid.GetNumberOfPoints(); aHexaScalar = new vtkFloatArray(); aHexaScalar.SetNumberOfTuples((int)N); aHexaScalar.SetNumberOfComponents(1); i = 0; while((i) < N) { aHexaScalar.SetValue(i,0); i = i + 1; } aHexaScalar.SetValue(0,4); aHexaGrid.GetPointData().SetScalars(aHexaScalar); // write to the temp directory if possible, otherwise use .[] dir = "."; dir = TclToCsScriptTestDriver.GetTempDirectory(); aVoxelderivs = new vtkCellDerivatives(); aVoxelderivs.SetInput(aVoxelGrid); aVoxelderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aVoxel"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aVoxelWriter = new vtkUnstructuredGridWriter(); aVoxelWriter.SetInputConnection(aVoxelderivs.GetOutputPort()); aVoxelWriter.SetFileName(FileName); aVoxelWriter.Write(); // delete the file[] File.Delete("FileName"); } aVoxelCenters = new vtkCellCenters(); aVoxelCenters.SetInputConnection(aVoxelderivs.GetOutputPort()); aVoxelCenters.VertexCellsOn(); aVoxelhog = new vtkHedgeHog(); aVoxelhog.SetInputConnection(aVoxelCenters.GetOutputPort()); aVoxelmapHog = vtkPolyDataMapper.New(); aVoxelmapHog.SetInputConnection(aVoxelhog.GetOutputPort()); aVoxelmapHog.SetScalarModeToUseCellData(); aVoxelmapHog.ScalarVisibilityOff(); aVoxelhogActor = new vtkActor(); aVoxelhogActor.SetMapper(aVoxelmapHog); aVoxelhogActor.GetProperty().SetColor(0,1,0); aVoxelGlyph3D = new vtkGlyph3D(); aVoxelGlyph3D.SetInputConnection(aVoxelCenters.GetOutputPort()); aVoxelGlyph3D.SetSource(ball.GetOutput()); aVoxelCentersMapper = vtkPolyDataMapper.New(); aVoxelCentersMapper.SetInputConnection(aVoxelGlyph3D.GetOutputPort()); aVoxelCentersActor = new vtkActor(); aVoxelCentersActor.SetMapper(aVoxelCentersMapper); aVoxelhogActor.SetPosition(aVoxelActor.GetPosition()[0],aVoxelActor.GetPosition()[1],aVoxelActor.GetPosition()[2]); ren1.AddActor((vtkProp)aVoxelhogActor); aVoxelhogActor.GetProperty().SetRepresentationToWireframe(); aHexahedronderivs = new vtkCellDerivatives(); aHexahedronderivs.SetInput(aHexahedronGrid); aHexahedronderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aHexahedron"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aHexahedronWriter = new vtkUnstructuredGridWriter(); aHexahedronWriter.SetInputConnection(aHexahedronderivs.GetOutputPort()); aHexahedronWriter.SetFileName(FileName); aHexahedronWriter.Write(); // delete the file[] File.Delete("FileName"); } aHexahedronCenters = new vtkCellCenters(); aHexahedronCenters.SetInputConnection(aHexahedronderivs.GetOutputPort()); aHexahedronCenters.VertexCellsOn(); aHexahedronhog = new vtkHedgeHog(); aHexahedronhog.SetInputConnection(aHexahedronCenters.GetOutputPort()); aHexahedronmapHog = vtkPolyDataMapper.New(); aHexahedronmapHog.SetInputConnection(aHexahedronhog.GetOutputPort()); aHexahedronmapHog.SetScalarModeToUseCellData(); aHexahedronmapHog.ScalarVisibilityOff(); aHexahedronhogActor = new vtkActor(); aHexahedronhogActor.SetMapper(aHexahedronmapHog); aHexahedronhogActor.GetProperty().SetColor(0,1,0); aHexahedronGlyph3D = new vtkGlyph3D(); aHexahedronGlyph3D.SetInputConnection(aHexahedronCenters.GetOutputPort()); aHexahedronGlyph3D.SetSource(ball.GetOutput()); aHexahedronCentersMapper = vtkPolyDataMapper.New(); aHexahedronCentersMapper.SetInputConnection(aHexahedronGlyph3D.GetOutputPort()); aHexahedronCentersActor = new vtkActor(); aHexahedronCentersActor.SetMapper(aHexahedronCentersMapper); aHexahedronhogActor.SetPosition(aHexahedronActor.GetPosition()[0],aHexahedronActor.GetPosition()[1],aHexahedronActor.GetPosition()[2]); ren1.AddActor((vtkProp)aHexahedronhogActor); aHexahedronhogActor.GetProperty().SetRepresentationToWireframe(); aWedgederivs = new vtkCellDerivatives(); aWedgederivs.SetInput(aWedgeGrid); aWedgederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aWedge"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aWedgeWriter = new vtkUnstructuredGridWriter(); aWedgeWriter.SetInputConnection(aWedgederivs.GetOutputPort()); aWedgeWriter.SetFileName(FileName); aWedgeWriter.Write(); // delete the file[] File.Delete("FileName"); } aWedgeCenters = new vtkCellCenters(); aWedgeCenters.SetInputConnection(aWedgederivs.GetOutputPort()); aWedgeCenters.VertexCellsOn(); aWedgehog = new vtkHedgeHog(); aWedgehog.SetInputConnection(aWedgeCenters.GetOutputPort()); aWedgemapHog = vtkPolyDataMapper.New(); aWedgemapHog.SetInputConnection(aWedgehog.GetOutputPort()); aWedgemapHog.SetScalarModeToUseCellData(); aWedgemapHog.ScalarVisibilityOff(); aWedgehogActor = new vtkActor(); aWedgehogActor.SetMapper(aWedgemapHog); aWedgehogActor.GetProperty().SetColor(0,1,0); aWedgeGlyph3D = new vtkGlyph3D(); aWedgeGlyph3D.SetInputConnection(aWedgeCenters.GetOutputPort()); aWedgeGlyph3D.SetSource(ball.GetOutput()); aWedgeCentersMapper = vtkPolyDataMapper.New(); aWedgeCentersMapper.SetInputConnection(aWedgeGlyph3D.GetOutputPort()); aWedgeCentersActor = new vtkActor(); aWedgeCentersActor.SetMapper(aWedgeCentersMapper); aWedgehogActor.SetPosition(aWedgeActor.GetPosition()[0],aWedgeActor.GetPosition()[1],aWedgeActor.GetPosition()[2]); ren1.AddActor((vtkProp)aWedgehogActor); aWedgehogActor.GetProperty().SetRepresentationToWireframe(); aPyramidderivs = new vtkCellDerivatives(); aPyramidderivs.SetInput(aPyramidGrid); aPyramidderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPyramid"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPyramidWriter = new vtkUnstructuredGridWriter(); aPyramidWriter.SetInputConnection(aPyramidderivs.GetOutputPort()); aPyramidWriter.SetFileName(FileName); aPyramidWriter.Write(); // delete the file[] File.Delete("FileName"); } aPyramidCenters = new vtkCellCenters(); aPyramidCenters.SetInputConnection(aPyramidderivs.GetOutputPort()); aPyramidCenters.VertexCellsOn(); aPyramidhog = new vtkHedgeHog(); aPyramidhog.SetInputConnection(aPyramidCenters.GetOutputPort()); aPyramidmapHog = vtkPolyDataMapper.New(); aPyramidmapHog.SetInputConnection(aPyramidhog.GetOutputPort()); aPyramidmapHog.SetScalarModeToUseCellData(); aPyramidmapHog.ScalarVisibilityOff(); aPyramidhogActor = new vtkActor(); aPyramidhogActor.SetMapper(aPyramidmapHog); aPyramidhogActor.GetProperty().SetColor(0,1,0); aPyramidGlyph3D = new vtkGlyph3D(); aPyramidGlyph3D.SetInputConnection(aPyramidCenters.GetOutputPort()); aPyramidGlyph3D.SetSource(ball.GetOutput()); aPyramidCentersMapper = vtkPolyDataMapper.New(); aPyramidCentersMapper.SetInputConnection(aPyramidGlyph3D.GetOutputPort()); aPyramidCentersActor = new vtkActor(); aPyramidCentersActor.SetMapper(aPyramidCentersMapper); aPyramidhogActor.SetPosition(aPyramidActor.GetPosition()[0],aPyramidActor.GetPosition()[1],aPyramidActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPyramidhogActor); aPyramidhogActor.GetProperty().SetRepresentationToWireframe(); aTetraderivs = new vtkCellDerivatives(); aTetraderivs.SetInput(aTetraGrid); aTetraderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aTetra"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aTetraWriter = new vtkUnstructuredGridWriter(); aTetraWriter.SetInputConnection(aTetraderivs.GetOutputPort()); aTetraWriter.SetFileName(FileName); aTetraWriter.Write(); // delete the file[] File.Delete("FileName"); } aTetraCenters = new vtkCellCenters(); aTetraCenters.SetInputConnection(aTetraderivs.GetOutputPort()); aTetraCenters.VertexCellsOn(); aTetrahog = new vtkHedgeHog(); aTetrahog.SetInputConnection(aTetraCenters.GetOutputPort()); aTetramapHog = vtkPolyDataMapper.New(); aTetramapHog.SetInputConnection(aTetrahog.GetOutputPort()); aTetramapHog.SetScalarModeToUseCellData(); aTetramapHog.ScalarVisibilityOff(); aTetrahogActor = new vtkActor(); aTetrahogActor.SetMapper(aTetramapHog); aTetrahogActor.GetProperty().SetColor(0,1,0); aTetraGlyph3D = new vtkGlyph3D(); aTetraGlyph3D.SetInputConnection(aTetraCenters.GetOutputPort()); aTetraGlyph3D.SetSource(ball.GetOutput()); aTetraCentersMapper = vtkPolyDataMapper.New(); aTetraCentersMapper.SetInputConnection(aTetraGlyph3D.GetOutputPort()); aTetraCentersActor = new vtkActor(); aTetraCentersActor.SetMapper(aTetraCentersMapper); aTetrahogActor.SetPosition(aTetraActor.GetPosition()[0],aTetraActor.GetPosition()[1],aTetraActor.GetPosition()[2]); ren1.AddActor((vtkProp)aTetrahogActor); aTetrahogActor.GetProperty().SetRepresentationToWireframe(); aQuadderivs = new vtkCellDerivatives(); aQuadderivs.SetInput(aQuadGrid); aQuadderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aQuad"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aQuadWriter = new vtkUnstructuredGridWriter(); aQuadWriter.SetInputConnection(aQuadderivs.GetOutputPort()); aQuadWriter.SetFileName(FileName); aQuadWriter.Write(); // delete the file[] File.Delete("FileName"); } aQuadCenters = new vtkCellCenters(); aQuadCenters.SetInputConnection(aQuadderivs.GetOutputPort()); aQuadCenters.VertexCellsOn(); aQuadhog = new vtkHedgeHog(); aQuadhog.SetInputConnection(aQuadCenters.GetOutputPort()); aQuadmapHog = vtkPolyDataMapper.New(); aQuadmapHog.SetInputConnection(aQuadhog.GetOutputPort()); aQuadmapHog.SetScalarModeToUseCellData(); aQuadmapHog.ScalarVisibilityOff(); aQuadhogActor = new vtkActor(); aQuadhogActor.SetMapper(aQuadmapHog); aQuadhogActor.GetProperty().SetColor(0,1,0); aQuadGlyph3D = new vtkGlyph3D(); aQuadGlyph3D.SetInputConnection(aQuadCenters.GetOutputPort()); aQuadGlyph3D.SetSource(ball.GetOutput()); aQuadCentersMapper = vtkPolyDataMapper.New(); aQuadCentersMapper.SetInputConnection(aQuadGlyph3D.GetOutputPort()); aQuadCentersActor = new vtkActor(); aQuadCentersActor.SetMapper(aQuadCentersMapper); aQuadhogActor.SetPosition(aQuadActor.GetPosition()[0],aQuadActor.GetPosition()[1],aQuadActor.GetPosition()[2]); ren1.AddActor((vtkProp)aQuadhogActor); aQuadhogActor.GetProperty().SetRepresentationToWireframe(); aTrianglederivs = new vtkCellDerivatives(); aTrianglederivs.SetInput(aTriangleGrid); aTrianglederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aTriangle"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aTriangleWriter = new vtkUnstructuredGridWriter(); aTriangleWriter.SetInputConnection(aTrianglederivs.GetOutputPort()); aTriangleWriter.SetFileName(FileName); aTriangleWriter.Write(); // delete the file[] File.Delete("FileName"); } aTriangleCenters = new vtkCellCenters(); aTriangleCenters.SetInputConnection(aTrianglederivs.GetOutputPort()); aTriangleCenters.VertexCellsOn(); aTrianglehog = new vtkHedgeHog(); aTrianglehog.SetInputConnection(aTriangleCenters.GetOutputPort()); aTrianglemapHog = vtkPolyDataMapper.New(); aTrianglemapHog.SetInputConnection(aTrianglehog.GetOutputPort()); aTrianglemapHog.SetScalarModeToUseCellData(); aTrianglemapHog.ScalarVisibilityOff(); aTrianglehogActor = new vtkActor(); aTrianglehogActor.SetMapper(aTrianglemapHog); aTrianglehogActor.GetProperty().SetColor(0,1,0); aTriangleGlyph3D = new vtkGlyph3D(); aTriangleGlyph3D.SetInputConnection(aTriangleCenters.GetOutputPort()); aTriangleGlyph3D.SetSource(ball.GetOutput()); aTriangleCentersMapper = vtkPolyDataMapper.New(); aTriangleCentersMapper.SetInputConnection(aTriangleGlyph3D.GetOutputPort()); aTriangleCentersActor = new vtkActor(); aTriangleCentersActor.SetMapper(aTriangleCentersMapper); aTrianglehogActor.SetPosition(aTriangleActor.GetPosition()[0],aTriangleActor.GetPosition()[1],aTriangleActor.GetPosition()[2]); ren1.AddActor((vtkProp)aTrianglehogActor); aTrianglehogActor.GetProperty().SetRepresentationToWireframe(); aTriangleStripderivs = new vtkCellDerivatives(); aTriangleStripderivs.SetInput(aTriangleStripGrid); aTriangleStripderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aTriangleStrip"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aTriangleStripWriter = new vtkUnstructuredGridWriter(); aTriangleStripWriter.SetInputConnection(aTriangleStripderivs.GetOutputPort()); aTriangleStripWriter.SetFileName(FileName); aTriangleStripWriter.Write(); // delete the file[] File.Delete("FileName"); } aTriangleStripCenters = new vtkCellCenters(); aTriangleStripCenters.SetInputConnection(aTriangleStripderivs.GetOutputPort()); aTriangleStripCenters.VertexCellsOn(); aTriangleStriphog = new vtkHedgeHog(); aTriangleStriphog.SetInputConnection(aTriangleStripCenters.GetOutputPort()); aTriangleStripmapHog = vtkPolyDataMapper.New(); aTriangleStripmapHog.SetInputConnection(aTriangleStriphog.GetOutputPort()); aTriangleStripmapHog.SetScalarModeToUseCellData(); aTriangleStripmapHog.ScalarVisibilityOff(); aTriangleStriphogActor = new vtkActor(); aTriangleStriphogActor.SetMapper(aTriangleStripmapHog); aTriangleStriphogActor.GetProperty().SetColor(0,1,0); aTriangleStripGlyph3D = new vtkGlyph3D(); aTriangleStripGlyph3D.SetInputConnection(aTriangleStripCenters.GetOutputPort()); aTriangleStripGlyph3D.SetSource(ball.GetOutput()); aTriangleStripCentersMapper = vtkPolyDataMapper.New(); aTriangleStripCentersMapper.SetInputConnection(aTriangleStripGlyph3D.GetOutputPort()); aTriangleStripCentersActor = new vtkActor(); aTriangleStripCentersActor.SetMapper(aTriangleStripCentersMapper); aTriangleStriphogActor.SetPosition(aTriangleStripActor.GetPosition()[0],aTriangleStripActor.GetPosition()[1],aTriangleStripActor.GetPosition()[2]); ren1.AddActor((vtkProp)aTriangleStriphogActor); aTriangleStriphogActor.GetProperty().SetRepresentationToWireframe(); aLinederivs = new vtkCellDerivatives(); aLinederivs.SetInput(aLineGrid); aLinederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aLine"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aLineWriter = new vtkUnstructuredGridWriter(); aLineWriter.SetInputConnection(aLinederivs.GetOutputPort()); aLineWriter.SetFileName(FileName); aLineWriter.Write(); // delete the file[] File.Delete("FileName"); } aLineCenters = new vtkCellCenters(); aLineCenters.SetInputConnection(aLinederivs.GetOutputPort()); aLineCenters.VertexCellsOn(); aLinehog = new vtkHedgeHog(); aLinehog.SetInputConnection(aLineCenters.GetOutputPort()); aLinemapHog = vtkPolyDataMapper.New(); aLinemapHog.SetInputConnection(aLinehog.GetOutputPort()); aLinemapHog.SetScalarModeToUseCellData(); aLinemapHog.ScalarVisibilityOff(); aLinehogActor = new vtkActor(); aLinehogActor.SetMapper(aLinemapHog); aLinehogActor.GetProperty().SetColor(0,1,0); aLineGlyph3D = new vtkGlyph3D(); aLineGlyph3D.SetInputConnection(aLineCenters.GetOutputPort()); aLineGlyph3D.SetSource(ball.GetOutput()); aLineCentersMapper = vtkPolyDataMapper.New(); aLineCentersMapper.SetInputConnection(aLineGlyph3D.GetOutputPort()); aLineCentersActor = new vtkActor(); aLineCentersActor.SetMapper(aLineCentersMapper); aLinehogActor.SetPosition(aLineActor.GetPosition()[0],aLineActor.GetPosition()[1],aLineActor.GetPosition()[2]); ren1.AddActor((vtkProp)aLinehogActor); aLinehogActor.GetProperty().SetRepresentationToWireframe(); aPolyLinederivs = new vtkCellDerivatives(); aPolyLinederivs.SetInput(aPolyLineGrid); aPolyLinederivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPolyLine"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPolyLineWriter = new vtkUnstructuredGridWriter(); aPolyLineWriter.SetInputConnection(aPolyLinederivs.GetOutputPort()); aPolyLineWriter.SetFileName(FileName); aPolyLineWriter.Write(); // delete the file[] File.Delete("FileName"); } aPolyLineCenters = new vtkCellCenters(); aPolyLineCenters.SetInputConnection(aPolyLinederivs.GetOutputPort()); aPolyLineCenters.VertexCellsOn(); aPolyLinehog = new vtkHedgeHog(); aPolyLinehog.SetInputConnection(aPolyLineCenters.GetOutputPort()); aPolyLinemapHog = vtkPolyDataMapper.New(); aPolyLinemapHog.SetInputConnection(aPolyLinehog.GetOutputPort()); aPolyLinemapHog.SetScalarModeToUseCellData(); aPolyLinemapHog.ScalarVisibilityOff(); aPolyLinehogActor = new vtkActor(); aPolyLinehogActor.SetMapper(aPolyLinemapHog); aPolyLinehogActor.GetProperty().SetColor(0,1,0); aPolyLineGlyph3D = new vtkGlyph3D(); aPolyLineGlyph3D.SetInputConnection(aPolyLineCenters.GetOutputPort()); aPolyLineGlyph3D.SetSource(ball.GetOutput()); aPolyLineCentersMapper = vtkPolyDataMapper.New(); aPolyLineCentersMapper.SetInputConnection(aPolyLineGlyph3D.GetOutputPort()); aPolyLineCentersActor = new vtkActor(); aPolyLineCentersActor.SetMapper(aPolyLineCentersMapper); aPolyLinehogActor.SetPosition(aPolyLineActor.GetPosition()[0],aPolyLineActor.GetPosition()[1],aPolyLineActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPolyLinehogActor); aPolyLinehogActor.GetProperty().SetRepresentationToWireframe(); aVertexderivs = new vtkCellDerivatives(); aVertexderivs.SetInput(aVertexGrid); aVertexderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aVertex"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aVertexWriter = new vtkUnstructuredGridWriter(); aVertexWriter.SetInputConnection(aVertexderivs.GetOutputPort()); aVertexWriter.SetFileName(FileName); aVertexWriter.Write(); // delete the file[] File.Delete("FileName"); } aVertexCenters = new vtkCellCenters(); aVertexCenters.SetInputConnection(aVertexderivs.GetOutputPort()); aVertexCenters.VertexCellsOn(); aVertexhog = new vtkHedgeHog(); aVertexhog.SetInputConnection(aVertexCenters.GetOutputPort()); aVertexmapHog = vtkPolyDataMapper.New(); aVertexmapHog.SetInputConnection(aVertexhog.GetOutputPort()); aVertexmapHog.SetScalarModeToUseCellData(); aVertexmapHog.ScalarVisibilityOff(); aVertexhogActor = new vtkActor(); aVertexhogActor.SetMapper(aVertexmapHog); aVertexhogActor.GetProperty().SetColor(0,1,0); aVertexGlyph3D = new vtkGlyph3D(); aVertexGlyph3D.SetInputConnection(aVertexCenters.GetOutputPort()); aVertexGlyph3D.SetSource(ball.GetOutput()); aVertexCentersMapper = vtkPolyDataMapper.New(); aVertexCentersMapper.SetInputConnection(aVertexGlyph3D.GetOutputPort()); aVertexCentersActor = new vtkActor(); aVertexCentersActor.SetMapper(aVertexCentersMapper); aVertexhogActor.SetPosition(aVertexActor.GetPosition()[0],aVertexActor.GetPosition()[1],aVertexActor.GetPosition()[2]); ren1.AddActor((vtkProp)aVertexhogActor); aVertexhogActor.GetProperty().SetRepresentationToWireframe(); aPolyVertexderivs = new vtkCellDerivatives(); aPolyVertexderivs.SetInput(aPolyVertexGrid); aPolyVertexderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPolyVertex"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPolyVertexWriter = new vtkUnstructuredGridWriter(); aPolyVertexWriter.SetInputConnection(aPolyVertexderivs.GetOutputPort()); aPolyVertexWriter.SetFileName(FileName); aPolyVertexWriter.Write(); // delete the file[] File.Delete("FileName"); } aPolyVertexCenters = new vtkCellCenters(); aPolyVertexCenters.SetInputConnection(aPolyVertexderivs.GetOutputPort()); aPolyVertexCenters.VertexCellsOn(); aPolyVertexhog = new vtkHedgeHog(); aPolyVertexhog.SetInputConnection(aPolyVertexCenters.GetOutputPort()); aPolyVertexmapHog = vtkPolyDataMapper.New(); aPolyVertexmapHog.SetInputConnection(aPolyVertexhog.GetOutputPort()); aPolyVertexmapHog.SetScalarModeToUseCellData(); aPolyVertexmapHog.ScalarVisibilityOff(); aPolyVertexhogActor = new vtkActor(); aPolyVertexhogActor.SetMapper(aPolyVertexmapHog); aPolyVertexhogActor.GetProperty().SetColor(0,1,0); aPolyVertexGlyph3D = new vtkGlyph3D(); aPolyVertexGlyph3D.SetInputConnection(aPolyVertexCenters.GetOutputPort()); aPolyVertexGlyph3D.SetSource(ball.GetOutput()); aPolyVertexCentersMapper = vtkPolyDataMapper.New(); aPolyVertexCentersMapper.SetInputConnection(aPolyVertexGlyph3D.GetOutputPort()); aPolyVertexCentersActor = new vtkActor(); aPolyVertexCentersActor.SetMapper(aPolyVertexCentersMapper); aPolyVertexhogActor.SetPosition(aPolyVertexActor.GetPosition()[0],aPolyVertexActor.GetPosition()[1],aPolyVertexActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPolyVertexhogActor); aPolyVertexhogActor.GetProperty().SetRepresentationToWireframe(); aPixelderivs = new vtkCellDerivatives(); aPixelderivs.SetInput(aPixelGrid); aPixelderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPixel"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPixelWriter = new vtkUnstructuredGridWriter(); aPixelWriter.SetInputConnection(aPixelderivs.GetOutputPort()); aPixelWriter.SetFileName(FileName); aPixelWriter.Write(); // delete the file[] File.Delete("FileName"); } aPixelCenters = new vtkCellCenters(); aPixelCenters.SetInputConnection(aPixelderivs.GetOutputPort()); aPixelCenters.VertexCellsOn(); aPixelhog = new vtkHedgeHog(); aPixelhog.SetInputConnection(aPixelCenters.GetOutputPort()); aPixelmapHog = vtkPolyDataMapper.New(); aPixelmapHog.SetInputConnection(aPixelhog.GetOutputPort()); aPixelmapHog.SetScalarModeToUseCellData(); aPixelmapHog.ScalarVisibilityOff(); aPixelhogActor = new vtkActor(); aPixelhogActor.SetMapper(aPixelmapHog); aPixelhogActor.GetProperty().SetColor(0,1,0); aPixelGlyph3D = new vtkGlyph3D(); aPixelGlyph3D.SetInputConnection(aPixelCenters.GetOutputPort()); aPixelGlyph3D.SetSource(ball.GetOutput()); aPixelCentersMapper = vtkPolyDataMapper.New(); aPixelCentersMapper.SetInputConnection(aPixelGlyph3D.GetOutputPort()); aPixelCentersActor = new vtkActor(); aPixelCentersActor.SetMapper(aPixelCentersMapper); aPixelhogActor.SetPosition(aPixelActor.GetPosition()[0],aPixelActor.GetPosition()[1],aPixelActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPixelhogActor); aPixelhogActor.GetProperty().SetRepresentationToWireframe(); aPolygonderivs = new vtkCellDerivatives(); aPolygonderivs.SetInput(aPolygonGrid); aPolygonderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPolygon"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPolygonWriter = new vtkUnstructuredGridWriter(); aPolygonWriter.SetInputConnection(aPolygonderivs.GetOutputPort()); aPolygonWriter.SetFileName(FileName); aPolygonWriter.Write(); // delete the file[] File.Delete("FileName"); } aPolygonCenters = new vtkCellCenters(); aPolygonCenters.SetInputConnection(aPolygonderivs.GetOutputPort()); aPolygonCenters.VertexCellsOn(); aPolygonhog = new vtkHedgeHog(); aPolygonhog.SetInputConnection(aPolygonCenters.GetOutputPort()); aPolygonmapHog = vtkPolyDataMapper.New(); aPolygonmapHog.SetInputConnection(aPolygonhog.GetOutputPort()); aPolygonmapHog.SetScalarModeToUseCellData(); aPolygonmapHog.ScalarVisibilityOff(); aPolygonhogActor = new vtkActor(); aPolygonhogActor.SetMapper(aPolygonmapHog); aPolygonhogActor.GetProperty().SetColor(0,1,0); aPolygonGlyph3D = new vtkGlyph3D(); aPolygonGlyph3D.SetInputConnection(aPolygonCenters.GetOutputPort()); aPolygonGlyph3D.SetSource(ball.GetOutput()); aPolygonCentersMapper = vtkPolyDataMapper.New(); aPolygonCentersMapper.SetInputConnection(aPolygonGlyph3D.GetOutputPort()); aPolygonCentersActor = new vtkActor(); aPolygonCentersActor.SetMapper(aPolygonCentersMapper); aPolygonhogActor.SetPosition(aPolygonActor.GetPosition()[0],aPolygonActor.GetPosition()[1],aPolygonActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPolygonhogActor); aPolygonhogActor.GetProperty().SetRepresentationToWireframe(); aPentaderivs = new vtkCellDerivatives(); aPentaderivs.SetInput(aPentaGrid); aPentaderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aPenta"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aPentaWriter = new vtkUnstructuredGridWriter(); aPentaWriter.SetInputConnection(aPentaderivs.GetOutputPort()); aPentaWriter.SetFileName(FileName); aPentaWriter.Write(); // delete the file[] File.Delete("FileName"); } aPentaCenters = new vtkCellCenters(); aPentaCenters.SetInputConnection(aPentaderivs.GetOutputPort()); aPentaCenters.VertexCellsOn(); aPentahog = new vtkHedgeHog(); aPentahog.SetInputConnection(aPentaCenters.GetOutputPort()); aPentamapHog = vtkPolyDataMapper.New(); aPentamapHog.SetInputConnection(aPentahog.GetOutputPort()); aPentamapHog.SetScalarModeToUseCellData(); aPentamapHog.ScalarVisibilityOff(); aPentahogActor = new vtkActor(); aPentahogActor.SetMapper(aPentamapHog); aPentahogActor.GetProperty().SetColor(0,1,0); aPentaGlyph3D = new vtkGlyph3D(); aPentaGlyph3D.SetInputConnection(aPentaCenters.GetOutputPort()); aPentaGlyph3D.SetSource(ball.GetOutput()); aPentaCentersMapper = vtkPolyDataMapper.New(); aPentaCentersMapper.SetInputConnection(aPentaGlyph3D.GetOutputPort()); aPentaCentersActor = new vtkActor(); aPentaCentersActor.SetMapper(aPentaCentersMapper); aPentahogActor.SetPosition(aPentaActor.GetPosition()[0],aPentaActor.GetPosition()[1],aPentaActor.GetPosition()[2]); ren1.AddActor((vtkProp)aPentahogActor); aPentahogActor.GetProperty().SetRepresentationToWireframe(); aHexaderivs = new vtkCellDerivatives(); aHexaderivs.SetInput(aHexaGrid); aHexaderivs.SetVectorModeToComputeGradient(); FileName = dir; FileName += "/aHexa"; FileName += ".vtk"; // make sure the directory is writeable first[] tryWorked = false; try { channel = new StreamWriter("" + (dir.ToString()) + "/test.tmp"); tryWorked = true; } catch(Exception) { tryWorked = false; } if(tryWorked) { channel.Close(); File.Delete("" + (dir.ToString()) + "/test.tmp"); aHexaWriter = new vtkUnstructuredGridWriter(); aHexaWriter.SetInputConnection(aHexaderivs.GetOutputPort()); aHexaWriter.SetFileName(FileName); aHexaWriter.Write(); // delete the file[] File.Delete("FileName"); } aHexaCenters = new vtkCellCenters(); aHexaCenters.SetInputConnection(aHexaderivs.GetOutputPort()); aHexaCenters.VertexCellsOn(); aHexahog = new vtkHedgeHog(); aHexahog.SetInputConnection(aHexaCenters.GetOutputPort()); aHexamapHog = vtkPolyDataMapper.New(); aHexamapHog.SetInputConnection(aHexahog.GetOutputPort()); aHexamapHog.SetScalarModeToUseCellData(); aHexamapHog.ScalarVisibilityOff(); aHexahogActor = new vtkActor(); aHexahogActor.SetMapper(aHexamapHog); aHexahogActor.GetProperty().SetColor(0,1,0); aHexaGlyph3D = new vtkGlyph3D(); aHexaGlyph3D.SetInputConnection(aHexaCenters.GetOutputPort()); aHexaGlyph3D.SetSource(ball.GetOutput()); aHexaCentersMapper = vtkPolyDataMapper.New(); aHexaCentersMapper.SetInputConnection(aHexaGlyph3D.GetOutputPort()); aHexaCentersActor = new vtkActor(); aHexaCentersActor.SetMapper(aHexaCentersMapper); aHexahogActor.SetPosition(aHexaActor.GetPosition()[0],aHexaActor.GetPosition()[1],aHexaActor.GetPosition()[2]); ren1.AddActor((vtkProp)aHexahogActor); aHexahogActor.GetProperty().SetRepresentationToWireframe(); ren1.ResetCamera(); ren1.GetActiveCamera().Azimuth((double)30); ren1.GetActiveCamera().Elevation((double)20); ren1.GetActiveCamera().Dolly((double)3.0); ren1.ResetCameraClippingRange(); renWin.SetSize((int)300,(int)150); renWin.Render(); // render the image[] //[] iren.Initialize(); //deleteAllVTKObjects(); }
///<summary> A Set Method for Static Variables </summary> public static void SetquadScalars(vtkFloatArray toSet) { quadScalars = toSet; }
///<summary> A Set Method for Static Variables </summary> public static void SettriScalars(vtkFloatArray toSet) { triScalars = toSet; }
///<summary> A Set Method for Static Variables </summary> public static void SethexScalars(vtkFloatArray toSet) { hexScalars = toSet; }
///<summary> A Set Method for Static Variables </summary> public static void SetpyraScalars(vtkFloatArray toSet) { pyraScalars = toSet; }
/// <summary> /// Load scalar results to Grid Point and Cell Data /// </summary> public void Load_Scalar(Database DB) { int NumbScalar = 24; // Total number of scalar results avaliable int NumbInc = DB.AnalysisLib.GetResultStepNo() + 1; // Total number of Analysis increments (including 0) // Initialize Scalar data CellScalar = new vtkFloatArray[NumbInc, NumbScalar, 3]; PointScalar = new vtkFloatArray[NumbInc, NumbScalar]; // Loop through all Analysis increments for (int inc = 0; inc < NumbInc; inc++) { // Create Scalar Arrays for new increment for (int s = 0; s < NumbScalar; s++) { vtkFloatArray CellMax = vtkFloatArray.New(); vtkFloatArray CellAverage = vtkFloatArray.New(); vtkFloatArray CellMin = vtkFloatArray.New(); vtkFloatArray PointArray = vtkFloatArray.New(); CellMax.SetNumberOfComponents(1); CellAverage.SetNumberOfComponents(1); CellMin.SetNumberOfComponents(1); PointArray.SetNumberOfComponents(1); CellScalar[inc, s, 0] = CellMax; CellScalar[inc, s, 1] = CellAverage; CellScalar[inc, s, 2] = CellMin; PointScalar[inc, s] = PointArray; } // ---------- CELL (ELEMENT) SCALARS ------------------------------------------------ // Set Array Name for (int i = 0; i < 3; i++) { string prefix = ""; if (i == 0) { prefix = "Max"; } if (i == 1) { prefix = "Average"; } if (i == 2) { prefix = "Min"; } CellScalar[inc, 0, i].SetName(prefix + " Displacement X INC " + inc.ToString()); CellScalar[inc, 1, i].SetName(prefix + " Displacement Y INC " + inc.ToString()); CellScalar[inc, 2, i].SetName(prefix + " Displacement Z INC " + inc.ToString()); CellScalar[inc, 3, i].SetName(prefix + " Total Displacement INC " + inc.ToString()); CellScalar[inc, 4, i].SetName(prefix + " Stress XX INC " + inc.ToString()); CellScalar[inc, 5, i].SetName(prefix + " Stress YY INC " + inc.ToString()); CellScalar[inc, 6, i].SetName(prefix + " Stress ZZ INC " + inc.ToString()); CellScalar[inc, 7, i].SetName(prefix + " Stress XY INC " + inc.ToString()); CellScalar[inc, 8, i].SetName(prefix + " Stress YZ INC " + inc.ToString()); CellScalar[inc, 9, i].SetName(prefix + " Stress XZ INC " + inc.ToString()); CellScalar[inc, 10, i].SetName(prefix + " Stress P1 INC " + inc.ToString()); CellScalar[inc, 11, i].SetName(prefix + " Stress P2 INC " + inc.ToString()); CellScalar[inc, 12, i].SetName(prefix + " Stress P3 INC " + inc.ToString()); CellScalar[inc, 13, i].SetName(prefix + " von Mises Stress INC " + inc.ToString()); CellScalar[inc, 14, i].SetName(prefix + " Strain XX INC " + inc.ToString()); CellScalar[inc, 15, i].SetName(prefix + " Strain YY INC " + inc.ToString()); CellScalar[inc, 16, i].SetName(prefix + " Strain ZZ INC " + inc.ToString()); CellScalar[inc, 17, i].SetName(prefix + " Strain XY INC " + inc.ToString()); CellScalar[inc, 18, i].SetName(prefix + " Strain YZ INC " + inc.ToString()); CellScalar[inc, 19, i].SetName(prefix + " Strain XZ INC " + inc.ToString()); CellScalar[inc, 20, i].SetName(prefix + " Strain P1 INC " + inc.ToString()); CellScalar[inc, 21, i].SetName(prefix + " Strain P2 INC " + inc.ToString()); CellScalar[inc, 22, i].SetName(prefix + " Strain P3 INC " + inc.ToString()); CellScalar[inc, 23, i].SetName(prefix + " Effective Strain INC " + inc.ToString()); } // For each Element collect Nodal values, take Min/Average/Max and insert to array Parallel.ForEach(Elements, ID => { // Take element from database int index = Elements.IndexOf(ID); Element E = DB.ElemLib[Elements[index]]; // List of results in Nodes List <double[]> Nval = new List <double[]>(); for (int i = 0; i < NumbScalar; i++) { Nval.Add(new double[E.NList.Count]); } // Assign Nodal values for (int i = 0; i < E.NList.Count; i++) { // Displacement Nval[0][i] = DB.NodeLib[E.NList[i]].GetDisp(inc, 0); Nval[1][i] = DB.NodeLib[E.NList[i]].GetDisp(inc, 1); Nval[2][i] = DB.NodeLib[E.NList[i]].GetDisp(inc, 2); Nval[3][i] = Math.Sqrt(Math.Pow(Nval[0][i], 2) + Math.Pow(Nval[1][i], 2) + Math.Pow(Nval[2][i], 2)); // Stress Matrix <double> S = Matrix <double> .Build.Dense(3, 3); S[0, 0] = E.GetStress(inc, i, 0); S[1, 1] = E.GetStress(inc, i, 1); S[2, 2] = E.GetStress(inc, i, 2); S[0, 1] = E.GetStress(inc, i, 3); S[1, 0] = E.GetStress(inc, i, 3); S[1, 2] = E.GetStress(inc, i, 4); S[2, 1] = E.GetStress(inc, i, 4); S[0, 2] = E.GetStress(inc, i, 5); S[2, 0] = E.GetStress(inc, i, 5); Evd <double> eigen = S.Evd(); double P1 = eigen.EigenValues[2].Real; double P2 = eigen.EigenValues[1].Real; double P3 = eigen.EigenValues[0].Real; Nval[4][i] = S[0, 0]; Nval[5][i] = S[1, 1]; Nval[6][i] = S[2, 2]; Nval[7][i] = S[0, 1]; Nval[8][i] = S[1, 2]; Nval[9][i] = S[0, 2]; Nval[10][i] = P1; Nval[11][i] = P2; Nval[12][i] = P3; Nval[13][i] = Math.Sqrt((Math.Pow(P1 - P2, 2) + Math.Pow(P2 - P3, 2) + Math.Pow(P3 - P1, 2)) / 2); // Strain S = Matrix <double> .Build.Dense(3, 3); S[0, 0] = E.GetStrain(inc, i, 0); S[1, 1] = E.GetStrain(inc, i, 1); S[2, 2] = E.GetStrain(inc, i, 2); S[0, 1] = E.GetStrain(inc, i, 3); S[1, 0] = E.GetStrain(inc, i, 3); S[1, 2] = E.GetStrain(inc, i, 4); S[2, 1] = E.GetStrain(inc, i, 4); S[0, 2] = E.GetStrain(inc, i, 5); S[2, 0] = E.GetStrain(inc, i, 5); eigen = S.Evd(); P1 = eigen.EigenValues[2].Real; P2 = eigen.EigenValues[1].Real; P3 = eigen.EigenValues[0].Real; Nval[14][i] = S[0, 0]; Nval[15][i] = S[1, 1]; Nval[16][i] = S[2, 2]; Nval[17][i] = S[0, 1]; Nval[18][i] = S[1, 2]; Nval[19][i] = S[0, 2]; Nval[20][i] = P1; Nval[21][i] = P2; Nval[22][i] = P3; Nval[23][i] = (2.0 / 3.0) * Math.Sqrt((Math.Pow(P1 - P2, 2) + Math.Pow(P2 - P3, 2) + Math.Pow(P3 - P1, 2)) / 2); } lock (CellScalar) { for (int s = 0; s < NumbScalar; s++) { CellScalar[inc, s, 0].InsertTuple1(index, Nval[s].Max()); CellScalar[inc, s, 1].InsertTuple1(index, Nval[s].Average()); CellScalar[inc, s, 2].InsertTuple1(index, Nval[s].Min()); } } }); // Add arrays to Grid CellData foreach (vtkFloatArray array in CellScalar) { Grid.GetCellData().AddArray(array); } // ---------- POINT (NODE) SCALARS ------------------------------------------------ // Set Array Name PointScalar[inc, 0].SetName("Displacement X INC " + inc.ToString()); PointScalar[inc, 1].SetName("Displacement Y INC " + inc.ToString()); PointScalar[inc, 2].SetName("Displacement Z INC " + inc.ToString()); PointScalar[inc, 3].SetName("Total Displacement INC " + inc.ToString()); PointScalar[inc, 4].SetName("Stress XX INC " + inc.ToString()); PointScalar[inc, 5].SetName("Stress YY INC " + inc.ToString()); PointScalar[inc, 6].SetName("Stress ZZ INC " + inc.ToString()); PointScalar[inc, 7].SetName("Stress XY INC " + inc.ToString()); PointScalar[inc, 8].SetName("Stress YZ INC " + inc.ToString()); PointScalar[inc, 9].SetName("Stress XZ INC " + inc.ToString()); PointScalar[inc, 10].SetName("Stress P1 INC " + inc.ToString()); PointScalar[inc, 11].SetName("Stress P2 INC " + inc.ToString()); PointScalar[inc, 12].SetName("Stress P3 INC " + inc.ToString()); PointScalar[inc, 13].SetName("von Mises Stress INC " + inc.ToString()); PointScalar[inc, 14].SetName("Strain XX INC " + inc.ToString()); PointScalar[inc, 15].SetName("Strain YY INC " + inc.ToString()); PointScalar[inc, 16].SetName("Strain ZZ INC " + inc.ToString()); PointScalar[inc, 17].SetName("Strain XY INC " + inc.ToString()); PointScalar[inc, 18].SetName("Strain YZ INC " + inc.ToString()); PointScalar[inc, 19].SetName("Strain XZ INC " + inc.ToString()); PointScalar[inc, 20].SetName("Strain P1 INC " + inc.ToString()); PointScalar[inc, 21].SetName("Strain P2 INC " + inc.ToString()); PointScalar[inc, 22].SetName("Strain P3 INC " + inc.ToString()); PointScalar[inc, 23].SetName("Effective Strain INC " + inc.ToString()); // For each Node collect Nodal values, take Min/Average/Max and insert to array Parallel.ForEach(Nodes, n => { // Take element from database Node N = DB.NodeLib[n.Key]; // List of results in Nodes List <double[]> Nval = new List <double[]>(); for (int i = 0; i < NumbScalar; i++) { Nval.Add(new double[N.EList.Count()]); } // Assign Nodal values for (int i = 0; i < N.EList.Count; i++) { // Index of this node in i-th Element Node List int NodeIndex = DB.ElemLib[N.EList[i]].NList.IndexOf(N.ID); // Displacement Nval[0][i] = N.GetDisp(inc, 0); Nval[1][i] = N.GetDisp(inc, 1); Nval[2][i] = N.GetDisp(inc, 2); Nval[3][i] = Math.Sqrt(Math.Pow(Nval[0][i], 2) + Math.Pow(Nval[1][i], 2) + Math.Pow(Nval[2][i], 2)); // Stress Matrix <double> S = Matrix <double> .Build.Dense(3, 3); S[0, 0] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 0); S[1, 1] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 1); S[2, 2] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 2); S[0, 1] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 3); S[1, 0] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 3); S[1, 2] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 4); S[2, 1] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 4); S[0, 2] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 5); S[2, 0] = DB.ElemLib[N.EList[i]].GetStress(inc, NodeIndex, 5); Evd <double> eigen = S.Evd(); double P1 = eigen.EigenValues[2].Real; double P2 = eigen.EigenValues[1].Real; double P3 = eigen.EigenValues[0].Real; Nval[4][i] = S[0, 0]; Nval[5][i] = S[1, 1]; Nval[6][i] = S[2, 2]; Nval[7][i] = S[0, 1]; Nval[8][i] = S[1, 2]; Nval[9][i] = S[0, 2]; Nval[10][i] = P1; Nval[11][i] = P2; Nval[12][i] = P3; Nval[13][i] = Math.Sqrt((Math.Pow(P1 - P2, 2) + Math.Pow(P2 - P3, 2) + Math.Pow(P3 - P1, 2)) / 2); // Strain S = Matrix <double> .Build.Dense(3, 3); S[0, 0] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 0); S[1, 1] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 1); S[2, 2] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 2); S[0, 1] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 3); S[1, 0] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 3); S[1, 2] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 4); S[2, 1] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 4); S[0, 2] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 5); S[2, 0] = DB.ElemLib[N.EList[i]].GetStrain(inc, NodeIndex, 5); eigen = S.Evd(); P1 = eigen.EigenValues[2].Real; P2 = eigen.EigenValues[1].Real; P3 = eigen.EigenValues[0].Real; Nval[14][i] = S[0, 0]; Nval[15][i] = S[1, 1]; Nval[16][i] = S[2, 2]; Nval[17][i] = S[0, 1]; Nval[18][i] = S[1, 2]; Nval[19][i] = S[0, 2]; Nval[20][i] = P1; Nval[21][i] = P2; Nval[22][i] = P3; Nval[23][i] = (2.0 / 3.0) * Math.Sqrt((Math.Pow(P1 - P2, 2) + Math.Pow(P2 - P3, 2) + Math.Pow(P3 - P1, 2)) / 2); } lock (PointScalar) { for (int s = 0; s < NumbScalar; s++) { PointScalar[inc, s].InsertTuple1(n.Value, Nval[s].Average()); } } }); // Add arrays to Grid PointData foreach (vtkFloatArray array in PointScalar) { Grid.GetPointData().AddArray(array); } } }
private void renderWindowControl1_Load(object sender, EventArgs e) { // Create components of the rendering subsystem // vtkRenderer ren1 = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer(); vtkRenderWindow renWin = renderWindowControl1.RenderWindow; renWin.SetSize((int)paras.Height, (int)paras.Width); // Add the actors to the renderer, set the window size // vtkPoints points = vtkPoints.New(); vtkCellArray polys = vtkCellArray.New(); vtkFloatArray scalars = vtkFloatArray.New(); vtkLookupTable Luk = vtkLookupTable.New(); if (paras.Using3DTower == 1) { vtkActor actor1 = new vtkActor(); vtkActor2D actor2D = new vtkActor2D(); if (paras.StageID != -1) { if (paras.UsingEdges == 1) { MessageBox.Show("单元显示无法使用"); } else { BasicVTKBuilder(ref actor1, ref points, ref polys, ref scalars, ref Luk, ref actor2D); ren1.AddActor(actor1); ren1.AddActor2D(actor2D); vtkActor2D textActor = new vtkActor2D(); VTKInfoBuilder(ref textActor); ren1.AddActor2D(textActor); } } else { if (paras.UsingEdges == 1) { ExtractEdgesVTKBuilderWithoutRunning(ref actor1, ref points, ref polys, ref scalars, ref Luk); } else { BasicVTKBuilderWithoutRunning(ref actor1, ref points, ref polys, ref scalars, ref Luk); } ren1.AddActor(actor1); } } if (paras.UsingVirtualHeater == 1) { //MessageBox.Show("!"); vtkActor2D actor2 = VirtualHeaterVTKBuilder(); ren1.AddActor(actor2); } renWin.Render(); vtkCamera camera = ren1.GetActiveCamera(); //camera.ParallelProjectionOn(); //camera.Elevation(20); int[] camera_pos = new int[3]; if (paras.globalEnv == 1) { camera_pos[1] = -70; } else { camera_pos[1] = -80; } if (paras.RotateAngle == 0) { camera_pos[1] = -camera_pos[1]; camera_pos[0] = camera_pos[2] = 0; camera.SetRoll(-2); } else if (paras.RotateAngle == 180) { camera_pos[0] = camera_pos[2] = 0; camera.SetRoll(180); } else if (paras.RotateAngle == 90) { double r = (double)Math.Abs(camera_pos[1]); camera_pos[0] = (int)(-r * 0.707); camera_pos[1] = (int)(-r * 0.707); camera_pos[2] = 0; camera.SetRoll(225); } else if (paras.RotateAngle == 270) { double r = (double)Math.Abs(camera_pos[1]); camera_pos[0] = (int)(r * 0.707); camera_pos[1] = (int)(-r * 0.707); camera_pos[2] = 0; camera.SetRoll(135); } camera.SetPosition((double)camera_pos[0], (double)camera_pos[1], (double)camera_pos[2]); //camera.Yaw(10); camera.Elevation(1); camera.ParallelProjectionOn(); camera.Zoom(0.9); StoredViewCamera = new List <vtkCamera>(); for (int i = 0; i < 3; i++) { vtkCamera ViewCamera = new vtkCamera(); if (i == 0) { ViewCamera.SetPosition(camera.GetPosition()[0], camera.GetPosition()[1], camera.GetPosition()[2]); ViewCamera.SetRoll(camera.GetRoll()); } else if (i == 1) { ViewCamera.SetPosition(80, 0, 0); ViewCamera.SetRoll(180); } else if (i == 2) { ViewCamera.SetPosition(0, 0, -80); ViewCamera.SetRoll(camera.GetRoll()); } ViewCamera.SetFocalPoint(camera.GetFocalPoint()[0], camera.GetFocalPoint()[1], camera.GetFocalPoint()[2]); ViewCamera.SetViewUp(camera.GetViewUp()[0], camera.GetViewUp()[1], camera.GetViewUp()[2]); StoredViewCamera.Add(ViewCamera); } //camera.Zoom(1.5); }
// ============================= DATA COMPRESSION =================================== public vtkUnstructuredGrid ExportGrid(Database DB, List <string> Result, int step) { vtkUnstructuredGrid Output = vtkUnstructuredGrid.New(); // Update Node Coordinates UpdateNode(DB, step); // Create Deep Copy of Gird Output.SetPoints(Points); // Recreate Mesh for Output Grid foreach (Element E in DB.ElemLib.Values) { // ============= HEXA ================= if (E.Type.Contains("HEX") && E.PID == ID) { // Create Hexahedron vtkHexahedron Hex = vtkHexahedron.New(); Hex.GetPointIds().SetNumberOfIds(8); // Set Hexa nodes for (int i = 0; i < 8; i++) { Hex.GetPointIds().SetId(i, Nodes[E.NList[i]]); } // Save Element index Output.InsertNextCell(Hex.GetCellType(), Hex.GetPointIds()); } // ============= PENTA ================= if (E.Type.Contains("PENTA") && E.PID == ID) { // Create Wedge vtkWedge Penta = vtkWedge.New(); Penta.GetPointIds().SetNumberOfIds(6); // Set Penta nodes for (int i = 0; i < 6; i++) { Penta.GetPointIds().SetId(i, Nodes[E.NList[i]]); } // Save Element index Output.InsertNextCell(Penta.GetCellType(), Penta.GetPointIds()); } // ============= TETRA ================= if (E.Type.Contains("TET") && E.PID == ID) { // Create Tetra vtkTetra Tetra = vtkTetra.New(); Tetra.GetPointIds().SetNumberOfIds(4); // Set Tetra nodes for (int i = 0; i < 4; i++) { Tetra.GetPointIds().SetId(i, Nodes[E.NList[i]]); } // Save Element index Output.InsertNextCell(Tetra.GetCellType(), Tetra.GetPointIds()); } } foreach (string res in Result) { foreach (vtkFloatArray array in PointScalar) { if (array.GetName() == res + " INC " + step.ToString()) { vtkFloatArray ArrayCopy = vtkFloatArray.New(); ArrayCopy.DeepCopy(array); ArrayCopy.SetName(res); Output.GetPointData().AddArray(ArrayCopy); } } } Output.Update(); return(Output); }
//private void InitializeVTK() //{ // Kitware.VTK.RenderWindowControl vtkControl = new Kitware.VTK.RenderWindowControl(); // vtkControl.AddTestActors = false; // vtkControl.Location = new System.Drawing.Point(10, 10); // vtkControl.Name = "_renwin"; // vtkControl.Size = new System.Drawing.Size(100, 100); // vtkControl.TabIndex = 0; // vtkControl.TestText = null; // vtkControl.Dock = System.Windows.Forms.DockStyle.Fill; // vtkformhost.Child = vtkControl; // vtkformhost.Visibility = System.Windows.Visibility.Visible; // vtkSphereSource sphere = vtkSphereSource.New(); // sphere.SetThetaResolution(8); // sphere.SetPhiResolution(16); // vtkShrinkPolyData shrink = vtkShrinkPolyData.New(); // shrink.SetInputConnection(sphere.GetOutputPort()); // shrink.SetShrinkFactor(0.9); // vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); // mapper.SetInputConnection(shrink.GetOutputPort()); // // The actor links the data pipeline to the rendering subsystem // vtkActor actor = vtkActor.New(); // actor.SetMapper(mapper); // actor.GetProperty().SetColor(1, 0, 0); // // Create components of the rendering subsystem // // // Kitware.VTK.vtkRendererCollection rs = vtkControl.RenderWindow.GetRenderers(); // vtkRenderer ren1 = vtkControl.RenderWindow.GetRenderers().GetFirstRenderer(); // vtkRenderWindow renWin = vtkControl.RenderWindow; // // Add the actors to the renderer, set the window size // // // ren1.AddViewProp(actor); // renWin.SetSize(500, 500); // renWin.Render(); // vtkCamera camera = ren1.GetActiveCamera(); // camera.Zoom(1.5); //} private void InitializeVTK() { Kitware.VTK.RenderWindowControl rw = new Kitware.VTK.RenderWindowControl(); rw.AddTestActors = false; rw.Dock = System.Windows.Forms.DockStyle.Fill; vtkformhost.Child = rw; vtkformhost.Visibility = System.Windows.Visibility.Visible; Kitware.VTK.vtkRendererCollection rs = rw.RenderWindow.GetRenderers(); int rsc = rs.GetNumberOfItems(); Console.WriteLine(rsc + " renderers"); Kitware.VTK.vtkRenderer r = rs.GetFirstRenderer(); r.SetBackground(0.1, 0.3, 0.7); r.SetBackground2(0.7, 0.8, 1.0); r.SetGradientBackground(true); int i, j, k, kOffset, jOffset, offset; float s, sp, x, y, z; //创建结构化点数据集,(创建点和单元) vtkStructuredPoints vol = new vtkStructuredPoints(); vol.SetDimensions(26, 26, 26); //x,y,z三个坐标轴方向上各有26个点 vol.SetOrigin(-0.5, -0.5, -0.5); //设置数据集在坐标空间内的起点 sp = (float)(1.0 / 25.0); vol.SetSpacing(sp, sp, sp); //设置坐标轴上每个点的间距 //创建标量数据(作为结构化点数据集的属性数据) vtkFloatArray scalars = new vtkFloatArray(); scalars.SetNumberOfTuples(26 * 26 * 26);//设置标量个数,因为是点属性所以和点的个数相同 for (k = 0; k < 26; k++) { z = (float)(-0.5 + k * sp); kOffset = k * 26 * 26; for (j = 0; j < 26; j++) { y = (float)(-0.5 + j * sp); jOffset = j * 26; for (i = 0; i < 26; i++) { x = (float)(-0.5 + i * sp); s = (float)(x * x + y * y + z * z - (0.4 * 0.4)); //计算标量值,该方程为球体方程,位于球体上的点标量值为0 offset = i + jOffset + kOffset; //计算id scalars.InsertTuple1(offset, s); //插入标量值 } } } vol.GetPointData().SetScalars(scalars); //将标量值与点关联 //抽取标量值为0的点所形成的面 vtkContourFilter contour = new vtkContourFilter(); contour.SetInput(vol); contour.SetValue(0, 0); vtkPolyDataMapper volmapper = new vtkPainterPolyDataMapper(); volmapper.SetInput(contour.GetOutput()); vtkActor actor = new vtkActor(); actor.GetProperty().SetRepresentationToWireframe(); // actor.GetProperty().SetRepresentationToSurface(); // actor.GetProperty().SetRepresentationToPoints(); actor.GetProperty().SetColor(0, 0, 0); actor.SetMapper(volmapper); vtkRenderWindow _renwin = rw.RenderWindow; vtkRenderer _render = _renwin.GetRenderers().GetFirstRenderer(); _render.AddActor(actor); _renwin.Render(); _render.ResetCamera(); }
private void WeightedTransformFilter() { // Use a sphere as a basis of the shape vtkSphereSource sphere = vtkSphereSource.New(); sphere.SetPhiResolution(40); sphere.SetThetaResolution(40); sphere.Update(); vtkPolyData sphereData = sphere.GetOutput(); // Create a data array to hold the weighting coefficients vtkFloatArray tfarray = vtkFloatArray.New(); int npoints = sphereData.GetNumberOfPoints(); tfarray.SetNumberOfComponents(2); tfarray.SetNumberOfTuples(npoints); // Parameterize the sphere along the z axis, and fill the weights // with (1.0-a, a) to linearly interpolate across the shape IntPtr pPoint = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(double)) * 3); double[] point = new double[3]; for (int i = 0; i < npoints; i++) { sphereData.GetPoint(i, pPoint); Marshal.Copy(pPoint, point, 0, 3); double x = point[0]; double y = point[1]; double z = point[2]; double zn = z + 0.5; double zn1 = 1.0 - zn; if (zn > 1.0) { zn = 1.0; } if (zn1 < 0.0) { zn1 = 0.0; } tfarray.SetComponent(i, 0, zn1); tfarray.SetComponent(i, 1, zn); } Marshal.FreeHGlobal(pPoint); // Create field data to hold the array, and bind it to the sphere vtkFieldData fd = vtkFieldData.New(); tfarray.SetName("weights"); sphereData.GetPointData().AddArray(tfarray); // Use an ordinary transform to stretch the shape vtkTransform stretch = vtkTransform.New(); stretch.Scale(1, 1, 3.2); vtkTransformFilter stretchFilter = vtkTransformFilter.New(); stretchFilter.SetInputConnection(sphereData.GetProducerPort()); stretchFilter.SetTransform(stretch); // Now, for the weighted transform stuff vtkWeightedTransformFilter weightedTrans = vtkWeightedTransformFilter.New(); // Create two transforms to interpolate between vtkTransform identity = vtkTransform.New(); identity.Identity(); vtkTransform rotated = vtkTransform.New(); double rotatedAngle = 45; rotated.RotateX(rotatedAngle); weightedTrans.SetNumberOfTransforms(2); weightedTrans.SetTransform(identity, 0); weightedTrans.SetTransform(rotated, 1); // which data array should the filter use ? weightedTrans.SetWeightArray("weights"); weightedTrans.SetInputConnection(stretchFilter.GetOutputPort()); vtkPolyDataMapper weightedTransMapper = vtkPolyDataMapper.New(); weightedTransMapper.SetInputConnection(weightedTrans.GetOutputPort()); vtkActor weightedTransActor = vtkActor.New(); weightedTransActor.SetMapper(weightedTransMapper); weightedTransActor.GetProperty().SetDiffuseColor(0.8, 0.8, 0.1); weightedTransActor.GetProperty().SetRepresentationToSurface(); // 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.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(weightedTransActor); renderer.ResetCamera(); renderer.GetActiveCamera().Azimuth(90); renderer.GetActiveCamera().Dolly(1); }
private void BandedPolyDataContourFilter() { vtkPoints pts = vtkPoints.New(); pts.InsertPoint(0, 0, 0, 0); pts.InsertPoint(1, 0, 1, 0); pts.InsertPoint(2, 0, 2, 0); pts.InsertPoint(3, 1, 0, 0); pts.InsertPoint(4, 1, 1, 0); pts.InsertPoint(5, 1, 2, 0); pts.InsertPoint(6, 2, 0, 0); pts.InsertPoint(7, 2, 2, 0); pts.InsertPoint(8, 3, 0, 0); pts.InsertPoint(9, 3, 1, 0); pts.InsertPoint(10, 3, 2, 0); pts.InsertPoint(11, 4, 0, 0); pts.InsertPoint(12, 6, 0, 0); pts.InsertPoint(13, 5, 2, 0); pts.InsertPoint(14, 7, 0, 0); pts.InsertPoint(15, 9, 0, 0); pts.InsertPoint(16, 7, 2, 0); pts.InsertPoint(17, 9, 2, 0); pts.InsertPoint(18, 10, 0, 0); pts.InsertPoint(19, 12, 0, 0); pts.InsertPoint(20, 10, 1, 0); pts.InsertPoint(21, 12, 1, 0); pts.InsertPoint(22, 10, 2, 0); pts.InsertPoint(23, 12, 2, 0); pts.InsertPoint(24, 10, 3, 0); pts.InsertPoint(25, 12, 3, 0); vtkCellArray polys = vtkCellArray.New(); polys.InsertNextCell(4); polys.InsertCellPoint(14); polys.InsertCellPoint(15); polys.InsertCellPoint(17); polys.InsertCellPoint(16); polys.InsertNextCell(3); polys.InsertCellPoint(11); polys.InsertCellPoint(12); polys.InsertCellPoint(13); vtkFloatArray scalars = vtkFloatArray.New(); scalars.SetNumberOfTuples(26); scalars.SetTuple1(0, 0); scalars.SetTuple1(1, 50); scalars.SetTuple1(2, 100); scalars.SetTuple1(3, 0); scalars.SetTuple1(4, 50); scalars.SetTuple1(5, 100); scalars.SetTuple1(6, 10); scalars.SetTuple1(7, 90); scalars.SetTuple1(8, 10); scalars.SetTuple1(9, 50); scalars.SetTuple1(10, 90); scalars.SetTuple1(11, 10); scalars.SetTuple1(12, 40); scalars.SetTuple1(13, 100); scalars.SetTuple1(14, 0); scalars.SetTuple1(15, 60); scalars.SetTuple1(16, 40); scalars.SetTuple1(17, 100); scalars.SetTuple1(18, 0); scalars.SetTuple1(19, 25); scalars.SetTuple1(20, 25); scalars.SetTuple1(21, 50); scalars.SetTuple1(22, 50); scalars.SetTuple1(23, 75); scalars.SetTuple1(24, 75); scalars.SetTuple1(25, 100); vtkPolyData polyData = vtkPolyData.New(); polyData.SetPoints(pts); polyData.SetPolys(polys); polyData.GetPointData().SetScalars(scalars); vtkBandedPolyDataContourFilter bf = vtkBandedPolyDataContourFilter.New(); #if VTK_MAJOR_VERSION_5 bf.SetInput(polyData); #else bf.SetInputData(polyData); #endif bf.GenerateValues(3, 25, 75); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); mapper.SetInputConnection(bf.GetOutputPort()); mapper.SetScalarModeToUseCellData(); mapper.SetScalarRange(0, 4); 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(.2, .3, .4); // add our actor to the renderer renderer.AddActor(actor); }
//Parameters for building a model private void BasicVTKBuilder(ref vtkActor actor, ref vtkPoints points, ref vtkCellArray polys, ref vtkFloatArray scalars, ref vtkLookupTable Luk, ref vtkActor2D actor2D) { int pointsNum = 0; TowerModelInstance.VTKDrawModel(ref points, ref polys, ref scalars, ref pointsNum, paras); vtkPolyData profile = vtkPolyData.New(); profile.SetPoints(points); profile.SetPolys(polys); vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); if (paras.RotateAngle == 0) { profile.GetCellData().SetScalars(scalars); mapper.SetInput(profile); } else { vtkRotationalExtrusionFilter refilter = vtkRotationalExtrusionFilter.New(); profile.Update(); profile.GetCellData().SetScalars(scalars); //profile.GetPointData().SetScalars(scalars); refilter.SetInput(profile); refilter.SetResolution(50); refilter.SetAngle(paras.RotateAngle); refilter.SetTranslation(0); refilter.SetDeltaRadius(0); mapper.SetInputConnection(refilter.GetOutputPort()); } mapper.SetScalarRange(TowerModelInstance.GetColorGenColorTableMinvalue(), TowerModelInstance.GetColorGenColorTableMaxValue()); actor.SetMapper(mapper); // This text property is for scalarBar vtkTextProperty textProperty = vtkTextProperty.New(); //textProperty.SetFontFamilyToCourier(); //textProperty.SetColor(1.0, 1.0, 0.5); textProperty.SetFontSize(10); vtkScalarBarActor scalarBar = vtkScalarBarActor.New(); scalarBar.SetLookupTable(mapper.GetLookupTable()); scalarBar.SetTitle("Color Table"); scalarBar.SetNumberOfLabels(TowerModelInstance.GetColorGenColorTableSize()); scalarBar.SetTitleTextProperty(textProperty); scalarBar.SetLabelTextProperty(textProperty); scalarBar.SetWidth(0.07); scalarBar.SetHeight(0.6); //scalarBar.SetDrawFrame(1); vtkLookupTable hueLut = vtkLookupTable.New(); hueLut.SetTableRange(TowerModelInstance.GetColorGenColorTableMinvalue(), TowerModelInstance.GetColorGenColorTableMaxValue()); hueLut.SetHueRange(0.667, 0); hueLut.SetSaturationRange(1, 1); hueLut.SetValueRange(1, 1); hueLut.SetNumberOfTableValues(TowerModelInstance.GetColorGenColorTableSize()); hueLut.Build(); mapper.SetLookupTable(hueLut); scalarBar.SetLookupTable(hueLut); // The actor links the data pipeline to the rendering subsystem actor2D = scalarBar; //actor.GetProperty().SetColor(0.388, 0.388, 0.388); }
///<summary> A Set Method for Static Variables </summary> public static void SettriangleTCoords(vtkFloatArray toSet) { triangleTCoords = toSet; }
private void Window_Activated(object sender, EventArgs e) { vtkPolyData cube = new vtkPolyData(); vtkPoints points = new vtkPoints(); vtkCellArray polys = new vtkCellArray(); vtkFloatArray scalars = new vtkFloatArray(); Kitware.VTK.RenderWindowControl vtkControl = new Kitware.VTK.RenderWindowControl(); vtkControl.AddTestActors = false; vtkControl.Location = new System.Drawing.Point(10, 10); vtkControl.Name = "_renwin"; vtkControl.Size = new System.Drawing.Size(100, 100); vtkControl.TabIndex = 0; vtkControl.TestText = null; vtkControl.Dock = System.Windows.Forms.DockStyle.Fill; vtkformhost.Child = vtkControl; vtkformhost.Visibility = System.Windows.Visibility.Visible; int i; float[][] x = new float[8][] { new float[] { 0, 0, 0 }, //第0个点的坐标 new float[] { 1, 0, 0 }, //第1个点的坐标 new float[] { 1, 1, 0 }, //第2个点的坐标 new float[] { 0, 1, 0 }, //3 new float[] { 0, 0, 1 }, //4 new float[] { 1, 0, 1 }, //5 new float[] { 1, 1, 1 }, //6 new float[] { 0, 1, 1 } //7 }; for (i = 0; i < 8; i++) { points.InsertPoint(i, x[i][0], x[i][1], x[i][2]); //加载点,创建数据结构的几何 } List <int[]> temp = new List <int[]>(); int[] temparray0 = new int[4] { 0, 1, 2, 3 }; //第0,1,2,3个点连接在一起,成为一个单元 int[] temparray1 = new int[4] { 4, 5, 6, 7 }; //第4,5,6,7个点连接在一起,成为一个单元 int[] temparray2 = new int[4] { 0, 1, 5, 4 }; int[] temparray3 = new int[4] { 1, 2, 6, 5 }; int[] temparray4 = new int[4] { 2, 3, 7, 6 }; int[] temparray5 = new int[4] { 3, 0, 4, 7 }; temp.Add(temparray0); temp.Add(temparray1); temp.Add(temparray2); temp.Add(temparray3); temp.Add(temparray4); temp.Add(temparray5); //因为在activiz中没有vtkIdType这个类,所以用了其他的方法代替C++代码中的实现。 for (int j = 0; j < temp.Count; j++) { IntPtr pP = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(int)) * 4); Marshal.Copy(temp[j], 0, pP, 4); polys.InsertNextCell(4, pP);//加载单元,定义数据集的拓扑 Marshal.FreeHGlobal(pP); } for (i = 0; i < 8; i++) { scalars.InsertTuple1(i, i); //为每一个点设置点属性。 } cube.SetPoints(points); cube.SetPolys(polys); cube.GetPointData().SetScalars(scalars); vtkPolyDataMapper cubemapper = new vtkPainterPolyDataMapper(); cubemapper.SetInput(cube); cubemapper.SetScalarRange(0, 7); vtkActor cubeactor = new vtkActor(); cubeactor.SetMapper(cubemapper); // Create components of the rendering subsystem // vtkRenderWindow _renwin = vtkControl.RenderWindow; vtkRenderer ren1 = _renwin.GetRenderers().GetFirstRenderer(); // Add the actors to the renderer, set the window size // ren1.AddViewProp(cubeactor); _renwin.SetSize(250, 250); _renwin.Render(); ren1.ResetCamera(); }
private void ElevationFilter() { // Created a grid of points (heigh/terrian map) vtkPoints points = vtkPoints.New(); uint GridSize = 10; for (uint x = 0; x < GridSize; x++) { for (uint y = 0; y < GridSize; y++) { points.InsertNextPoint(x, y, (x + y) / (y + 1)); } } double[] bounds = points.GetBounds(); // Add the grid points to a polydata object vtkPolyData inputPolyData = vtkPolyData.New(); inputPolyData.SetPoints(points); // Triangulate the grid points vtkDelaunay2D delaunay = vtkDelaunay2D.New(); #if VTK_MAJOR_VERSION_5 delaunay.SetInput(inputPolyData); #else delaunay.SetInputData(inputPolyData); #endif delaunay.Update(); vtkElevationFilter elevationFilter = vtkElevationFilter.New(); elevationFilter.SetInputConnection(delaunay.GetOutputPort()); elevationFilter.SetLowPoint(0.0, 0.0, bounds[4]); elevationFilter.SetHighPoint(0.0, 0.0, bounds[5]); elevationFilter.Update(); vtkPolyData output = vtkPolyData.New(); output.ShallowCopy(vtkPolyData.SafeDownCast(elevationFilter.GetOutput())); vtkFloatArray elevation = vtkFloatArray.SafeDownCast(output.GetPointData().GetArray("Elevation")); // Create the color map vtkLookupTable colorLookupTable = vtkLookupTable.New(); colorLookupTable.SetTableRange(bounds[4], bounds[5]); colorLookupTable.Build(); // Generate the colors for each point based on the color map vtkUnsignedCharArray colors = vtkUnsignedCharArray.New(); colors.SetNumberOfComponents(3); colors.SetName("Colors"); for (int i = 0; i < output.GetNumberOfPoints(); i++) { double val = elevation.GetValue(i); Debug.WriteLine("val: " + val); double[] dcolor = colorLookupTable.GetColor(val); //Debug.WriteLine("dcolor: " // + dcolor[0] + " " // + dcolor[1] + " " // + dcolor[2]); byte[] color = new byte[3]; for (int j = 0; j < 3; j++) { color[j] = (byte)(255 * dcolor[j]); } //Debug.WriteLine("color: " // + color[0] + " " // + color[1] + " " // + color[2]); colors.InsertNextTuple3(color[0], color[1], color[2]); } output.GetPointData().AddArray(colors); // Visualize vtkPolyDataMapper mapper = vtkPolyDataMapper.New(); #if VTK_MAJOR_VERSION_5 mapper.SetInputConnection(output.GetProducerPort()); #else mapper.SetInputData(output); #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(0.2, 0.3, 0.4); // add our actor to the renderer renderer.AddActor(actor); }
private void FilledContours(string filePath, int numberOfContours) { // Read the file vtkXMLPolyDataReader reader = vtkXMLPolyDataReader.New(); reader.SetFileName(filePath); reader.Update(); // Update so that we can get the scalar range double[] scalarRange = reader.GetOutput().GetPointData().GetScalars().GetRange(); vtkAppendPolyData appendFilledContours = vtkAppendPolyData.New(); double delta = (scalarRange[1] - scalarRange[0]) / (numberOfContours - 1); // Keep the clippers alive List <vtkClipPolyData> clippersLo = new List <vtkClipPolyData>(); List <vtkClipPolyData> clippersHi = new List <vtkClipPolyData>(); for (int i = 0; i < numberOfContours; i++) { double valueLo = scalarRange[0] + i * delta; double valueHi = scalarRange[0] + (i + 1) * delta; clippersLo.Add(vtkClipPolyData.New()); clippersLo[i].SetValue(valueLo); if (i == 0) { clippersLo[i].SetInputConnection(reader.GetOutputPort()); } else { clippersLo[i].SetInputConnection(clippersHi[i - 1].GetOutputPort(1)); } clippersLo[i].InsideOutOff(); clippersLo[i].Update(); clippersHi.Add(vtkClipPolyData.New()); clippersHi[i].SetValue(valueHi); clippersHi[i].SetInputConnection(clippersLo[i].GetOutputPort()); clippersHi[i].GenerateClippedOutputOn(); clippersHi[i].InsideOutOn(); clippersHi[i].Update(); if (clippersHi[i].GetOutput().GetNumberOfCells() == 0) { continue; } vtkFloatArray cd = vtkFloatArray.New(); cd.SetNumberOfComponents(1); cd.SetNumberOfTuples(clippersHi[i].GetOutput().GetNumberOfCells()); cd.FillComponent(0, valueLo); clippersHi[i].GetOutput().GetCellData().SetScalars(cd); appendFilledContours.AddInputConnection(clippersHi[i].GetOutputPort()); } vtkCleanPolyData filledContours = vtkCleanPolyData.New(); filledContours.SetInputConnection(appendFilledContours.GetOutputPort()); vtkLookupTable lut = vtkLookupTable.New(); lut.SetNumberOfTableValues(numberOfContours + 1); lut.Build(); vtkPolyDataMapper contourMapper = vtkPolyDataMapper.New(); contourMapper.SetInputConnection(filledContours.GetOutputPort()); contourMapper.SetScalarRange(scalarRange[0], scalarRange[1]); contourMapper.SetScalarModeToUseCellData(); contourMapper.SetLookupTable(lut); vtkActor contourActor = vtkActor.New(); contourActor.SetMapper(contourMapper); contourActor.GetProperty().SetInterpolationToFlat(); vtkContourFilter contours = vtkContourFilter.New(); contours.SetInputConnection(filledContours.GetOutputPort()); contours.GenerateValues(numberOfContours, scalarRange[0], scalarRange[1]); vtkPolyDataMapper contourLineMapperer = vtkPolyDataMapper.New(); contourLineMapperer.SetInputConnection(contours.GetOutputPort()); contourLineMapperer.SetScalarRange(scalarRange[0], scalarRange[1]); contourLineMapperer.ScalarVisibilityOff(); vtkActor contourLineActor = vtkActor.New(); contourLineActor.SetMapper(contourLineMapperer); contourLineActor.GetProperty().SetLineWidth(2); // get a reference to the renderwindow of our renderWindowControl1 vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow; // renderer vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer(); // set background color renderer.SetBackground(.2, .3, .4); // add our actor to the renderer renderer.AddActor(contourActor); renderer.AddActor(contourLineActor); }
/// <summary> /// The main entry method called by the CSharp driver /// </summary> /// <param name="argv"></param> public static void AVLineIntersectQuadraticCells(String [] argv) { //Prefix Content is: "" // Contour every quadratic cell type[] // Create a scene with one of each cell type.[] // QuadraticEdge[] edgePoints = new vtkPoints(); edgePoints.SetNumberOfPoints((int)3); edgePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); edgePoints.InsertPoint((int)1,(double)1.0,(double)0,(double)0); edgePoints.InsertPoint((int)2,(double)0.5,(double)0.25,(double)0); edgeScalars = new vtkFloatArray(); edgeScalars.SetNumberOfTuples((int)3); edgeScalars.InsertValue((int)0,(float)0.0); edgeScalars.InsertValue((int)1,(float)0.0); edgeScalars.InsertValue((int)2,(float)0.9); aEdge = new vtkQuadraticEdge(); aEdge.GetPointIds().SetId((int)0,(int)0); aEdge.GetPointIds().SetId((int)1,(int)1); aEdge.GetPointIds().SetId((int)2,(int)2); aEdgeGrid = new vtkUnstructuredGrid(); aEdgeGrid.Allocate((int)1,(int)1); aEdgeGrid.InsertNextCell((int)aEdge.GetCellType(),(vtkIdList)aEdge.GetPointIds()); aEdgeGrid.SetPoints((vtkPoints)edgePoints); aEdgeGrid.GetPointData().SetScalars((vtkDataArray)edgeScalars); aEdgeMapper = new vtkDataSetMapper(); aEdgeMapper.SetInputData((vtkDataSet)aEdgeGrid); aEdgeMapper.ScalarVisibilityOff(); aEdgeActor = new vtkActor(); aEdgeActor.SetMapper((vtkMapper)aEdgeMapper); aEdgeActor.GetProperty().SetRepresentationToWireframe(); aEdgeActor.GetProperty().SetAmbient((double)1.0); // Quadratic triangle[] triPoints = new vtkPoints(); triPoints.SetNumberOfPoints((int)6); triPoints.InsertPoint((int)0,(double)0.0,(double)0.0,(double)0.0); triPoints.InsertPoint((int)1,(double)1.0,(double)0.0,(double)0.0); triPoints.InsertPoint((int)2,(double)0.5,(double)0.8,(double)0.0); triPoints.InsertPoint((int)3,(double)0.5,(double)0.0,(double)0.0); triPoints.InsertPoint((int)4,(double)0.75,(double)0.4,(double)0.0); triPoints.InsertPoint((int)5,(double)0.25,(double)0.4,(double)0.0); triScalars = new vtkFloatArray(); triScalars.SetNumberOfTuples((int)6); triScalars.InsertValue((int)0,(float)0.0); triScalars.InsertValue((int)1,(float)0.0); triScalars.InsertValue((int)2,(float)0.0); triScalars.InsertValue((int)3,(float)1.0); triScalars.InsertValue((int)4,(float)0.0); triScalars.InsertValue((int)5,(float)0.0); aTri = new vtkQuadraticTriangle(); aTri.GetPointIds().SetId((int)0,(int)0); aTri.GetPointIds().SetId((int)1,(int)1); aTri.GetPointIds().SetId((int)2,(int)2); aTri.GetPointIds().SetId((int)3,(int)3); aTri.GetPointIds().SetId((int)4,(int)4); aTri.GetPointIds().SetId((int)5,(int)5); aTriGrid = new vtkUnstructuredGrid(); aTriGrid.Allocate((int)1,(int)1); aTriGrid.InsertNextCell((int)aTri.GetCellType(),(vtkIdList)aTri.GetPointIds()); aTriGrid.SetPoints((vtkPoints)triPoints); aTriGrid.GetPointData().SetScalars((vtkDataArray)triScalars); aTriMapper = new vtkDataSetMapper(); aTriMapper.SetInputData((vtkDataSet)aTriGrid); aTriMapper.ScalarVisibilityOff(); aTriActor = new vtkActor(); aTriActor.SetMapper((vtkMapper)aTriMapper); aTriActor.GetProperty().SetRepresentationToWireframe(); aTriActor.GetProperty().SetAmbient((double)1.0); // Quadratic quadrilateral[] quadPoints = new vtkPoints(); quadPoints.SetNumberOfPoints((int)8); quadPoints.InsertPoint((int)0,(double)0.0,(double)0.0,(double)0.0); quadPoints.InsertPoint((int)1,(double)1.0,(double)0.0,(double)0.0); quadPoints.InsertPoint((int)2,(double)1.0,(double)1.0,(double)0.0); quadPoints.InsertPoint((int)3,(double)0.0,(double)1.0,(double)0.0); quadPoints.InsertPoint((int)4,(double)0.5,(double)0.0,(double)0.0); quadPoints.InsertPoint((int)5,(double)1.0,(double)0.5,(double)0.0); quadPoints.InsertPoint((int)6,(double)0.5,(double)1.0,(double)0.0); quadPoints.InsertPoint((int)7,(double)0.0,(double)0.5,(double)0.0); quadScalars = new vtkFloatArray(); quadScalars.SetNumberOfTuples((int)8); quadScalars.InsertValue((int)0,(float)0.0); quadScalars.InsertValue((int)1,(float)0.0); quadScalars.InsertValue((int)2,(float)1.0); quadScalars.InsertValue((int)3,(float)1.0); quadScalars.InsertValue((int)4,(float)1.0); quadScalars.InsertValue((int)5,(float)0.0); quadScalars.InsertValue((int)6,(float)0.0); quadScalars.InsertValue((int)7,(float)0.0); aQuad = new vtkQuadraticQuad(); aQuad.GetPointIds().SetId((int)0,(int)0); aQuad.GetPointIds().SetId((int)1,(int)1); aQuad.GetPointIds().SetId((int)2,(int)2); aQuad.GetPointIds().SetId((int)3,(int)3); aQuad.GetPointIds().SetId((int)4,(int)4); aQuad.GetPointIds().SetId((int)5,(int)5); aQuad.GetPointIds().SetId((int)6,(int)6); aQuad.GetPointIds().SetId((int)7,(int)7); aQuadGrid = new vtkUnstructuredGrid(); aQuadGrid.Allocate((int)1,(int)1); aQuadGrid.InsertNextCell((int)aQuad.GetCellType(),(vtkIdList)aQuad.GetPointIds()); aQuadGrid.SetPoints((vtkPoints)quadPoints); aQuadGrid.GetPointData().SetScalars((vtkDataArray)quadScalars); aQuadMapper = new vtkDataSetMapper(); aQuadMapper.SetInputData((vtkDataSet)aQuadGrid); aQuadMapper.ScalarVisibilityOff(); aQuadActor = new vtkActor(); aQuadActor.SetMapper((vtkMapper)aQuadMapper); aQuadActor.GetProperty().SetRepresentationToWireframe(); aQuadActor.GetProperty().SetAmbient((double)1.0); // Quadratic tetrahedron[] tetPoints = new vtkPoints(); tetPoints.SetNumberOfPoints((int)10); tetPoints.InsertPoint((int)0,(double)0.0,(double)0.0,(double)0.0); tetPoints.InsertPoint((int)1,(double)1.0,(double)0.0,(double)0.0); tetPoints.InsertPoint((int)2,(double)0.5,(double)0.8,(double)0.0); tetPoints.InsertPoint((int)3,(double)0.5,(double)0.4,(double)1.0); tetPoints.InsertPoint((int)4,(double)0.5,(double)0.0,(double)0.0); tetPoints.InsertPoint((int)5,(double)0.75,(double)0.4,(double)0.0); tetPoints.InsertPoint((int)6,(double)0.25,(double)0.4,(double)0.0); tetPoints.InsertPoint((int)7,(double)0.25,(double)0.2,(double)0.5); tetPoints.InsertPoint((int)8,(double)0.75,(double)0.2,(double)0.5); tetPoints.InsertPoint((int)9,(double)0.50,(double)0.6,(double)0.5); tetScalars = new vtkFloatArray(); tetScalars.SetNumberOfTuples((int)10); tetScalars.InsertValue((int)0,(float)1.0); tetScalars.InsertValue((int)1,(float)1.0); tetScalars.InsertValue((int)2,(float)1.0); tetScalars.InsertValue((int)3,(float)1.0); tetScalars.InsertValue((int)4,(float)0.0); tetScalars.InsertValue((int)5,(float)0.0); tetScalars.InsertValue((int)6,(float)0.0); tetScalars.InsertValue((int)7,(float)0.0); tetScalars.InsertValue((int)8,(float)0.0); tetScalars.InsertValue((int)9,(float)0.0); aTet = new vtkQuadraticTetra(); aTet.GetPointIds().SetId((int)0,(int)0); aTet.GetPointIds().SetId((int)1,(int)1); aTet.GetPointIds().SetId((int)2,(int)2); aTet.GetPointIds().SetId((int)3,(int)3); aTet.GetPointIds().SetId((int)4,(int)4); aTet.GetPointIds().SetId((int)5,(int)5); aTet.GetPointIds().SetId((int)6,(int)6); aTet.GetPointIds().SetId((int)7,(int)7); aTet.GetPointIds().SetId((int)8,(int)8); aTet.GetPointIds().SetId((int)9,(int)9); aTetGrid = new vtkUnstructuredGrid(); aTetGrid.Allocate((int)1,(int)1); aTetGrid.InsertNextCell((int)aTet.GetCellType(),(vtkIdList)aTet.GetPointIds()); aTetGrid.SetPoints((vtkPoints)tetPoints); aTetGrid.GetPointData().SetScalars((vtkDataArray)tetScalars); aTetMapper = new vtkDataSetMapper(); aTetMapper.SetInputData((vtkDataSet)aTetGrid); aTetMapper.ScalarVisibilityOff(); aTetActor = new vtkActor(); aTetActor.SetMapper((vtkMapper)aTetMapper); aTetActor.GetProperty().SetRepresentationToWireframe(); aTetActor.GetProperty().SetAmbient((double)1.0); // Quadratic hexahedron[] hexPoints = new vtkPoints(); hexPoints.SetNumberOfPoints((int)20); hexPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); hexPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); hexPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); hexPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); hexPoints.InsertPoint((int)4,(double)0,(double)0,(double)1); hexPoints.InsertPoint((int)5,(double)1,(double)0,(double)1); hexPoints.InsertPoint((int)6,(double)1,(double)1,(double)1); hexPoints.InsertPoint((int)7,(double)0,(double)1,(double)1); hexPoints.InsertPoint((int)8,(double)0.5,(double)0,(double)0); hexPoints.InsertPoint((int)9,(double)1,(double)0.5,(double)0); hexPoints.InsertPoint((int)10,(double)0.5,(double)1,(double)0); hexPoints.InsertPoint((int)11,(double)0,(double)0.5,(double)0); hexPoints.InsertPoint((int)12,(double)0.5,(double)0,(double)1); hexPoints.InsertPoint((int)13,(double)1,(double)0.5,(double)1); hexPoints.InsertPoint((int)14,(double)0.5,(double)1,(double)1); hexPoints.InsertPoint((int)15,(double)0,(double)0.5,(double)1); hexPoints.InsertPoint((int)16,(double)0,(double)0,(double)0.5); hexPoints.InsertPoint((int)17,(double)1,(double)0,(double)0.5); hexPoints.InsertPoint((int)18,(double)1,(double)1,(double)0.5); hexPoints.InsertPoint((int)19,(double)0,(double)1,(double)0.5); hexScalars = new vtkFloatArray(); hexScalars.SetNumberOfTuples((int)20); hexScalars.InsertValue((int)0,(float)1.0); hexScalars.InsertValue((int)1,(float)1.0); hexScalars.InsertValue((int)2,(float)1.0); hexScalars.InsertValue((int)3,(float)1.0); hexScalars.InsertValue((int)4,(float)1.0); hexScalars.InsertValue((int)5,(float)1.0); hexScalars.InsertValue((int)6,(float)1.0); hexScalars.InsertValue((int)7,(float)1.0); hexScalars.InsertValue((int)8,(float)0.0); hexScalars.InsertValue((int)9,(float)0.0); hexScalars.InsertValue((int)10,(float)0.0); hexScalars.InsertValue((int)11,(float)0.0); hexScalars.InsertValue((int)12,(float)0.0); hexScalars.InsertValue((int)13,(float)0.0); hexScalars.InsertValue((int)14,(float)0.0); hexScalars.InsertValue((int)15,(float)0.0); hexScalars.InsertValue((int)16,(float)0.0); hexScalars.InsertValue((int)17,(float)0.0); hexScalars.InsertValue((int)18,(float)0.0); hexScalars.InsertValue((int)19,(float)0.0); aHex = new vtkQuadraticHexahedron(); aHex.GetPointIds().SetId((int)0,(int)0); aHex.GetPointIds().SetId((int)1,(int)1); aHex.GetPointIds().SetId((int)2,(int)2); aHex.GetPointIds().SetId((int)3,(int)3); aHex.GetPointIds().SetId((int)4,(int)4); aHex.GetPointIds().SetId((int)5,(int)5); aHex.GetPointIds().SetId((int)6,(int)6); aHex.GetPointIds().SetId((int)7,(int)7); aHex.GetPointIds().SetId((int)8,(int)8); aHex.GetPointIds().SetId((int)9,(int)9); aHex.GetPointIds().SetId((int)10,(int)10); aHex.GetPointIds().SetId((int)11,(int)11); aHex.GetPointIds().SetId((int)12,(int)12); aHex.GetPointIds().SetId((int)13,(int)13); aHex.GetPointIds().SetId((int)14,(int)14); aHex.GetPointIds().SetId((int)15,(int)15); aHex.GetPointIds().SetId((int)16,(int)16); aHex.GetPointIds().SetId((int)17,(int)17); aHex.GetPointIds().SetId((int)18,(int)18); aHex.GetPointIds().SetId((int)19,(int)19); aHexGrid = new vtkUnstructuredGrid(); aHexGrid.Allocate((int)1,(int)1); aHexGrid.InsertNextCell((int)aHex.GetCellType(),(vtkIdList)aHex.GetPointIds()); aHexGrid.SetPoints((vtkPoints)hexPoints); aHexGrid.GetPointData().SetScalars((vtkDataArray)hexScalars); aHexMapper = new vtkDataSetMapper(); aHexMapper.SetInputData((vtkDataSet)aHexGrid); aHexMapper.ScalarVisibilityOff(); aHexActor = new vtkActor(); aHexActor.SetMapper((vtkMapper)aHexMapper); aHexActor.GetProperty().SetRepresentationToWireframe(); aHexActor.GetProperty().SetAmbient((double)1.0); // Quadratic wedge[] wedgePoints = new vtkPoints(); wedgePoints.SetNumberOfPoints((int)15); wedgePoints.InsertPoint((int)0,(double)0,(double)0,(double)0); wedgePoints.InsertPoint((int)1,(double)1,(double)0,(double)0); wedgePoints.InsertPoint((int)2,(double)0,(double)1,(double)0); wedgePoints.InsertPoint((int)3,(double)0,(double)0,(double)1); wedgePoints.InsertPoint((int)4,(double)1,(double)0,(double)1); wedgePoints.InsertPoint((int)5,(double)0,(double)1,(double)1); wedgePoints.InsertPoint((int)6,(double)0.5,(double)0,(double)0); wedgePoints.InsertPoint((int)7,(double)0.5,(double)0.5,(double)0); wedgePoints.InsertPoint((int)8,(double)0,(double)0.5,(double)0); wedgePoints.InsertPoint((int)9,(double)0.5,(double)0,(double)1); wedgePoints.InsertPoint((int)10,(double)0.5,(double)0.5,(double)1); wedgePoints.InsertPoint((int)11,(double)0,(double)0.5,(double)1); wedgePoints.InsertPoint((int)12,(double)0,(double)0,(double)0.5); wedgePoints.InsertPoint((int)13,(double)1,(double)0,(double)0.5); wedgePoints.InsertPoint((int)14,(double)0,(double)1,(double)0.5); wedgeScalars = new vtkFloatArray(); wedgeScalars.SetNumberOfTuples((int)15); wedgeScalars.InsertValue((int)0,(float)1.0); wedgeScalars.InsertValue((int)1,(float)1.0); wedgeScalars.InsertValue((int)2,(float)1.0); wedgeScalars.InsertValue((int)3,(float)1.0); wedgeScalars.InsertValue((int)4,(float)1.0); wedgeScalars.InsertValue((int)5,(float)1.0); wedgeScalars.InsertValue((int)6,(float)1.0); wedgeScalars.InsertValue((int)7,(float)1.0); wedgeScalars.InsertValue((int)8,(float)0.0); wedgeScalars.InsertValue((int)9,(float)0.0); wedgeScalars.InsertValue((int)10,(float)0.0); wedgeScalars.InsertValue((int)11,(float)0.0); wedgeScalars.InsertValue((int)12,(float)0.0); wedgeScalars.InsertValue((int)13,(float)0.0); wedgeScalars.InsertValue((int)14,(float)0.0); aWedge = new vtkQuadraticWedge(); aWedge.GetPointIds().SetId((int)0,(int)0); aWedge.GetPointIds().SetId((int)1,(int)1); aWedge.GetPointIds().SetId((int)2,(int)2); aWedge.GetPointIds().SetId((int)3,(int)3); aWedge.GetPointIds().SetId((int)4,(int)4); aWedge.GetPointIds().SetId((int)5,(int)5); aWedge.GetPointIds().SetId((int)6,(int)6); aWedge.GetPointIds().SetId((int)7,(int)7); aWedge.GetPointIds().SetId((int)8,(int)8); aWedge.GetPointIds().SetId((int)9,(int)9); aWedge.GetPointIds().SetId((int)10,(int)10); aWedge.GetPointIds().SetId((int)11,(int)11); aWedge.GetPointIds().SetId((int)12,(int)12); aWedge.GetPointIds().SetId((int)13,(int)13); aWedge.GetPointIds().SetId((int)14,(int)14); aWedgeGrid = new vtkUnstructuredGrid(); aWedgeGrid.Allocate((int)1,(int)1); aWedgeGrid.InsertNextCell((int)aWedge.GetCellType(),(vtkIdList)aWedge.GetPointIds()); aWedgeGrid.SetPoints((vtkPoints)wedgePoints); aWedgeGrid.GetPointData().SetScalars((vtkDataArray)wedgeScalars); wedgeContours = new vtkClipDataSet(); wedgeContours.SetInputData((vtkDataObject)aWedgeGrid); wedgeContours.SetValue((double)0.5); aWedgeContourMapper = new vtkDataSetMapper(); aWedgeContourMapper.SetInputConnection((vtkAlgorithmOutput)wedgeContours.GetOutputPort()); aWedgeContourMapper.ScalarVisibilityOff(); aWedgeMapper = new vtkDataSetMapper(); aWedgeMapper.SetInputData((vtkDataSet)aWedgeGrid); aWedgeMapper.ScalarVisibilityOff(); aWedgeActor = new vtkActor(); aWedgeActor.SetMapper((vtkMapper)aWedgeMapper); aWedgeActor.GetProperty().SetRepresentationToWireframe(); aWedgeActor.GetProperty().SetAmbient((double)1.0); aWedgeContourActor = new vtkActor(); aWedgeContourActor.SetMapper((vtkMapper)aWedgeContourMapper); aWedgeContourActor.GetProperty().SetAmbient((double)1.0); // Quadratic pyramid[] pyraPoints = new vtkPoints(); pyraPoints.SetNumberOfPoints((int)13); pyraPoints.InsertPoint((int)0,(double)0,(double)0,(double)0); pyraPoints.InsertPoint((int)1,(double)1,(double)0,(double)0); pyraPoints.InsertPoint((int)2,(double)1,(double)1,(double)0); pyraPoints.InsertPoint((int)3,(double)0,(double)1,(double)0); pyraPoints.InsertPoint((int)4,(double)0,(double)0,(double)1); pyraPoints.InsertPoint((int)5,(double)0.5,(double)0,(double)0); pyraPoints.InsertPoint((int)6,(double)1,(double)0.5,(double)0); pyraPoints.InsertPoint((int)7,(double)0.5,(double)1,(double)0); pyraPoints.InsertPoint((int)8,(double)0,(double)0.5,(double)0); pyraPoints.InsertPoint((int)9,(double)0,(double)0,(double)0.5); pyraPoints.InsertPoint((int)10,(double)0.5,(double)0,(double)0.5); pyraPoints.InsertPoint((int)11,(double)0.5,(double)0.5,(double)0.5); pyraPoints.InsertPoint((int)12,(double)0,(double)0.5,(double)0.5); pyraScalars = new vtkFloatArray(); pyraScalars.SetNumberOfTuples((int)13); pyraScalars.InsertValue((int)0,(float)1.0); pyraScalars.InsertValue((int)1,(float)1.0); pyraScalars.InsertValue((int)2,(float)1.0); pyraScalars.InsertValue((int)3,(float)1.0); pyraScalars.InsertValue((int)4,(float)1.0); pyraScalars.InsertValue((int)5,(float)1.0); pyraScalars.InsertValue((int)6,(float)1.0); pyraScalars.InsertValue((int)7,(float)1.0); pyraScalars.InsertValue((int)8,(float)0.0); pyraScalars.InsertValue((int)9,(float)0.0); pyraScalars.InsertValue((int)10,(float)0.0); pyraScalars.InsertValue((int)11,(float)0.0); pyraScalars.InsertValue((int)12,(float)0.0); aPyramid = new vtkQuadraticPyramid(); aPyramid.GetPointIds().SetId((int)0,(int)0); aPyramid.GetPointIds().SetId((int)1,(int)1); aPyramid.GetPointIds().SetId((int)2,(int)2); aPyramid.GetPointIds().SetId((int)3,(int)3); aPyramid.GetPointIds().SetId((int)4,(int)4); aPyramid.GetPointIds().SetId((int)5,(int)5); aPyramid.GetPointIds().SetId((int)6,(int)6); aPyramid.GetPointIds().SetId((int)7,(int)7); aPyramid.GetPointIds().SetId((int)8,(int)8); aPyramid.GetPointIds().SetId((int)9,(int)9); aPyramid.GetPointIds().SetId((int)10,(int)10); aPyramid.GetPointIds().SetId((int)11,(int)11); aPyramid.GetPointIds().SetId((int)12,(int)12); aPyramidGrid = new vtkUnstructuredGrid(); aPyramidGrid.Allocate((int)1,(int)1); aPyramidGrid.InsertNextCell((int)aPyramid.GetCellType(),(vtkIdList)aPyramid.GetPointIds()); aPyramidGrid.SetPoints((vtkPoints)pyraPoints); aPyramidGrid.GetPointData().SetScalars((vtkDataArray)pyraScalars); pyraContours = new vtkClipDataSet(); pyraContours.SetInputData((vtkDataObject)aPyramidGrid); pyraContours.SetValue((double)0.5); aPyramidContourMapper = new vtkDataSetMapper(); aPyramidContourMapper.SetInputConnection((vtkAlgorithmOutput)pyraContours.GetOutputPort()); aPyramidContourMapper.ScalarVisibilityOff(); aPyramidMapper = new vtkDataSetMapper(); aPyramidMapper.SetInputData((vtkDataSet)aPyramidGrid); aPyramidMapper.ScalarVisibilityOff(); aPyramidActor = new vtkActor(); aPyramidActor.SetMapper((vtkMapper)aPyramidMapper); aPyramidActor.GetProperty().SetRepresentationToWireframe(); aPyramidActor.GetProperty().SetAmbient((double)1.0); aPyramidContourActor = new vtkActor(); aPyramidContourActor.SetMapper((vtkMapper)aPyramidContourMapper); aPyramidContourActor.GetProperty().SetAmbient((double)1.0); // Create the rendering related stuff.[] // Since some of our actors are a single vertex, we need to remove all[] // cullers so the single vertex actors will render[] ren1 = vtkRenderer.New(); ren1.GetCullers().RemoveAllItems(); renWin = vtkRenderWindow.New(); renWin.SetMultiSamples(0); renWin.AddRenderer((vtkRenderer)ren1); iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow((vtkRenderWindow)renWin); ren1.SetBackground((double).1,(double).2,(double).3); renWin.SetSize((int)400,(int)200); // specify properties[] ren1.AddActor((vtkProp)aEdgeActor); ren1.AddActor((vtkProp)aTriActor); ren1.AddActor((vtkProp)aQuadActor); ren1.AddActor((vtkProp)aTetActor); ren1.AddActor((vtkProp)aHexActor); ren1.AddActor((vtkProp)aWedgeActor); ren1.AddActor((vtkProp)aPyramidActor); // places everyone!![] aTriActor.AddPosition((double)2,(double)0,(double)0); aQuadActor.AddPosition((double)4,(double)0,(double)0); aTetActor.AddPosition((double)6,(double)0,(double)0); aHexActor.AddPosition((double)8,(double)0,(double)0); aWedgeActor.AddPosition((double)10,(double)0,(double)0); aPyramidActor.AddPosition((double)12,(double)0,(double)0); BuildBackdrop(-1, 15, -1, 4, -1, 2, .1); ren1.AddActor((vtkProp)base1); base1.GetProperty().SetDiffuseColor((double).2,(double).2,(double).2); ren1.AddActor((vtkProp)left); left.GetProperty().SetDiffuseColor((double).2,(double).2,(double).2); ren1.AddActor((vtkProp)back); back.GetProperty().SetDiffuseColor((double).2,(double).2,(double).2); ren1.ResetCamera(); ren1.GetActiveCamera().Dolly((double)2.5); ren1.ResetCameraClippingRange(); renWin.Render(); // create a little scorecard above each of the cells. These are displayed[] // if a ray cast hits the cell, otherwise they are not shown.[] pm = new vtkPlaneSource(); pm.SetXResolution((int)1); pm.SetYResolution((int)1); pmapper = vtkPolyDataMapper.New(); pmapper.SetInputConnection((vtkAlgorithmOutput)pm.GetOutputPort()); // now try intersecting rays with the cell[] cellPicker = new vtkCellPicker(); edgeCheck = new vtkActor(); edgeCheck.SetMapper((vtkMapper)pmapper); edgeCheck.AddPosition((double)0.5,(double)2.5,(double)0); cellPicker.Pick((double)87,(double)71,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)edgeCheck); } triCheck = new vtkActor(); triCheck.SetMapper((vtkMapper)pmapper); triCheck.AddPosition((double)2.5,(double)2.5,(double)0); cellPicker.Pick((double)139,(double)72,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)triCheck); } quadCheck = new vtkActor(); quadCheck.SetMapper((vtkMapper)pmapper); quadCheck.AddPosition((double)4.5,(double)2.5,(double)0); cellPicker.Pick((double)192,(double)78,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)quadCheck); } tetCheck = new vtkActor(); tetCheck.SetMapper((vtkMapper)pmapper); tetCheck.AddPosition((double)6.5,(double)2.5,(double)0); cellPicker.Pick((double)233,(double)70,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)tetCheck); } hexCheck = new vtkActor(); hexCheck.SetMapper((vtkMapper)pmapper); hexCheck.AddPosition((double)8.5,(double)2.5,(double)0); cellPicker.Pick((double)287,(double)80,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)hexCheck); } wedgeCheck = new vtkActor(); wedgeCheck.SetMapper((vtkMapper)pmapper); wedgeCheck.AddPosition((double)10.5,(double)2.5,(double)0); cellPicker.Pick((double)287,(double)80,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)wedgeCheck); } pyraCheck = new vtkActor(); pyraCheck.SetMapper((vtkMapper)pmapper); pyraCheck.AddPosition((double)12.5,(double)2.5,(double)0); cellPicker.Pick((double)287,(double)80,(double)0,(vtkRenderer)ren1); if ((cellPicker.GetCellId()) != -1) { ren1.AddActor((vtkProp)pyraCheck); } // render the image[] //[] iren.Initialize(); //deleteAllVTKObjects(); }
//private void CommonInit(Sequence BinarySubImageSeq) //{ // vtkImageData ImageData1 = new vtkImageData(); // ImageData1.SetDimensions(BinarySubImageSeq.Width, BinarySubImageSeq.Height, BinarySubImageSeq.Depth); // ImageData1.SetNumberOfScalarComponents(1); // ImageData1.SetSpacing(BinarySubImageSeq.XResolution, BinarySubImageSeq.YResolution, BinarySubImageSeq.ZResolution); // ImageData1.SetScalarTypeToFloat(); // vtkFloatArray array1 = new vtkFloatArray(); // for (int i = 0; i < BinarySubImageSeq.ImageSize; i++) // array1.InsertTuple1(i, BinarySubImageSeq[0].Data[0][i]); // ImageData1.GetPointData().SetScalars(array1); // vtkExtractVOI VOI = new vtkExtractVOI(); // VOI.SetInput(ImageData1); // VOI.SetSampleRate(1, 1, 1); // vtkMarchingCubes ContourObject = vtkMarchingCubes.New(); // vtk_PolyDataMapper = vtkPolyDataMapper.New(); // //ContourActor = new vtkActor(); // VOI.SetVOI(0, BinarySubImageSeq.Width - 1, 0, BinarySubImageSeq.Height - 1, 0, BinarySubImageSeq.Depth - 1); // ContourObject.SetInput(VOI.GetOutput()); // ContourObject.SetValue(0, 0.5); // vtk_PolyDataMapper.SetInput(ContourObject.GetOutput()); // vtk_PolyDataMapper.ScalarVisibilityOn(); // vtk_PolyDataMapper.SetScalarModeToUseFieldData(); //} ///// <summary> ///// Generate a 3D mesh using marching-cubes algorithm. If voxel value is lower than 1 it is consider as background, else as object ///// </summary> ///// <param name="BinarySubImageSeq">The binary image</param> ///// <param name="Colour">Mesh color</param> ///// <param name="Pos">Postion of the object in the world</param> //public void Generate(Sequence BinarySubImageSeq, Color Colour, cPoint3D Pos) //{ // vtkImageData ImageData1 = new vtkImageData(); // ImageData1.SetDimensions(BinarySubImageSeq.Width, BinarySubImageSeq.Height, BinarySubImageSeq.Depth); // ImageData1.SetNumberOfScalarComponents(1); // ImageData1.SetSpacing(BinarySubImageSeq.XResolution, BinarySubImageSeq.YResolution, BinarySubImageSeq.ZResolution); // ImageData1.SetScalarTypeToFloat(); // vtkFloatArray array1 = new vtkFloatArray(); // for (int i = 0; i < BinarySubImageSeq.ImageSize; i++) // array1.InsertTuple1(i, BinarySubImageSeq[0].Data[0][i]); // ImageData1.GetPointData().SetScalars(array1); // vtkExtractVOI VOI = new vtkExtractVOI(); // VOI.SetInput(ImageData1); // VOI.SetSampleRate(1, 1, 1); // vtkMarchingCubes ContourObject = vtkMarchingCubes.New(); // vtk_PolyDataMapper = vtkPolyDataMapper.New(); // //ContourActor = new vtkActor(); // VOI.SetVOI(0, BinarySubImageSeq.Width - 1, 0, BinarySubImageSeq.Height - 1, 0, BinarySubImageSeq.Depth - 1); // // perform the amrching cubes // ContourObject.SetInput(VOI.GetOutput()); // ContourObject.SetValue(0, 0.5); // //vtkDecimatePro deci // //deci SetInputConnection [fran GetOutputPort] // //deci SetTargetReduction 0.9 // //deci PreserveTopologyOn // if (MeshSmoother!=null) // { // vtkSmoothPolyDataFilter smoother = new vtkSmoothPolyDataFilter(); // smoother.SetInputConnection(ContourObject.GetOutputPort());// [deci GetOutputPort] // smoother.SetNumberOfIterations(50); // vtk_PolyData = smoother.GetOutput(); // } // else // { // vtk_PolyData = ContourObject.GetOutput(); // } // vtk_PolyDataMapper.SetInput(vtk_PolyData); // vtk_PolyDataMapper.ScalarVisibilityOn(); // vtk_PolyDataMapper.SetScalarModeToUseFieldData(); // this.Position = new cPoint3D(Pos.X, Pos.Y, Pos.Z); // this.Colour = Colour; // CreateVTK3DObject(1); // vtk_PolyData = ContourObject.GetOutput(); // // compute convex hull // hullFilter = vtkHull.New(); // hullFilter.SetInputConnection(ContourObject.GetOutputPort()); // hullFilter.AddRecursiveSpherePlanes(1); // hullFilter.Update(); // // this.BackfaceCulling(false); // Information = new cInformation(ContourObject, this, hullFilter); //} public void Generate(cImage BinarySubImageSeq, Color Colour, cPoint3D Pos/*, List<cBiological3DObject> Containers, int ContainerMode*/) { vtkImageData ImageData1 = new vtkImageData(); ImageData1.SetDimensions(BinarySubImageSeq.Width, BinarySubImageSeq.Height, BinarySubImageSeq.Depth); ImageData1.SetNumberOfScalarComponents(1); ImageData1.SetSpacing(BinarySubImageSeq.Resolution.X, BinarySubImageSeq.Resolution.Y, BinarySubImageSeq.Resolution.Z); ImageData1.SetScalarTypeToFloat(); vtkFloatArray array1 = new vtkFloatArray(); for (int i = 0; i < BinarySubImageSeq.ImageSize; i++) array1.InsertTuple1(i, BinarySubImageSeq.SingleChannelImage[0].Data[i]); ImageData1.GetPointData().SetScalars(array1); vtkExtractVOI VOI = new vtkExtractVOI(); VOI.SetInput(ImageData1); VOI.SetSampleRate(1, 1, 1); vtkMarchingCubes ContourObject = vtkMarchingCubes.New(); vtk_PolyDataMapper = vtkPolyDataMapper.New(); //ContourActor = new vtkActor(); VOI.SetVOI(0, BinarySubImageSeq.Width - 1, 0, BinarySubImageSeq.Height - 1, 0, BinarySubImageSeq.Depth - 1); ContourObject.SetInput(VOI.GetOutput()); ContourObject.SetValue(0, 0.5); vtkAlgorithmOutput AlgoOutPut = null; if (MeshSmoother != null) { //vtkSmoothPolyDataFilter smoother = new vtkSmoothPolyDataFilter(); vtkWindowedSincPolyDataFilter smoother = new vtkWindowedSincPolyDataFilter(); smoother.SetInputConnection(ContourObject.GetOutputPort());// [deci GetOutputPort] smoother.SetNumberOfIterations(MeshSmoother.NumberOfIterations); vtk_PolyData = smoother.GetOutput(); //smoother.GetOutputPort(); AlgoOutPut = smoother.GetOutputPort(); } else { vtk_PolyData = ContourObject.GetOutput(); AlgoOutPut = ContourObject.GetOutputPort(); } vtk_PolyDataMapper.SetInput(vtk_PolyData); vtk_PolyDataMapper.ScalarVisibilityOn(); vtk_PolyDataMapper.SetScalarModeToUseFieldData(); vtkActor TmpActor = vtkActor.New(); TmpActor.SetMapper(vtk_PolyDataMapper); TmpActor.SetPosition(Pos.X, Pos.Y, Pos.Z); //Console.WriteLine("PosX"+Pos.X+" PosY"+Pos.Y+" PosZ"+Pos.Z); #region deal with the containers if (this.Containers != null) { if (this.Containers.ContainerMode == 0) { cPoint3D Centroid = new cPoint3D((float)TmpActor.GetCenter()[0], (float)TmpActor.GetCenter()[1], (float)TmpActor.GetCenter()[2]); bool IsInside = false; for (int Idx = 0; Idx < Containers.Containers.Count; Idx++) { cBiological3DVolume CurrentContainer = (cBiological3DVolume)(Containers.Containers[Idx]); if (CurrentContainer.IsPointInside(Centroid)) { IsInside = true; ContainerIdx = Idx; break; } } if (IsInside) { this.SetPosition(new cPoint3D(Pos.X, Pos.Y, Pos.Z)); this.Colour = Colour; CreateVTK3DObject(1); // vtk_PolyData = ContourObject.GetOutput(); // compute convex hull hullFilter = vtkHull.New(); hullFilter.SetInputConnection(AlgoOutPut); hullFilter.AddRecursiveSpherePlanes(0); hullFilter.Update(); Information = new cInformation(AlgoOutPut, this, hullFilter); this.Detected = true; } else { this.Detected = false; } } else if (Containers.ContainerMode == 1) { this.Detected = true; //bool IsInside = false; for (int Idx = 0; Idx < Containers.Containers.Count; Idx++) { cBiological3DVolume CurrentContainer = (cBiological3DVolume)(Containers.Containers[Idx]); if (CurrentContainer.IsPointInside(Pos)) { //IsInside = false; this.Detected = false; return; } } this.SetPosition(new cPoint3D(Pos.X, Pos.Y, Pos.Z)); this.Colour = Colour; CreateVTK3DObject(1); // vtk_PolyData = ContourObject.GetOutput(); // compute convex hull hullFilter = vtkHull.New(); hullFilter.SetInputConnection(AlgoOutPut); hullFilter.AddRecursiveSpherePlanes(0); hullFilter.Update(); Information = new cInformation(AlgoOutPut, this, hullFilter); this.Detected = true; } } else { this.SetPosition(new cPoint3D(Pos.X, Pos.Y, Pos.Z)); this.Colour = Colour; CreateVTK3DObject(1); // vtk_PolyData = ContourObject.GetOutput(); // compute convex hull hullFilter = vtkHull.New(); hullFilter.SetInputConnection(AlgoOutPut); hullFilter.AddRecursiveSpherePlanes(1); hullFilter.Update(); // this.BackfaceCulling(false); Information = new cInformation(AlgoOutPut, this, hullFilter); } #endregion }
/********************************************* * VTK functions: * DrawModel -- Basic function to draw model * DrawEdgesModel -- Add grids to the model * LabelGetter -- Add label to the model *********************************************/ public int VTKDrawModel(ref vtkPoints points, ref vtkCellArray strips, ref vtkFloatArray scalars, ref int pointsNum, FormParas paras) { // The following routine is built for general purpose for (int i = 0; i < NodeList.Count(); i++) { points.InsertPoint(i, NodeList[i].Node_Coord[0], 0, -NodeList[i].Node_Coord[1]); } pointsNum = NodeList.Count(); if (paras.StageID != -1) { scalars.SetNumberOfValues(ElemList.Count()); } int cnt = 0; double MAX_R = 0; double MAX_R_VALUE = 0; int MAX_ELEM_NUM = 0; foreach (ListElemBase elem in ElemList) { strips.InsertNextCell(8); if (paras.StageID == -1) { scalars.InsertNextValue(elem.Elem_Modeltype[0]); } else { if (IfElemToPropertyKeyExists(elem.Elem_Number)) { scalars.SetValue(cnt, (float)GetElemToProperty(elem.Elem_Number)); } else { scalars.SetValue(cnt, 0); } //MessageBox.Show(((float)GetElemToProperty(elem.Elem_Number)).ToString()); } for (int i = 0; i < 8; i++) { int NodeId = elem.Elem_Nodes[i]; int NodePosInPointsArray = GetNodePositionInNodeListFromNodeId(NodeId); strips.InsertCellPoint(NodePosInPointsArray); if (paras.StageID != -1) { if (NodeList[NodePosInPointsArray].Node_Coord[0] > MAX_R) { MAX_R = NodeList[NodePosInPointsArray].Node_Coord[0]; if (IfElemToPropertyKeyExists(elem.Elem_Number)) { MAX_R_VALUE = GetElemToProperty(elem.Elem_Number); } else { MAX_R_VALUE = 0; } MAX_ELEM_NUM = elem.Elem_Number; } } } cnt++; } //MessageBox.Show(MAX_R.ToString() + ' ' + MAX_R_VALUE.ToString() + ' ' + MAX_ELEM_NUM.ToString()); return(1); }
public void Generate(CImage3D BinarySubImageSeq, Color Colour, cPoint3D Pos) { vtkImageData ImageData1 = new vtkImageData(); ImageData1.SetDimensions(BinarySubImageSeq.Width, BinarySubImageSeq.Height, BinarySubImageSeq.Depth); ImageData1.SetNumberOfScalarComponents(1); //ImageData1.SetSpacing(BinarySubImageSeq.XResolution, BinarySubImageSeq.YResolution, BinarySubImageSeq.ZResolution); ImageData1.SetScalarTypeToFloat(); vtkFloatArray array1 = new vtkFloatArray(); for (int i = 0; i < BinarySubImageSeq.ImageSize; i++) array1.InsertTuple1(i, BinarySubImageSeq.Data[i]); ImageData1.GetPointData().SetScalars(array1); vtkExtractVOI VOI = new vtkExtractVOI(); VOI.SetInput(ImageData1); VOI.SetSampleRate(1, 1, 1); vtkMarchingCubes ContourObject = vtkMarchingCubes.New(); vtk_PolyDataMapper = vtkPolyDataMapper.New(); //ContourActor = new vtkActor(); VOI.SetVOI(0, BinarySubImageSeq.Width - 1, 0, BinarySubImageSeq.Height - 1, 0, BinarySubImageSeq.Depth - 1); ContourObject.SetInput(VOI.GetOutput()); ContourObject.SetValue(0, 0.5); vtkAlgorithmOutput AlgoOutPut = null; vtk_PolyData = ContourObject.GetOutput(); AlgoOutPut = ContourObject.GetOutputPort(); vtk_PolyDataMapper.SetInput(vtk_PolyData); vtk_PolyDataMapper.ScalarVisibilityOn(); vtk_PolyDataMapper.SetScalarModeToUseFieldData(); vtkActor TmpActor = vtkActor.New(); TmpActor.SetMapper(vtk_PolyDataMapper); TmpActor.SetPosition(Pos.X, Pos.Y, Pos.Z); //Console.WriteLine("PosX"+Pos.X+" PosY"+Pos.Y+" PosZ"+Pos.Z); #region deal with the containers this.Position = new cPoint3D(Pos.X, Pos.Y, Pos.Z); this.Colour = Colour; CreateVTK3DObject(1); // vtk_PolyData = ContourObject.GetOutput(); // compute convex hull hullFilter = vtkHull.New(); hullFilter.SetInputConnection(AlgoOutPut); hullFilter.AddRecursiveSpherePlanes(1); hullFilter.Update(); // this.BackfaceCulling(false); Information = new cInformation(AlgoOutPut, this, hullFilter); #endregion }