Hi I have code, which can color *.vtp, *.vtk.
But same code fails to color *.vtu.
I have list of vtkactors. And I specify which actor to set properties from.
This code which gets all column names from actor index:
public static List<string> getColumns(int actorIndex)
{
List<string> colums = new List<string>();
vtkActor actor = actors[actorIndex];
var output = actor.GetMapper().GetInputAsDataSet();
var cell = output.GetCellData();
for (int i = 0; i < cell.GetNumberOfArrays(); i++)
{
var colm = cell.GetArrayName(i);
if (colm != null) colums.Add(colm);
}
return colums;
}
This code colors the model of specific column.
public static void setColors(int actorIndex, string column)
{
List<string> colums = new List<string>();
vtkActor actor = actors[actorIndex];
var output = actor.GetMapper().GetInputAsDataSet();
var colors = vtkUnsignedCharArray.New();
colors.SetNumberOfComponents(3);
colors.SetName("Colors");
var cell = output.GetCellData();
for (int i = 0; i < cell.GetNumberOfArrays(); i++)
{
var cells = cell.GetArray(i);
if (cells == null) continue;
if (column != cell.GetArrayName(i)) continue;
for (int j = 0; j < cells.GetNumberOfTuples(); j++)
{
var c = color_range((cells.GetComponent(i, j) / cell.GetArray(i).GetRange()[1]) * 100);
var R = c.R;
var G = c.G;
var B = c.B;
colors.InsertNextTuple3((double)R, (double)G, (double)B);
colors.InsertNextTuple3((double)R, (double)G, (double)B);
}
}
output.GetPointData().SetScalars(colors);
}
This code gets range of values from specific column.
public static double[] getRange(int actorIndex, string column)
{
List<string> colums = new List<string>();
vtkActor actor = actors[actorIndex];
var output = actor.GetMapper().GetInputAsDataSet();
var cell = output.GetCellData();
for (int i = 0; i < cell.GetNumberOfArrays(); i++)
{
var colm = cell.GetArrayName(i);
var arr = cell.GetArray(i);
if (column == colm)
{
if (arr == null) return null;
return arr.GetRange();
}
}
return null;
}
Result looks like this for *.vtp or *.vtk (GOOD):
Result for *.vtu in paraview (GOOD):
But result for *.vtu in my code (BAD):
Please let me know whats I’m doing wrong.