46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|