using Misc;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;

namespace FLY.Thick.Blowing.Common
{
    /// <summary>
    /// 
    /// </summary>
    public class BlowingFixProfileParam : INotifyPropertyChanged,Misc.ICopiable,ICloneable
    {

        #region 正常运行参数
        /// <summary>
        /// 产品名称
        /// </summary>
        public string PName { get; set; }= "pname";
        /// <summary>
        /// 订单号
        /// </summary>
        public string OrderNo { get; set; } = "00000001";
        /// <summary>
        /// 卷号
        /// </summary>
        public string Number { get; set; } = "1";
        /// <summary>
        /// 目标值
        /// </summary>
        public double Target { get; set; } = 100;

        /// <summary>
        /// 公差%
        /// </summary>
        public double TolerancePercent { get; set; } = 0.03;

        /// <summary>
        /// 斜率补偿
        /// </summary>
        public double K { get; set; } = 1;


        #endregion
        #region 吹膜定点解方程用
        /// <summary>
        /// 测量模式
        /// </summary>
        public MeasureMode MMode { get; set; } = MeasureMode.Edge; 

        /// <summary>
        /// 膜宽 单位 mm, 收卷时,切膜前,测量的宽度
        /// </summary>
        public int FilmWidth { get; set; } = 1180;

        /// <summary>
        /// 探头所在膜的横向位置 单位 mm
        /// </summary>
        public int FilmPosH { get; set; } = 70;

        /// <summary>
        /// 探头测量位置,袋折叠的宽度 单位 mm
        /// </summary>
        public int BagFold0 { get; set; } = 405;

        /// <summary>
        /// 另一端 袋折叠的宽度 单位 mm
        /// </summary>
        public int BagFold1 { get; set; } = 415;

        #endregion
        public event PropertyChangedEventHandler PropertyChanged;

        public object Clone()
        {
            BlowingFixProfileParam p = new BlowingFixProfileParam();
            p.Copy(this);
            return p;
        }

        public void Copy(object src)
        {
            Misc.PropertiesManager.CopyTo(src, this);
        }
    }

    /// <summary>
    /// 测量模式
    /// </summary>
    public enum MeasureMode
    {
        /// <summary>
        /// 不解方程,探头距离膜边 0mm
        /// </summary>
        Edge,
        /// <summary>
        /// 一般模型,探头测双层
        /// </summary>
        Normal,
        /// <summary>
        /// 垃圾袋,两边凹进去,探头测4层
        /// </summary>
        Bag
    }
}