public void CopyTo(ModelList Dst)
        {
            if (Dst != null)
            {
                Dst.Enable       = this.Enable;
                Dst.SearchIndex  = this.SearchIndex;
                Dst.strName      = this.strName;
                Dst.Model        = this.Model;
                Dst.ParamModel   = this.ParamModel;
                Dst.ParamPattern = this.ParamPattern;
                Dst.strImgPath   = this.strImgPath;
                Dst.MillingCount = this.MillingCount;
                Dst.Algorithm    = this.Algorithm;

                Dst.strLoadingPath     = this.strLoadingPath;
                Dst.LoadingTheta       = this.LoadingTheta;
                Dst.LoadingThetaEnable = this.LoadingThetaEnable;
                Dst.LoadingMarkWidth   = this.LoadingMarkWidth;
                Dst.LoadingMarkHeight  = this.LoadingMarkHeight;
                Dst.LoadingParam       = this.LoadingParam;

                Dst.UseGlobalLoading    = this.UseGlobalLoading;
                Dst.UseGlobalPolishing  = this.UseGlobalPolishing;
                Dst.UseGlobalInspection = this.UseGlobalInspection;

                Dst.LoadingLightIR               = this.LoadingLightIR;
                Dst.LoadingLightWhite            = this.LoadingLightWhite;
                Dst.LoadingLightIRFilter         = this.LoadingLightIRFilter;
                Dst.LoadingCameraExposureTime    = this.LoadingCameraExposureTime;
                Dst.LoadingCameraGain            = this.LoadingCameraGain;
                Dst.PolishingLightIR             = this.PolishingLightIR;
                Dst.PolishingLightWhite          = this.PolishingLightWhite;
                Dst.PolishingLightIRFilter       = this.PolishingLightIRFilter;
                Dst.PolishingCameraExposureTime  = this.PolishingCameraExposureTime;
                Dst.PolishingCameraGain          = this.PolishingCameraGain;
                Dst.InspectionLightIR            = this.InspectionLightIR;
                Dst.InspectionLightWhite         = this.InspectionLightWhite;
                Dst.InspectionLightIRFilter      = this.InspectionLightIRFilter;
                Dst.InspectionCameraExposureTime = this.InspectionCameraExposureTime;
                Dst.InspectionCameraGain         = this.InspectionCameraGain;

                Dst.Inspection = this.Inspection;

                for (int i = 0; i < this.Milling.Length; i++)
                {
                    if (Dst.Milling[i] == null)
                    {
                        Dst.Milling[i] = new MillingList();
                    }
                    this.Milling[i].CopyTo(Dst.Milling[i]);
                }
            }
        }
        public bool Compare(ModelList list)
        {
            bool bRtn = false;

            bRtn |= Enable != list.Enable;
            bRtn |= SearchIndex != list.SearchIndex;
            bRtn |= strName != list.strName;
            bRtn |= Model.X != list.Model.X;
            bRtn |= Model.Y != list.Model.Y;
            bRtn |= Model.Width != list.Model.Width;
            bRtn |= Model.Height != list.Model.Height;

            bRtn |= strLoadingPath != list.strLoadingPath;
            bRtn |= LoadingTheta != list.LoadingTheta;
            bRtn |= LoadingParam.DetailLevel != list.LoadingParam.DetailLevel;
            bRtn |= LoadingParam.Smoothness != list.LoadingParam.Smoothness;
            bRtn |= LoadingParam.Acceptance != list.LoadingParam.Acceptance;
            bRtn |= LoadingParam.AcceptanceTarget != list.LoadingParam.AcceptanceTarget;
            bRtn |= LoadingParam.Angle != list.LoadingParam.Angle;
            bRtn |= LoadingParam.AngleDeltaNeg != list.LoadingParam.AngleDeltaNeg;
            bRtn |= LoadingParam.AngleDeltaPos != list.LoadingParam.AngleDeltaPos;
            bRtn |= LoadingParam.Certainty != list.LoadingParam.Certainty;
            bRtn |= LoadingParam.CertaintyTarget != list.LoadingParam.CertaintyTarget;
            bRtn |= LoadingParam.Scale != list.LoadingParam.Scale;
            bRtn |= LoadingParam.ScaleMaxFactor != list.LoadingParam.ScaleMaxFactor;
            bRtn |= LoadingParam.ScaleMinFactor != list.LoadingParam.ScaleMinFactor;
            bRtn |= LoadingParam.SearchScaleRange != list.LoadingParam.SearchScaleRange;
            bRtn |= LoadingParam.Speed != list.LoadingParam.Speed;
            bRtn |= LoadingParam.SearchOffsetX != list.LoadingParam.SearchOffsetX;
            bRtn |= LoadingParam.SearchOffsetY != list.LoadingParam.SearchOffsetY;
            bRtn |= LoadingParam.SearchSizeX != list.LoadingParam.SearchSizeX;
            bRtn |= LoadingParam.SearchSizeY != list.LoadingParam.SearchSizeY;
            bRtn |= LoadingMarkWidth != list.LoadingMarkWidth;
            bRtn |= LoadingMarkHeight != list.LoadingMarkHeight;

            bRtn |= Inspection.ROIX != list.Inspection.ROIX;
            bRtn |= Inspection.ROIY != list.Inspection.ROIY;
            bRtn |= Inspection.ROIW != list.Inspection.ROIW;
            bRtn |= Inspection.ROIH != list.Inspection.ROIH;
            bRtn |= Inspection.Algorithm != list.Inspection.Algorithm;
            bRtn |= Inspection.RefDistance != list.Inspection.RefDistance;
            bRtn |= Inspection.Sigma != list.Inspection.Sigma;
            bRtn |= Inspection.Threshold != list.Inspection.Threshold;
            bRtn |= Inspection.LowThreshold != list.Inspection.LowThreshold;
            bRtn |= Inspection.HighThreshold != list.Inspection.HighThreshold;

            bRtn |= LoadingLightIR != list.LoadingLightIR;
            bRtn |= LoadingLightWhite != list.LoadingLightWhite;
            bRtn |= LoadingLightIRFilter != list.LoadingLightIRFilter;
            bRtn |= LoadingCameraExposureTime != list.LoadingCameraExposureTime;
            bRtn |= LoadingCameraGain != list.LoadingCameraGain;
            bRtn |= PolishingLightIR != list.PolishingLightIR;
            bRtn |= PolishingLightWhite != list.PolishingLightWhite;
            bRtn |= PolishingLightIRFilter != list.PolishingLightIRFilter;
            bRtn |= PolishingCameraExposureTime != list.PolishingCameraExposureTime;
            bRtn |= PolishingCameraGain != list.PolishingCameraGain;
            bRtn |= InspectionLightIR != list.InspectionLightIR;
            bRtn |= InspectionLightWhite != list.InspectionLightWhite;
            bRtn |= InspectionLightIRFilter != list.InspectionLightIRFilter;
            bRtn |= InspectionCameraExposureTime != list.InspectionCameraExposureTime;
            bRtn |= InspectionCameraGain != list.InspectionCameraGain;

            for (int i = 0; i < 10; i++)
            {
                bRtn |= Milling[i].Enable != list.Milling[i].Enable;
                bRtn |= Milling[i].MilRect.X != list.Milling[i].MilRect.X;
                bRtn |= Milling[i].MilRect.Y != list.Milling[i].MilRect.Y;
                bRtn |= Milling[i].MilRect.Width != list.Milling[i].MilRect.Width;
                bRtn |= Milling[i].MilRect.Height != list.Milling[i].MilRect.Height;
                bRtn |= Milling[i].Pitch != list.Milling[i].Pitch;
                bRtn |= Milling[i].Cycle != list.Milling[i].Cycle;
                bRtn |= Milling[i].StartPos != list.Milling[i].StartPos;
                bRtn |= Milling[i].Force != list.Milling[i].Force;
                bRtn |= Milling[i].Tilt != list.Milling[i].Tilt;
                bRtn |= Milling[i].RPM != list.Milling[i].RPM;
                bRtn |= Milling[i].Speed != list.Milling[i].Speed;
                bRtn |= Milling[i].PathCount != list.Milling[i].PathCount;
                bRtn |= Milling[i].ToolChange != list.Milling[i].ToolChange;
                bRtn |= Milling[i].UtilFill != list.Milling[i].UtilFill;
                bRtn |= Milling[i].UtilDrain != list.Milling[i].UtilDrain;
                bRtn |= Milling[i].UtilType != list.Milling[i].UtilType;
                bRtn |= Milling[i].MillingImage != list.Milling[i].MillingImage;
                bRtn |= Milling[i].EPD != list.Milling[i].EPD;
                bRtn |= Milling[i].ToolType != list.Milling[i].ToolType;
            }
            bRtn |= ParamModel.DetailLevel != list.ParamModel.DetailLevel;
            bRtn |= ParamModel.Smoothness != list.ParamModel.Smoothness;
            bRtn |= ParamModel.Acceptance != list.ParamModel.Acceptance;
            bRtn |= ParamModel.AcceptanceTarget != list.ParamModel.AcceptanceTarget;
            bRtn |= ParamModel.Angle != list.ParamModel.Angle;
            bRtn |= ParamModel.AngleDeltaNeg != list.ParamModel.AngleDeltaNeg;
            bRtn |= ParamModel.AngleDeltaPos != list.ParamModel.AngleDeltaPos;
            bRtn |= ParamModel.Certainty != list.ParamModel.Certainty;
            bRtn |= ParamModel.CertaintyTarget != list.ParamModel.CertaintyTarget;
            bRtn |= ParamModel.Scale != list.ParamModel.Scale;
            bRtn |= ParamModel.ScaleMaxFactor != list.ParamModel.ScaleMaxFactor;
            bRtn |= ParamModel.ScaleMinFactor != list.ParamModel.ScaleMinFactor;
            bRtn |= ParamModel.SearchScaleRange != list.ParamModel.SearchScaleRange;
            bRtn |= ParamModel.Speed != list.ParamModel.Speed;
            bRtn |= ParamModel.SearchOffsetX != list.ParamModel.SearchOffsetX;
            bRtn |= ParamModel.SearchOffsetY != list.ParamModel.SearchOffsetY;
            bRtn |= ParamModel.SearchSizeX != list.ParamModel.SearchSizeX;
            bRtn |= ParamModel.SearchSizeY != list.ParamModel.SearchSizeY;

            bRtn |= ParamPattern.Acceptance != list.ParamPattern.Acceptance;
            bRtn |= ParamPattern.Certainty != list.ParamPattern.Certainty;
            bRtn |= ParamPattern.AngleMode != list.ParamPattern.AngleMode;
            bRtn |= ParamPattern.NegativeDelta != list.ParamPattern.NegativeDelta;
            bRtn |= ParamPattern.PositiveDelta != list.ParamPattern.PositiveDelta;
            bRtn |= ParamPattern.Angle != list.ParamPattern.Angle;
            bRtn |= ParamPattern.Tolerance != list.ParamPattern.Tolerance;
            bRtn |= ParamPattern.Accuracy != list.ParamPattern.Accuracy;
            bRtn |= ParamPattern.InterpolationMode != list.ParamPattern.InterpolationMode;
            bRtn |= ParamPattern.SearchOffsetX != list.ParamPattern.SearchOffsetX;
            bRtn |= ParamPattern.SearchOffsetY != list.ParamPattern.SearchOffsetY;
            bRtn |= ParamPattern.SearchSizeX != list.ParamPattern.SearchSizeX;
            bRtn |= ParamPattern.SearchSizeY != list.ParamPattern.SearchSizeY;

            bRtn |= strImgPath != list.strImgPath;
            bRtn |= MillingCount != list.MillingCount;
            bRtn |= Algorithm != list.Algorithm;
            return(bRtn);
        }