193 lines
7.5 KiB
C#
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
|
|
}
|
|
} |