77 lines
2.5 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|