Files
wg_cpso/vtkControl/vtkMax/Animation/vtkMaxActorAnimationData.cs
2026-03-25 18:20:24 +08:00

101 lines
4.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kitware.VTK;
using CaeGlobals;
namespace vtkControl
{
public class vtkMaxActorAnimationData
{
// Variables
private vtkPoints _points;
private vtkDataArray _pointNormals;
private vtkPoints _modelEdgesPoints;
private vtkFloatArray _values;
private vtkMaxExtreemeNode _minNode;
private vtkMaxExtreemeNode _maxNode;
private vtkPoints _locatorPoints;
private vtkFloatArray _locatorValues;
// Properties
public vtkPoints Points { get { return _points; } set { _points = value; } }
public vtkDataArray PointNormals { get { return _pointNormals; } set { _pointNormals = value; } }
public vtkPoints ModelEdgesPoints { get { return _modelEdgesPoints; } set { _modelEdgesPoints = value; } }
public vtkFloatArray Values { get { return _values; } set { _values = value; } }
public vtkMaxExtreemeNode MinNode { get { return _minNode; } set { _minNode = value; } }
public vtkMaxExtreemeNode MaxNode { get { return _maxNode; } set { _maxNode = value; } }
public vtkPoints LocatorPoints { get { return _locatorPoints; } set { _locatorPoints = value; } }
public vtkFloatArray LocatorValues { get { return _locatorValues; } set { _locatorValues = value; } }
// Constructors
public vtkMaxActorAnimationData(double[][] nodes, double[][] modelEdgesNodes, float[] values,
NodesExchangeData extremeNodes, double[][] locatorNodes, float[] locatorValues)
{
// Nodes
if (nodes == null) _points = null;
else
{
_points = vtkPoints.New();
_points.SetNumberOfPoints(nodes.Length);
for (int i = 0; i < nodes.Length; i++) _points.SetPoint(i, nodes[i][0], nodes[i][1], nodes[i][2]);
}
// Normals
_pointNormals = null;
// Model edges nodes
if (modelEdgesNodes == null) _modelEdgesPoints = null;
else
{
_modelEdgesPoints = vtkPoints.New();
_modelEdgesPoints.SetNumberOfPoints(modelEdgesNodes.Length);
for (int i = 0; i < modelEdgesNodes.Length; i++)
_modelEdgesPoints.SetPoint(i, modelEdgesNodes[i][0], modelEdgesNodes[i][1], modelEdgesNodes[i][2]);
}
// Values
if (values == null) _values = null;
else
{
_values = vtkFloatArray.New();
_values.SetName(Globals.ScalarArrayName);
_values.SetNumberOfValues(values.Length);
for (int i = 0; i < values.Length; i++) _values.SetValue(i, values[i]);
}
// Extreme nodes
if (extremeNodes == null)
{
_minNode = null;
_maxNode = null;
}
else
{
_minNode = new vtkMaxExtreemeNode(extremeNodes.Ids[0], extremeNodes.Coor[0], extremeNodes.Values[0]);
_maxNode = new vtkMaxExtreemeNode(extremeNodes.Ids[1], extremeNodes.Coor[1], extremeNodes.Values[1]);
}
// Locator nodes
if (locatorNodes == null) _locatorPoints = null;
else
{
_locatorPoints = vtkPoints.New();
_locatorPoints.SetNumberOfPoints(locatorNodes.Length);
for (int i = 0; i < locatorNodes.Length; i++)
_locatorPoints.SetPoint(i, locatorNodes[i][0], locatorNodes[i][1], locatorNodes[i][2]);
}
// Locator values
if (locatorValues == null) _locatorValues = null;
else
{
_locatorValues = vtkFloatArray.New();
_locatorValues.SetName(Globals.ScalarArrayName);
_locatorValues.SetNumberOfValues(locatorValues.Length);
for (int i = 0; i < locatorValues.Length; i++) _locatorValues.SetValue(i, locatorValues[i]);
}
}
}
}