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 GetNodes() { List nodes = new List(); 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; } }