Files
2026-03-25 18:20:24 +08:00

77 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CaeModel;
using CaeMesh;
namespace FileInOut.Output.Calculix
{
[Serializable]
internal class CalElementSet : CalculixKeyword
{
// Variables
private FeGroup _elementSet;
private string[] _partNames;
// Properties
// Constructor
public CalElementSet(FeGroup elementSet)
: this(elementSet, null)
{
}
public CalElementSet(FeGroup elementSet, FeModel model)
{
_elementSet = elementSet;
if (model != null && _elementSet is FeElementSet es && es.CreatedFromParts)
_partNames = model.Mesh.GetPartNamesFromPartIds(es.Labels);
else _partNames = null;
}
// Methods
public override string GetKeywordString()
{
return string.Format("*Elset, Elset={0}{1}", _elementSet.Name, Environment.NewLine);
}
public override string GetDataString()
{
StringBuilder sb = new StringBuilder();
int count = 0;
if (_partNames != null)
{
foreach (var partName in _partNames)
{
sb.Append(partName);
if (count < _partNames.Length - 1)
{
sb.Append(", ");
if (++count % 1 == 0) sb.AppendLine();
}
}
}
else
{
int[] sorted = _elementSet.Labels.ToArray();
Array.Sort(sorted);
//
foreach (var elementId in sorted)
{
sb.Append(elementId);
if (count < sorted.Length - 1)
{
sb.Append(", ");
if (++count % 16 == 0) sb.AppendLine();
}
}
}
sb.AppendLine();
return sb.ToString();
}
}
}