Files
2026-01-16 15:10:19 +01:00

193 lines
7.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebWindowTest.Json;
using static WebWindowTest.Json.WindowConst;
namespace WebWindowTest.Models
{
public class FrameDimension:AreaDimension
{
#region Public Constructors
public FrameDimension(Frame ParentFrame, int nIndex, string sName, double dDimension, bool bIsLen) : base(dDimension, MeasureTypes.ABSOLUTE)
{
m_ParentFrame = ParentFrame;
m_nIndex = nIndex;
m_sName = sName;
m_bIsLen = bIsLen;
}
#endregion Public Constructors
#region Public Properties
public override double dDimension
{
get
{
return m_dDimension;
}
set
{
if(dDimension != value)
{
if (ParentFrame.SelShapeIndex == (int)Shapes.RECTANGLE ||
ParentFrame.SelShapeIndex == (int)Shapes.RIGHTCHAMFER ||
ParentFrame.SelShapeIndex == (int)Shapes.LEFTCHAMFER ||
ParentFrame.SelShapeIndex == (int)Shapes.DOUBLECHAMFER ||
ParentFrame.SelShapeIndex == (int)Shapes.TRIANGLE)
{
if (value > MaxDim)
{
m_dDimension = MaxDim;
}
else if (value < MinDim && !m_sName.Equals("Radius") && !m_sName.Equals("Height projection"))
{
m_dDimension = MinDim;
}
else
m_dDimension = value;
}
else
{
var widthArea = (ParentFrame.DimensionList.First(x => x.sName.Equals("Width"))).m_dDimension;
if (ParentFrame.SelShapeIndex == (int)Shapes.ARC_FULL)
{
var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension;
if (sName.Equals("Height") && value > 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Width") && height > 0.5 * value && value > MinDim)
{
m_dDimension = value;
}
}
else if (ParentFrame.SelShapeIndex == (int)Shapes.ARC)
{
var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension;
var fullHeight = ParentFrame.DimensionList.First(x => x.sName.Equals("Full Height")).m_dDimension;
if (sName.Equals("Full Height") && (value - height) < 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Height") && (fullHeight - value) < 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Width") && (fullHeight - height) < 0.5 * value && value < MaxDim)
{
m_dDimension = value;
}
}
else if (ParentFrame.SelShapeIndex == (int)Shapes.THREECENTERARC)
{
var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension;
var fullHeight = ParentFrame.DimensionList.First(x => x.sName.Equals("Full Height")).m_dDimension;
if (sName.Equals("Full Height") && (value - height) < 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Height") && (fullHeight - value) < 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Width") && (fullHeight - height) < 0.5 * value)
{
m_dDimension = value;
}
else if (sName.Equals("Radius") && value < 0.5 * widthArea)
{
m_dDimension = value;
}
}
else if (ParentFrame.SelShapeIndex == (int)Shapes.DOUBLEARC)
{
var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension;
var fullHeight = ParentFrame.DimensionList.First(x => x.sName.Equals("Full Height")).m_dDimension;
if (sName.Equals("Full Height") && (value - height) > 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Height") && (fullHeight - value) > 0.5 * widthArea && value < MaxDim)
{
m_dDimension = value;
}
else if (sName.Equals("Width") && (fullHeight - height) > 0.5 * value && value > MinDim)
{
m_dDimension = value;
}
}
}
if (ParentFrame.AreaList.Count > 0 && sName.Equals("Width"))
ParentFrame.SearchAreaList(ParentFrame, dDimension, "Width");
else
ParentFrame.SearchAreaList(ParentFrame, dDimension, "Height");
}
}
}
public int nIndex
{
get
{
return m_nIndex;
}
}
public Frame ParentFrame
{
get
{
return m_ParentFrame;
}
}
public string sName
{
get
{
return m_sName;
}
}
#endregion Public Properties
#region Internal Methods
internal JsonFrameDimension Serialize()
{
JsonFrameDimension JsonFrameDimension = new JsonFrameDimension(m_nIndex, m_sName, m_dDimension);
return JsonFrameDimension;
}
#endregion Internal Methods
#region Protected Fields
protected Frame m_ParentFrame;
#endregion Protected Fields
#region Private Fields
private bool m_bIsLen = false;
//private double m_dDimension;
private int m_nIndex;
private string m_sName;
// valore massimo della dimensione del frame
private int MaxDim = 4000;
// valore minimo della dimensione del frame
private int MinDim = 600;
#endregion Private Fields
}
}