Files
wg_cpso/CaeMesh/Meshing/Common/ThickenShellMesh.cs

116 lines
4.3 KiB
C#
Raw Permalink Normal View History

2026-03-25 18:20:24 +08:00
using CaeGlobals;
using CaeMesh.Meshing;
using Octree;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace CaeMesh
{
[Serializable]
public class ThickenShellMesh : MeshSetupItem, ISerializable
{
// Variables
private string[] _partNames; //ISerializable
private double _thickness; //ISerializable
private int _numberOfLayers; //ISerializable
private double _offset; //ISerializable
private bool _keepModelEdges; //ISerializable
// Properties
public string[] PartNames { get { return _partNames; } set { _partNames = value; } }
public double Thickness
{
get { return _thickness; }
set
{
if (value < 0) throw new CaeException("Thickness must be larger than 0.");
_thickness = value;
}
}
public int NumberOfLayers
{
get { return _numberOfLayers; }
set
{
if (value < 0) throw new CaeException("Number of layers must be larger than 0.");
_numberOfLayers = value;
}
}
public double Offset { get { return _offset; } set { _offset = value; } }
public bool KeepModelEdges { get { return _keepModelEdges; } set { _keepModelEdges = value; } }
// Constructors
public ThickenShellMesh(string name)
: base(name)
{
Reset();
}
public ThickenShellMesh(ThickenShellMesh thickenShellMesh)
: base("tmpName")
{
CopyFrom(thickenShellMesh);
}
public ThickenShellMesh(SerializationInfo info, StreamingContext context)
: base(info, context)
{
foreach (SerializationEntry entry in info)
{
switch (entry.Name)
{
case "_partNames":
_partNames = (string[])entry.Value; break;
case "_thickness":
_thickness = (double)entry.Value; break;
case "_numberOfLayers":
_numberOfLayers = (int)entry.Value; break;
case "_offset":
_offset = (double)entry.Value; break;
case "_keepModelEdges":
_keepModelEdges = (bool)entry.Value; break;
default:
break;
}
}
}
// Methods
public override void Reset()
{
_partNames = null;
_thickness = 1;
_numberOfLayers = 1;
_offset = 0;
_keepModelEdges = true;
}
public void CopyFrom(ThickenShellMesh thickenShellMesh)
{
base.CopyFrom(thickenShellMesh);
//
_partNames = thickenShellMesh.PartNames != null ? thickenShellMesh.PartNames.ToArray() : null;
_thickness = thickenShellMesh.Thickness;
_numberOfLayers = thickenShellMesh.NumberOfLayers;
_offset = thickenShellMesh.Offset;
_keepModelEdges = thickenShellMesh.KeepModelEdges;
}
// ISerialization
public new void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
// Using typeof() works also for null fields
info.AddValue("_partNames", _partNames, typeof(string[]));
info.AddValue("_thickness", _thickness, typeof(double));
info.AddValue("_numberOfLayers", _numberOfLayers, typeof(int));
info.AddValue("_offset", _offset, typeof(double));
info.AddValue("_keepModelEdges", _keepModelEdges, typeof(bool));
}
}
}