Files
wg_cpso/RBFMorphing/NodeSet.cs

46 lines
1.3 KiB
C#
Raw Permalink Normal View History

2026-03-25 18:20:24 +08:00
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;
}
}