duheng
2024-10-25 93f5c18553c036768ef6202547eeb899511fd50a
修改阀门匹配逻辑
已修改24个文件
445 ■■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ElbowMatchingViewModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/03-valve/01-valvesinglematching/ValveSingleMatchingForm.Designer.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/03-valve/01-valvesinglematching/ValveSingleMatchingForm.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/03-valve/XhsProjectSimulationValveMatchingViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/01-pipesinglematching/PipeSingMatchingDlg.Designer.cs 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/01-pipesinglematching/PipeSingMatchingDlg.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/01-pipesinglematching/PipeSingleMatchingForm.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/XhsProjectSimulationPipeMatchingViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingMatchingDlg.Designer.cs 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingMatchingDlg.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingleMatchingForm.Designer.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingleMatchingForm.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingleMatchingViewModel.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/XhsProjectSimulationElbowsMatchingViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/01-threelinksinglematching/ThreeLinkSingMatchingDlg.Designer.cs 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/01-threelinksinglematching/ThreeLinkSingMatchingDlg.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/01-threelinksinglematching/ThreeLinkSingleMatchingForm.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/XhsProjectSimulationThreelinkMatchingViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/01-threelinksinglematching/FourLinkSingMatchingDlg.Designer.cs 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/01-threelinksinglematching/FourLinkSingMatchingDlg.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/01-threelinksinglematching/FourLinkSingleMatchingForm.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/XhsProjectSimulationFourlinkMatchingViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingHelper.cs
@@ -211,29 +211,55 @@
                return true;
            }
            HStation.Vmo.AssetsValveMainVmo vmo = null;
            int firstCount = 0;
            //口径最小差值
            // 绝对匹配
            adaptingManageVmos = adaptingManageVmos.Where(x => x.Type.ToString() == input.ValveType).ToList();
            var nameMatching = adaptingManageVmos.Where(x => GetIntersect(x.KeyWord == string.Empty
    ? x.Name : x.KeyWord, input.ModelType) >= 2)
    ? x.Name : x.KeyWord, input.ModelType) >= 1)
    .OrderByDescending(x => GetIntersect(x.KeyWord == string.Empty ? x.Name : x.KeyWord, input.ModelType))
    .ToList();//使用型号名或者关键字找出相同字符在2以上并且进行排序
            if (nameMatching.Count > 0)
            {
                /*      var absoluteMatch = nameMatching.Where(i =>
                ((i.Caliber == null) || i.Caliber == input.Diameter) &&
                 ((input.MaterialName == null && i.MaterialName == null) || i.MaterialName == input.MaterialName)).ToList();
                      if (absoluteMatch.Count > 1)
                      {
                      }*/
                var absoluteMatching = nameMatching.Where(i =>
              ((i.Caliber == null) || Math.Abs(Convert.ToInt64(i.Caliber) - input.Diameter) <= _caliberTolerance) &&  //直径约束
               i.MaterialName == input.Material &&  //材料约束
                 (i.ValveLift == input.ValveLift || Math.Abs(Convert.ToInt64(i.ValveLift) - Convert.ToInt64(input.ValveLift)) <= _valveLift)  //阀门开度约束
                ).ToList();
                if (absoluteMatching.Count > 1)
                {
                    return false;
                }
                else if (absoluteMatching.Count == 1)
                {
                    vmo = absoluteMatching.First();
                }
                else
                    return false;
            }
            else if (nameMatching.Count == 1)
            {
                vmo = nameMatching.First();
            }
            else
            {
                var absoluteMatching = adaptingManageVmos.Where(i =>
          ((i.Caliber == null) || Math.Abs(Convert.ToInt64(i.Caliber) - input.Diameter) <= _caliberTolerance) &&  //直径约束
           i.MaterialName == input.Material &&  //材料约束
             (i.ValveLift == input.ValveLift || Math.Abs(Convert.ToInt64(i.ValveLift) - Convert.ToInt64(input.ValveLift)) <= _valveLift)  //阀门开度约束
            ).ToList();
                if (absoluteMatching.Count > 1)
                {
                    return false;
                }
                else if (absoluteMatching.Count == 1)
                {
                    vmo = absoluteMatching.First();
                }
                else
                    return false;
            }
            var absoluteMatch = adaptingManageVmos.Where(i =>
            /*var absoluteMatch = adaptingManageVmos.Where(i =>
              ((i.Caliber == null) || i.Caliber == input.Diameter) &&
               ((input.Material == null && i.MaterialName == null) || i.MaterialName == input.Material)).ToList();
            if (absoluteMatch.Count > 1)
@@ -247,10 +273,10 @@
                    return false;//通过型号名没有找到,则视为没有匹配到
                foreach (var item in allMatchingList)
                {
                    /*   if (item.IsDefault)
                       {
                           vmo = item;
                       }*/
                    if (item.IsDefault)
                    {
                        vmo = item;
                    }
                }
                vmo = allMatchingList.First();//如果没有设置默认值,则默认返回匹配字符最多的一条数据
            }
@@ -299,16 +325,16 @@
                        return false;//通过型号名没有找到,则视为没有匹配到
                    foreach (var item in allMatchingList)
                    {
                        /*    if (item.IsDefault)
                            {
                                vmo = item;
                            }*/
                        if (item.IsDefault)
                        {
                            vmo = item;
                        }
                    }
                    vmo = allMatchingList.First();//如果没有设置默认值,则默认返回匹配字符最多的一条数据
                }
            }
            //口径和材料都没有匹配上,就用型号名匹配
            firstCount = 0;
            firstCount = 0;*/
            if (vmo != null)
            {
                input.MatchingMinorLoss = vmo.Coefficient;
@@ -316,7 +342,7 @@
                input.MatchingDiameter = vmo.Caliber;
                input.MatchingMaterial = vmo.MaterialName;
                input.MatchingModelType = vmo.Name;
                //  input.MatchingValveSetting =
                input.MatchingValveSetting = vmo.ValveSetting;
                input.MatchingValveLift = vmo.ValveLift;
                input.MatchingValveType = vmo.Type.ToString();
                return true;
@@ -723,7 +749,7 @@
        public static int GetIntersect(string str1, string str2)
        {
            if (str1 == null || str2 == null) return 0;
            var a = string.Join("", str1.Intersect(str2)).Count();
            return string.Join("", str1.Intersect(str2)).Count();
        }
    }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ElbowMatchingViewModel.cs
@@ -120,9 +120,9 @@
        public double? MatchingMinorLoss { get; set; }
        /// <summary>
        /// 管路连接长度
        /// 弯头类型
        /// </summary>
        [DisplayName("匹配连接长度")]
        [DisplayName("弯头类型")]
        [Browsable(true)]
        public eLengthType? MatchingConnectionLength { get; set; }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/01-viewmodel/ValveMatchingViewModel.cs
@@ -96,7 +96,7 @@
        /// </summary>
        [DisplayName("阀门开度")]
        [Browsable(true)]
        public int ValveLift { get; set; }
        public int? ValveLift { get; set; }
        /// <summary>
        /// 匹配型号
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/03-valve/01-valvesinglematching/ValveSingleMatchingForm.Designer.cs
@@ -209,8 +209,7 @@
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.RowCellClick += gridView1_RowCellClick;
            gridView1.FocusedRowChanged += gridView1_FocusedRowChanged;
            //
             //
            // ColShowChart
            // 
            ColShowChart.AppearanceCell.Options.UseTextOptions = true;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/03-valve/01-valvesinglematching/ValveSingleMatchingForm.cs
@@ -110,11 +110,6 @@
            this.gridControl1.DataSource = _allPhartList;
        }
        //曲线列表选择项切换事件
        private async void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
        }
        //查看曲线
        private async void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
@@ -127,10 +122,10 @@
                    if (vmo != null)
                    {
                        _pumpMatchingViewModel.MatchingChartDbId = vm.ID.ToString();
                        var graph_qh = vmo.Diagram.GraphList.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.ValveQL);
                        if (graph_qh != null)
                        var graph_ql = vmo.Diagram.GraphList.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.ValveQL);
                        if (graph_ql != null)
                        {
                            var points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 100, null);
                            var points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_ql.GraphType, graph_ql.GeometryInfo, 100, null);
                            _pumpMatchingViewModel.MatchingCurveQL = new List<CurvePointMatchingViewModel>();
                            foreach (var item in points_qh)
                            {
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/03-valve/XhsProjectSimulationValveMatchingViewModel.cs
@@ -15,6 +15,7 @@
            this.Material = rhs.Material;
            this.Caliber = rhs.Diameter;
            this.Code = rhs.Code;
            this.Name = rhs.Name;
            this.DbId = rhs.DbId;
            this.ModelType = rhs.ModelType;
            this.MatchingDiameter = rhs.MatchingDiameter.ToString();
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/01-pipesinglematching/PipeSingMatchingDlg.Designer.cs
@@ -29,21 +29,21 @@
        private void InitializeComponent()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            pipeLineSingleMatchingForm1 = new PipeSingleMatchingForm();
            btnComplete = new SimpleButton();
            btnCancel = new SimpleButton();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            pipeLineSingleMatchingForm1 = new   PipeSingleMatchingForm();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            SuspendLayout();
            // 
            // layoutControl1
@@ -59,6 +59,13 @@
            layoutControl1.Size = new Size(747, 432);
            layoutControl1.TabIndex = 6;
            layoutControl1.Text = "layoutControl1";
            //
            // pipeLineSingleMatchingForm1
            //
            pipeLineSingleMatchingForm1.Location = new Point(2, 2);
            pipeLineSingleMatchingForm1.Name = "pipeLineSingleMatchingForm1";
            pipeLineSingleMatchingForm1.Size = new Size(743, 402);
            pipeLineSingleMatchingForm1.TabIndex = 0;
            // 
            // btnComplete
            // 
@@ -76,7 +83,7 @@
            // 
            // btnCancel
            // 
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Danger;
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
            btnCancel.Appearance.Options.UseBackColor = true;
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.Location = new Point(641, 408);
@@ -97,6 +104,23 @@
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(747, 432);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = pipeLineSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            // 
            // itemForCancel
            // 
@@ -122,46 +146,22 @@
            itemForComplete.TextSize = new Size(0, 0);
            itemForComplete.TextVisible = false;
            // 
            // elbowSingleMatchingForm1
            //
            pipeLineSingleMatchingForm1.Location = new Point(2, 2);
            pipeLineSingleMatchingForm1.Name = "pipeLineSingleMatchingForm1";
            pipeLineSingleMatchingForm1.Size = new Size(743, 402);
            pipeLineSingleMatchingForm1.TabIndex = 0;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = pipeLineSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // PipeSingMatchingDlg
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(747, 432);
            Controls.Add(layoutControl1);
            Name = "PipeLineSingMatchingDlg";
            Name = "PipeSingMatchingDlg";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "管道匹配";
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ResumeLayout(false);
        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/01-pipesinglematching/PipeSingMatchingDlg.cs
@@ -5,6 +5,7 @@
        public PipeSingMatchingDlg()
        {
            InitializeComponent();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
        }
        public event Action<PipeMatchingViewModel> ReloadDataEvent;
@@ -21,6 +22,7 @@
        private void btnComplete_Click(object sender, EventArgs e)
        {
            ReloadDataEvent.Invoke(_ValveMatchingView);
            this.Close();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/01-pipesinglematching/PipeSingleMatchingForm.cs
@@ -5,6 +5,7 @@
        public PipeSingleMatchingForm()
        {
            InitializeComponent();
            this.gridView3.SetNormalView();
        }
        private PipeMatchingViewModel _pipeMatchingViewModel;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/04-pipe/XhsProjectSimulationPipeMatchingViewModel.cs
@@ -15,6 +15,7 @@
            this.Material = rhs.Material;
            this.Caliber = rhs.Diameter;
            this.Code = rhs.Code;
            this.Name = rhs.Name;
            this.Dbid = rhs.DbId;
            this.ModelType = rhs.ModelType;
            this.eAlgorithmType = rhs.eAlgorithmType;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingMatchingDlg.Designer.cs
@@ -29,21 +29,21 @@
        private void InitializeComponent()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            elbowSingleMatchingForm1 = new ElbowSingleMatchingForm();
            btnComplete = new SimpleButton();
            btnCancel = new SimpleButton();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            elbowSingleMatchingForm1 = new ElbowSingleMatchingForm();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            SuspendLayout();
            // 
            // layoutControl1
@@ -59,6 +59,13 @@
            layoutControl1.Size = new Size(747, 432);
            layoutControl1.TabIndex = 6;
            layoutControl1.Text = "layoutControl1";
            //
            // elbowSingleMatchingForm1
            //
            elbowSingleMatchingForm1.Location = new Point(2, 2);
            elbowSingleMatchingForm1.Name = "elbowSingleMatchingForm1";
            elbowSingleMatchingForm1.Size = new Size(743, 402);
            elbowSingleMatchingForm1.TabIndex = 0;
            // 
            // btnComplete
            // 
@@ -76,7 +83,7 @@
            // 
            // btnCancel
            // 
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Danger;
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
            btnCancel.Appearance.Options.UseBackColor = true;
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.Location = new Point(641, 408);
@@ -97,6 +104,23 @@
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(747, 432);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = elbowSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            // 
            // itemForCancel
            // 
@@ -122,46 +146,22 @@
            itemForComplete.TextSize = new Size(0, 0);
            itemForComplete.TextVisible = false;
            // 
            // elbowSingleMatchingForm1
            //
            elbowSingleMatchingForm1.Location = new Point(2, 2);
            elbowSingleMatchingForm1.Name = "pipeLineSingleMatchingForm1";
            elbowSingleMatchingForm1.Size = new Size(743, 402);
            elbowSingleMatchingForm1.TabIndex = 0;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = elbowSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // PipeSingMatchingDlg
            // ElbowSingMatchingDlg
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(747, 432);
            Controls.Add(layoutControl1);
            Name = "PipeLineSingMatchingDlg";
            Name = "ElbowSingMatchingDlg";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "管道匹配";
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ResumeLayout(false);
        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingMatchingDlg.cs
@@ -5,6 +5,7 @@
        public ElbowSingMatchingDlg()
        {
            InitializeComponent();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
        }
        public event Action<ElbowMatchingViewModel> ReloadDataEvent;
@@ -21,6 +22,7 @@
        private void btnComplete_Click(object sender, EventArgs e)
        {
            ReloadDataEvent.Invoke(_ValveMatchingView);
            this.Close();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingleMatchingForm.Designer.cs
@@ -42,6 +42,8 @@
            simpleLabelItem1 = new DevExpress.XtraLayout.SimpleLabelItem();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
            colConnectionLength = new DevExpress.XtraGrid.Columns.GridColumn();
            colAngle = new DevExpress.XtraGrid.Columns.GridColumn();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)gridControl3).BeginInit();
@@ -63,7 +65,7 @@
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(713, 300, 650, 400);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(1343, 607);
            layoutControl1.Size = new Size(769, 577);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            // 
@@ -73,7 +75,7 @@
            gridControl3.Location = new Point(2, 26);
            gridControl3.MainView = gridView3;
            gridControl3.Name = "gridControl3";
            gridControl3.Size = new Size(1339, 579);
            gridControl3.Size = new Size(765, 549);
            gridControl3.TabIndex = 4;
            gridControl3.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView3 });
            // 
@@ -85,7 +87,7 @@
            // 
            gridView3.Appearance.HeaderPanel.Options.UseTextOptions = true;
            gridView3.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            gridView3.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colModelType, colMaterial, colCaliber, colMinorLoss });
            gridView3.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colModelType, colMaterial, colCaliber, colMinorLoss, colConnectionLength, colAngle });
            gridView3.GridControl = gridControl3;
            gridView3.Name = "gridView3";
            gridView3.OptionsView.ShowGroupPanel = false;
@@ -97,6 +99,7 @@
            colModelType.Name = "colModelType";
            colModelType.Visible = true;
            colModelType.VisibleIndex = 0;
            colModelType.Width = 243;
            // 
            // colMaterial
            // 
@@ -104,6 +107,7 @@
            colMaterial.Name = "colMaterial";
            colMaterial.Visible = true;
            colMaterial.VisibleIndex = 1;
            colMaterial.Width = 154;
            // 
            // colCaliber
            // 
@@ -111,20 +115,22 @@
            colCaliber.Name = "colCaliber";
            colCaliber.Visible = true;
            colCaliber.VisibleIndex = 2;
            colCaliber.Width = 141;
            // 
            // colMinorLoss
            // 
            colMinorLoss.FieldName = "MinorLoss";
            colMinorLoss.Name = "colMinorLoss";
            colMinorLoss.Visible = true;
            colMinorLoss.VisibleIndex = 3;
            colMinorLoss.VisibleIndex = 4;
            colMinorLoss.Width = 165;
            // 
            // searchControl1
            // 
            searchControl1.Location = new Point(59, 2);
            searchControl1.Name = "searchControl1";
            searchControl1.Properties.Buttons.AddRange(new EditorButton[] { new DevExpress.XtraEditors.Repository.ClearButton(), new DevExpress.XtraEditors.Repository.SearchButton() });
            searchControl1.Size = new Size(387, 20);
            searchControl1.Size = new Size(196, 20);
            searchControl1.StyleController = layoutControl1;
            searchControl1.TabIndex = 0;
            // 
@@ -135,15 +141,15 @@
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { simpleLabelItem1, layoutControlItem1, layoutControlItem5 });
            Root.Name = "Root";
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(1343, 607);
            Root.Size = new Size(769, 577);
            Root.TextVisible = false;
            // 
            // simpleLabelItem1
            // 
            simpleLabelItem1.AllowHotTrack = false;
            simpleLabelItem1.Location = new Point(448, 0);
            simpleLabelItem1.Location = new Point(257, 0);
            simpleLabelItem1.Name = "simpleLabelItem1";
            simpleLabelItem1.Size = new Size(895, 24);
            simpleLabelItem1.Size = new Size(512, 24);
            simpleLabelItem1.Text = " ";
            simpleLabelItem1.TextSize = new Size(4, 14);
            // 
@@ -152,7 +158,7 @@
            layoutControlItem1.Control = searchControl1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(448, 24);
            layoutControlItem1.Size = new Size(257, 24);
            layoutControlItem1.Text = "模糊搜索:";
            layoutControlItem1.TextAlignMode = DevExpress.XtraLayout.TextAlignModeItem.AutoSize;
            layoutControlItem1.TextSize = new Size(52, 14);
@@ -163,9 +169,25 @@
            layoutControlItem5.Control = gridControl3;
            layoutControlItem5.Location = new Point(0, 24);
            layoutControlItem5.Name = "layoutControlItem5";
            layoutControlItem5.Size = new Size(1343, 583);
            layoutControlItem5.Size = new Size(769, 553);
            layoutControlItem5.TextSize = new Size(0, 0);
            layoutControlItem5.TextVisible = false;
            //
            // colConnectionLength
            //
            colConnectionLength.FieldName = "ConnectionLength";
            colConnectionLength.Name = "colConnectionLength";
            colConnectionLength.Visible = true;
            colConnectionLength.VisibleIndex = 5;
            colConnectionLength.Width = 182;
            //
            // colAngle
            //
            colAngle.FieldName = "Angle";
            colAngle.Name = "colAngle";
            colAngle.Visible = true;
            colAngle.VisibleIndex = 3;
            colAngle.Width = 121;
            // 
            // ElbowSingleMatchingForm
            // 
@@ -173,7 +195,7 @@
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "ElbowSingleMatchingForm";
            Size = new Size(1343, 607);
            Size = new Size(769, 577);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)gridControl3).EndInit();
@@ -202,5 +224,7 @@
        private DevExpress.XtraGrid.Columns.GridColumn colMaterial;
        private DevExpress.XtraGrid.Columns.GridColumn colCaliber;
        private DevExpress.XtraGrid.Columns.GridColumn colMinorLoss;
        private DevExpress.XtraGrid.Columns.GridColumn colConnectionLength;
        private DevExpress.XtraGrid.Columns.GridColumn colAngle;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingleMatchingForm.cs
@@ -5,6 +5,7 @@
        public ElbowSingleMatchingForm()
        {
            InitializeComponent();
            this.gridView3.SetNormalView();
        }
        private ElbowMatchingViewModel _ElbowMatchingViewModel;
@@ -37,6 +38,8 @@
                _ElbowMatchingViewModel.MatchingCaliber = vm.Caliber;
                _ElbowMatchingViewModel.MatchingMaterial = vm.Material;
                _ElbowMatchingViewModel.MatchingModelType = vm.ModelType;
                _ElbowMatchingViewModel.MatchingAngle = vm.Angle;
                _ElbowMatchingViewModel.MatchingConnectionLength = vm.ConnectionLength;
            }
        }
    }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/01-elbowsinglematching/ElbowSingleMatchingViewModel.cs
@@ -1,4 +1,6 @@
namespace HStation.WinFrmUI
using HStation.Assets;
namespace HStation.WinFrmUI
{
    public class ElbowSingleMatchingViewModel
    {
@@ -13,6 +15,8 @@
            this.Material = rhs.MaterialName;
            this.ModelType = rhs.Name;
            this.MinorLoss = rhs.Coefficient;
            this.Angle = rhs.Angle;
            this.ConnectionLength = rhs.ConnectionLength;
        }
        /// <summary>
@@ -49,5 +53,21 @@
        [DisplayName("损失系数")]
        [Browsable(true)]
        public double? MinorLoss { get; set; }
        /// <summary>
        /// 管路连接长度
        /// </summary>
        [DisplayName("弯头类型")]
        [Browsable(true)]
        public eLengthType? ConnectionLength { get; set; }
        /// <summary>
        /// 角度
        /// </summary>
        [DisplayName("角度")]
        [Browsable(true)]
        public int? Angle { get; set; }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/05-elbows/XhsProjectSimulationElbowsMatchingViewModel.cs
@@ -15,6 +15,7 @@
            this.Material = rhs.Material;
            this.Caliber = rhs.Caliber;
            this.Code = rhs.Code;
            this.Name = rhs.Name;
            this.Dbid = rhs.DbId;
            this.ModelType = rhs.ModelType;
            this.MatchingCaliber = rhs.MatchingCaliber.ToString();
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/01-threelinksinglematching/ThreeLinkSingMatchingDlg.Designer.cs
@@ -29,21 +29,21 @@
        private void InitializeComponent()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            ThreeLinkSingleMatchingForm1 = new ThreeLinkSingleMatchingForm();
            btnComplete = new SimpleButton();
            btnCancel = new SimpleButton();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            ThreeLinkSingleMatchingForm1 = new ThreeLinkSingleMatchingForm();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            SuspendLayout();
            // 
            // layoutControl1
@@ -59,6 +59,13 @@
            layoutControl1.Size = new Size(747, 432);
            layoutControl1.TabIndex = 6;
            layoutControl1.Text = "layoutControl1";
            //
            // ThreeLinkSingleMatchingForm1
            //
            ThreeLinkSingleMatchingForm1.Location = new Point(2, 2);
            ThreeLinkSingleMatchingForm1.Name = "ThreeLinkSingleMatchingForm1";
            ThreeLinkSingleMatchingForm1.Size = new Size(743, 402);
            ThreeLinkSingleMatchingForm1.TabIndex = 0;
            // 
            // btnComplete
            // 
@@ -76,7 +83,7 @@
            // 
            // btnCancel
            // 
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Danger;
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
            btnCancel.Appearance.Options.UseBackColor = true;
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.Location = new Point(641, 408);
@@ -97,6 +104,23 @@
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(747, 432);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = ThreeLinkSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            // 
            // itemForCancel
            // 
@@ -122,46 +146,22 @@
            itemForComplete.TextSize = new Size(0, 0);
            itemForComplete.TextVisible = false;
            // 
            // ThreeLinkSingleMatchingForm1
            //
            ThreeLinkSingleMatchingForm1.Location = new Point(2, 2);
            ThreeLinkSingleMatchingForm1.Name = "pipeLineSingleMatchingForm1";
            ThreeLinkSingleMatchingForm1.Size = new Size(743, 402);
            ThreeLinkSingleMatchingForm1.TabIndex = 0;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = ThreeLinkSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // PipeSingMatchingDlg
            // ThreeLinkSingMatchingDlg
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(747, 432);
            Controls.Add(layoutControl1);
            Name = "PipeLineSingMatchingDlg";
            Name = "ThreeLinkSingMatchingDlg";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "管道匹配";
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ResumeLayout(false);
        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/01-threelinksinglematching/ThreeLinkSingMatchingDlg.cs
@@ -5,6 +5,7 @@
        public ThreeLinkSingMatchingDlg()
        {
            InitializeComponent();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
        }
        public event Action<ThreelinkMatchingViewModel> ReloadDataEvent;
@@ -21,6 +22,7 @@
        private void btnComplete_Click(object sender, EventArgs e)
        {
            ReloadDataEvent.Invoke(_ValveMatchingView);
            this.Close();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/01-threelinksinglematching/ThreeLinkSingleMatchingForm.cs
@@ -5,6 +5,7 @@
        public ThreeLinkSingleMatchingForm()
        {
            InitializeComponent();
            this.gridView3.SetNormalView();
        }
        private ThreelinkMatchingViewModel _pipeMatchingViewModel;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/06-threelink/XhsProjectSimulationThreelinkMatchingViewModel.cs
@@ -16,6 +16,7 @@
            this.Caliber = rhs.Caliber;
            this.Code = rhs.Code;
            this.DbId = rhs.DbId;
            this.Name = rhs.Name;
            this.ModelType = rhs.ModelType;
            this.MatchingCaliber = rhs.MatchingCaliber.ToString();
            this.MatchingMinorLoss = rhs.MatchingMinorLoss;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/01-threelinksinglematching/FourLinkSingMatchingDlg.Designer.cs
@@ -29,21 +29,21 @@
        private void InitializeComponent()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            FourlinkSingleMatchingForm1 = new FourLinkSingleMatchingForm();
            btnComplete = new SimpleButton();
            btnCancel = new SimpleButton();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            FourlinkSingleMatchingForm1 = new FourLinkSingleMatchingForm();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            itemForCancel = new DevExpress.XtraLayout.LayoutControlItem();
            itemForComplete = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            ((ISupportInitialize)itemForCancel).BeginInit();
            ((ISupportInitialize)itemForComplete).BeginInit();
            SuspendLayout();
            // 
            // layoutControl1
@@ -59,6 +59,13 @@
            layoutControl1.Size = new Size(747, 432);
            layoutControl1.TabIndex = 6;
            layoutControl1.Text = "layoutControl1";
            //
            // FourlinkSingleMatchingForm1
            //
            FourlinkSingleMatchingForm1.Location = new Point(2, 2);
            FourlinkSingleMatchingForm1.Name = "FourlinkSingleMatchingForm1";
            FourlinkSingleMatchingForm1.Size = new Size(743, 402);
            FourlinkSingleMatchingForm1.TabIndex = 0;
            // 
            // btnComplete
            // 
@@ -76,7 +83,7 @@
            // 
            // btnCancel
            // 
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Danger;
            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
            btnCancel.Appearance.Options.UseBackColor = true;
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.Location = new Point(641, 408);
@@ -97,6 +104,23 @@
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(747, 432);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = FourlinkSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            // 
            // itemForCancel
            // 
@@ -122,46 +146,22 @@
            itemForComplete.TextSize = new Size(0, 0);
            itemForComplete.TextVisible = false;
            // 
            // FourlinkSingleMatchingForm1
            //
            FourlinkSingleMatchingForm1.Location = new Point(2, 2);
            FourlinkSingleMatchingForm1.Name = "pipeLineSingleMatchingForm1";
            FourlinkSingleMatchingForm1.Size = new Size(743, 402);
            FourlinkSingleMatchingForm1.TabIndex = 0;
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = FourlinkSingleMatchingForm1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(747, 406);
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 406);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(531, 26);
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // PipeSingMatchingDlg
            // FourLinkSingMatchingDlg
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(747, 432);
            Controls.Add(layoutControl1);
            Name = "PipeLineSingMatchingDlg";
            Name = "FourLinkSingMatchingDlg";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "管道匹配";
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ((ISupportInitialize)itemForCancel).EndInit();
            ((ISupportInitialize)itemForComplete).EndInit();
            ResumeLayout(false);
        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/01-threelinksinglematching/FourLinkSingMatchingDlg.cs
@@ -5,6 +5,7 @@
        public FourLinkSingMatchingDlg()
        {
            InitializeComponent();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
        }
        public event Action<FourlinkMatchingViewModel> ReloadDataEvent;
@@ -21,6 +22,7 @@
        private void btnComplete_Click(object sender, EventArgs e)
        {
            ReloadDataEvent.Invoke(_ValveMatchingView);
            this.Close();
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/01-threelinksinglematching/FourLinkSingleMatchingForm.cs
@@ -5,6 +5,7 @@
        public FourLinkSingleMatchingForm()
        {
            InitializeComponent();
            this.gridView3.SetNormalView();
        }
        private FourlinkMatchingViewModel _FourlinkMatchingViewModel;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/01-matching/07-fourlink/XhsProjectSimulationFourlinkMatchingViewModel.cs
@@ -16,6 +16,7 @@
            this.Caliber = rhs.Caliber;
            this.Code = rhs.Code;
            this.Dbid = rhs.DbId;
            this.Name = rhs.Name;
            this.ModelType = rhs.ModelType;
            this.MatchingCaliber = rhs.MatchingCaliber.ToString();
            this.MatchingMinorLoss = rhs.MatchingMinorLoss;