46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using CaeMesh;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace RBFMorphing
|
|
{
|
|
[Serializable]
|
|
public sealed class NodeSet : AbstractClass
|
|
{
|
|
[NonSerialized]
|
|
private readonly FeMesh _mesh;
|
|
|
|
public NodeSet(FeMesh mesh, FeNodeSet nodeSet) : base(EnumMorphMethod.NodeSet)
|
|
{
|
|
if (mesh == null || nodeSet == null)
|
|
throw new ArgumentNullException(nameof(NodeSet));
|
|
|
|
if (!mesh.NodeSets.ContainsKey(nodeSet.Name))
|
|
throw new ArgumentException(nameof(mesh));
|
|
|
|
_mesh = mesh;
|
|
_name = nodeSet.Name;
|
|
}
|
|
|
|
public override List<FeNode> GetNodes()
|
|
{
|
|
var nodes = new List<FeNode>();
|
|
|
|
// ReSharper disable once InvertIf
|
|
if (_mesh.NodeSets.TryGetValue(_name, out var nodeSet))
|
|
{
|
|
foreach (var id in nodeSet.Labels)
|
|
{
|
|
if (_mesh.Nodes.TryGetValue(id, out var node))
|
|
nodes.Add(node);
|
|
}
|
|
}
|
|
|
|
return nodes;
|
|
}
|
|
|
|
public override int[] Labels => _mesh.NodeSets.TryGetValue(_name, out var nodeSet) ? nodeSet.Labels : null;
|
|
|
|
public override int Length => Labels?.Length ?? 0;
|
|
}
|
|
} |