Hello everyone
I’m new to VTK and I’m developing an application that use VTK for displaying cross section, isosurface and so on using C#.
I’ve succeeded getting cross section vertex position, index and data value for generting my mesh.
Now what I want to achieve is getting the vertex position, vertex index and data value for isosurface
The VTK file I’m using is a RectilinearGrid. I’ve check on the documentation and I should be able to either vtkMarchingContourFilter or vtkRectilinearSynchronizedTemplates.
I’ve first check using Paraview and was able to display Contour after creating a CellDataToPointData.
Now I’m trying to get the same result using in code but IF I use vtkMarchingContourFilter, I got a “no data to contour” error and if I use vtkRectilinearSynchronizedTemplates I got a “no scalars for contouring” error.
I’ve also try the code example at the following link without success.
link:https://python.hotexamples.com/examples/vtk/-/vtkRectilinearSynchronizedTemplates/python-vtkrectilinearsynchronizedtemplates-function-examples.html
below is what I’ve done so far:(the VTK contains 3 data array called “all”, “region” and “material”)
string FilePath = <path to vtk>;
vtkRectilinearGridReader reader = vtkRectilinearGridReader.New();
reader.SetFileName(fileName);
reader.ReadAllScalarsOn();
reader.Update();
//convert our CellData to PointData
vtkCellDataToPointData CellDataToPointData = vtkCellDataToPointData.New();
CellDataToPointData.SetInputData(reader.GetOutput());
CellDataToPointData.Update();
vtkPointData PointData = CellDataToPointData.GetOutput().GetPointData();
vtkDataArray FirstArray = PointData.GetArray(0);
double[] Range = FirstArray.GetRange();
double Average = (Range[0] + Range[1]) / 2;
vtkRectilinearSynchronizedTemplates Contour = vtkRectilinearSynchronizedTemplates.New();
Contour.SetInputConnection(CellDataToPointData.GetOutputPort());//no scalars for contouring error
Contour.ComputeScalarsOn();
Contour.SetValue(0, Average);
//mapper
vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(Contour.GetOutputPort());
mapper.SetScalarRange(Range[0], Range[1]);
TargetActor = vtkActor.New();
TargetActor.SetMapper(mapper);
TargetActor.SetPosition(0, 0, 0);
TargetActor.GetProperty().SetInterpolationToPBR();
TargetActor.GetProperty().SetColor(1, 1, 1);
VTKRenderer.AddActor(TargetActor);
Could you please tell me what I’m doing wrong?
I really thank you in advance for your help.