116 lines
4.3 KiB
C#
116 lines
4.3 KiB
C#
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));
|
|
}
|
|
|
|
}
|
|
}
|