Files
wg_cpso/RBFMorphing/BasePart.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 class BasePart : AbstractClass
{
[NonSerialized]
private readonly FeMesh _mesh;
public BasePart(FeMesh mesh, CaeMesh.BasePart part) : base(EnumMorphMethod.Part)
{
if (mesh == null || part == null) throw new ArgumentNullException(nameof(BasePart));
if (!mesh.Parts.ContainsKey(part.Name)) throw new ArgumentException(nameof(BasePart));
_mesh = mesh;
if (mesh.Parts.ContainsKey(part.Name))
{
Name = part.Name;
}
}
public override List<FeNode> GetNodes()
{
List<FeNode> nodes = new List<FeNode>();
if (_mesh.Parts.TryGetValue(_name, out var basePart))
{
foreach (var id in basePart.NodeLabels)
{
if(_mesh.Nodes.TryGetValue(id, out var node))
nodes.Add(node);
}
}
return nodes;
}
public override int[] Labels => _mesh.Parts.TryGetValue(_name, out var basePart) ? basePart.NodeLabels : null;
public override int Length => _mesh.Parts.TryGetValue(_name, out var basePart) ? basePart.NodeLabels.Length : 0;
}
}