cloudflight
2023-12-26 5fa6947054206e2e781eadd4effdcdf52eda28c4
2023年12月26日

修改内容[base]
1、序列化
已修改58个文件
1047 ■■■■ 文件已修改
Hydro.Core/Base/BaseModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Base/LinkCalcModel.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Base/NodeCalcModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Common/CheckModel.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Common/FlowCurve.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Common/Parts.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Common/TimePoint.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Link/PipeModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Link/PumpModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Link/ValveModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/JunctionModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/MeterModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/NozzleModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/ReservoisModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/TankModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.HydraulicModel/EpanetBase2.2.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Inp/NetWork.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapBase/Map/MapViewer.Designer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapBase/Map/MapViewer.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapBase/WindowsForm/Form_EditFloors.Designer.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapBase/WindowsForm/Form_EditFloors.resx 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapBase/WindowsForm/模板管理.Designer.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Base/LinkViewModel.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Base/NodeViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Common/Dataset.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Common/MapOption.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/MapViewNetWork.cs 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/MapViewNetWork2Inp.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/AreaViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/Factory.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/FactoryList.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/JunctionViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/MeterViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/NozzleViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/PipeViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/PointF3D.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/PumpNodeViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/PumpViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/RepeaterViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/ReservoirViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/TankViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/ValveNodeViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Model/ValveViewModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.MapView/Template/Template.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.CodeProvider.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.CommonBase.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.ConfigModel.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.Core.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.HydraulicCore.bsc 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.HydraulicCore.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.HydraulicCore.exp 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.HydraulicCore.lib 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.HydraulicModel.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.HydraulicOptimizer.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.Inp.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.MapUI.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/Hydro.MapView.dll 补丁 | 查看 | 原始文档 | blame | 历史
out/TestForm.exe 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Base/BaseModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public abstract class BaseModel
    {
        public BaseModel() { }
Hydro.Core/Base/LinkCalcModel.cs
@@ -1,11 +1,13 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hydro.Core.Model
{
    [Serializable]
    public class LinkModel : BaseModel
    {
        public LinkModel() { }
@@ -18,6 +20,7 @@
            this.Length = model.Length;
            this.Roughness = model.Roughness;
            this.MinorLoss = model.MinorLoss;
        }
        /// <summary>
        /// Node1
@@ -63,6 +66,7 @@
            return "";
        }
    }
    [Serializable]
    public class LinkCalcModel : LinkModel
    {
        public LinkCalcModel() { }
@@ -76,9 +80,75 @@
            this.Roughness = model.Roughness;
            this.MinorLoss = model.MinorLoss;
        }
        public NodeCalcModel StartNode { get; set; }
        public NodeCalcModel EndNode { get; set; }
        public string Node1
        {
            get
            {
                if (_StartNode != null) return _StartNode.ID;
                return base.Node1;
            }
            set
            {
                base.Node1 = value;
            }
        }
        public string Node2
        {
            get
            {
                if (_EndNode != null) return _EndNode.ID;
                return base.Node2;
            }
            set
            {
                base.Node2 = value;
            }
        }
        private NodeCalcModel _StartNode;
        public NodeCalcModel StartNode {
            get { return _StartNode; }
            set { _StartNode = value; if (_StartNode != null) this.Node1 = _StartNode.ID; }
        }
        private NodeCalcModel _EndNode;
        public NodeCalcModel EndNode {
            get { return _EndNode; }
            set { _EndNode = value; if (_EndNode!=null)this.Node2 = _EndNode.ID; }
        }
        /// <summary>
        /// é•¿åº¦
        /// </summary>
        public float Length
        {
            get
            {
                if (base.Length>=0) return base.Length;
                else
                {
                    if (_StartNode!=null && _EndNode!=null)
                    {
                        ////求_StartNode到_EndNode的距离
                        return (float)Math.Sqrt( Math.Pow(_StartNode.X-_EndNode.X, 2)+ Math.Pow(_StartNode.Y-_EndNode.Y,2)+Math.Pow(_StartNode.Elev-_EndNode.Elev,2));
                    }
                    else
                    {
                        return 0;
                    }
                }
            }
            set
            {
                base.Length = value;
            }
        }
    }
}
Hydro.Core/Base/NodeCalcModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class NodeModel : BaseModel
    {
        public NodeModel() { }
@@ -33,6 +34,7 @@
            return $"{ID}\t{X}\t{Y}";
        }
    }
    [Serializable]
    public class NodeCalcModel : NodeModel
    {
        public NodeCalcModel() { }
Hydro.Core/Common/CheckModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class CheckModel
    {
        public CheckModel()
@@ -17,7 +18,7 @@
        public List<FailModel> FailList { get; set; }
    }
    [Serializable]
    public class FailModel : BaseModel
    {
        public string FailReason { get; set; }
Hydro.Core/Common/FlowCurve.cs
@@ -7,9 +7,11 @@
namespace Hydro.Core.Model
{
    /// <summary>
    /// æµé‡æ›²çº¿
    /// </summary>
    [Serializable]
    public class FlowCurve
    {
        public string Name { get; set; }
Hydro.Core/Common/Parts.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class Parts
    {
        List<string> _parts = null;
Hydro.Core/Common/TimePoint.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class TimePoint
    {
        public string Key { get; set; }
Hydro.Core/Link/PipeModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class PipeModel:LinkCalcModel
    {
        public override string ToString()
Hydro.Core/Link/PumpModel.cs
@@ -10,6 +10,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class PumpModel : LinkCalcModel
    {
        /// <summary>
Hydro.Core/Link/ValveModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class ValveModel:LinkCalcModel
    {
        /// <summary>
Hydro.Core/Node/JunctionModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class JunctionModel : NodeCalcModel
    {
        /// <summary>
Hydro.Core/Node/MeterModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class MeterModel : NodeCalcModel
    {
        /// <summary>
Hydro.Core/Node/NozzleModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class NozzleModel : NodeCalcModel
    {
        /// <summary>
Hydro.Core/Node/ReservoisModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class ReservoisModel:NodeCalcModel
    {
        /// <summary>
Hydro.Core/Node/TankModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.Core.Model
{
    [Serializable]
    public class TankModel : NodeCalcModel
    {
        /// <summary>
Hydro.HydraulicModel/EpanetBase2.2.cs
@@ -14,7 +14,7 @@
    class HydraulicCoreBase
    {
        const string DLLName = "hydraulicCore.dll";//"epanet2.2.dll";//"epanet2.2.dll"
        const string DLLName = "Hydro.hydraulicCore.dll";//"epanet2.2.dll";//"epanet2.2.dll"
        //{ These are codes used by the DLL functions }
        
Hydro.Inp/NetWork.cs
@@ -17,6 +17,7 @@
namespace Hydro.Inp
{
    [Serializable]
    public class NetWork //: INetWork
    {
        public NetWork()
@@ -1072,4 +1073,8 @@
        }
    }
}
Hydro.MapBase/Map/MapViewer.Designer.cs
@@ -42,6 +42,7 @@
namespace Hydro.MapUI
{
    partial class MapViewer
    {
        /// <summary> 
Hydro.MapBase/Map/MapViewer.cs
@@ -690,8 +690,8 @@
        void Draw(Graphics bufferG, Template template)
        {
            if (template == null) return;
            var _Nodes = template.network.Nodes;
            var _Links = template.network.Links;
            var _Nodes = template.network.Nodes.ViewNodes;
            var _Links = template.network.Links.ViewLinks;
            var Cpoints = getCurclePoints(64).ToList();
@@ -801,7 +801,7 @@
            using (Pen pen0 = new Pen(Color.FromArgb(0, 0, 255), 2 * r))
            {
                foreach (var link in _Links.Select(link => (LinkViewModel)link).ToList())
                foreach (var link in _Links)
                {
                    if (!link.Visible) continue;
                    if (link.Elev < minElve || link.Elev >= maxElve) continue;
@@ -987,7 +987,7 @@
            using (Pen pen = new Pen(Color.FromArgb(255, 0, 0), 1 * r))
            {
                Brush brush = pen.Brush;
                foreach (NodeViewModel node in _Nodes.Select(node => (NodeViewModel)node).ToList())
                foreach (NodeViewModel node in _Nodes)
                {
                    if (!node.Visible) continue;
                    if (node.Elev < minElve || node.Elev >= maxElve) continue;
@@ -1654,7 +1654,6 @@
                _NewNet.Clear();
                _Network.BuildRelation();
                selectedObjs.ForEach(o => o.Selected = false);
                selectedObjs.Clear();
@@ -2813,6 +2812,7 @@
                    if (p.StartNode == obj)
                    {
                        p.StartNode = junc;
                    }
                    else if (p.EndNode == obj)
                    {
@@ -2992,13 +2992,15 @@
                MessageBox.Show("围绕选中节点进行三维缩放,请在属性列表中选中一个缩放中心对象");
                return;
            }
            if (!(selectobjs[0] as IBaseViewModel).isNode())
            //if (!(selectobjs[0] as IBaseViewModel).isNode())
            var list = objs.FindAll(o => o.ID == selectobjs[0]);
            if (list.Count>=1 && !list[0].isNode())
            {
                MessageBox.Show("围绕选中节点进行三维缩放,请在属性列表中选中一个[节点类]缩放中心对象");
                return;
            }
            NodeViewModel origin = selectobjs[0] as NodeViewModel;
            NodeViewModel origin = list[0] as NodeViewModel;
            var nodes = objs.FindAll(o => o.isNode()).Select(o => o as NodeViewModel).ToList();
            ToolStripMenuItem item = sender as ToolStripMenuItem;
@@ -3870,7 +3872,7 @@
                //net.Nodes.ForEach(o => o.Selected = false);
                //net.Links.ForEach(o => o.Selected = false);
                selectedObjs.AddRange(net.Nodes.Select(n=>(NodeViewModel)n));
                selectedObjs.AddRange(net.Links.Select(n => (LinkViewModel)n));
                selectedObjs.AddRange(net.Links.ViewLinks);
                //net.Nodes.ForEach(o => selectedNodes.);
                //net.Links.ForEach(o => o.Selected = false) ;
                var list = _Network.Add(net);
@@ -4143,7 +4145,7 @@
        {
            _Template.network.MapObjects.ForEach(o => o.Selected = false) ;
            selectedObjs.Clear();
            _Template.network.ViewLinks.ForEach(link =>
            _Template.network.Links.ForEach(link =>
            {
                if (link.EN_FLOW != 0)
                {
Hydro.MapBase/WindowsForm/Form_EditFloors.Designer.cs
@@ -77,37 +77,24 @@
            this.tb_minFloorIndex = new System.Windows.Forms.TextBox();
            this.groupControl4 = new System.Windows.Forms.GroupBox();
            this.groupControl5 = new System.Windows.Forms.GroupBox();
            this.InsertIntoNet = new System.Windows.Forms.Button();
            this.comboBox2 = new System.Windows.Forms.ComboBox();
            ((System.ComponentModel.ISupportInitialize)(this.FloorsListBox)).BeginInit();
            this.InsertIntoNet = new System.Windows.Forms.Button();
            this.menuStrip1.SuspendLayout();
            //((System.ComponentModel.ISupportInitialize)(this.FloorIndexTextBox.Properties)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.BackgroundImgTextBox.Properties)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.ElevTextBox.Properties)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
            this.groupControl1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl2)).BeginInit();
            this.groupControl2.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl3)).BeginInit();
            this.groupControl3.SuspendLayout();
            //((System.ComponentModel.ISupportInitialize)(this.BackgroundImgTextBox_q.Properties)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_Height.Properties)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_maxFloorIndex.Properties)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_minFloorElev.Properties)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_minFloorIndex.Properties)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl4)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl5)).BeginInit();
            this.groupControl5.SuspendLayout();
            this.SuspendLayout();
            // 
            // FloorsListBox
            // 
            this.FloorsListBox.ItemHeight = 12;
            this.FloorsListBox.Location = new System.Drawing.Point(7, 65);
            this.FloorsListBox.Name = "FloorsListBox";
            this.FloorsListBox.Size = new System.Drawing.Size(224, 298);
            this.FloorsListBox.Size = new System.Drawing.Size(224, 292);
            this.FloorsListBox.TabIndex = 0;
            this.FloorsListBox.SelectedIndexChanged += new System.EventHandler(this.FloorsListBox_SelectedIndexChanged);
            this.FloorsListBox.Click += new System.EventHandler(this.FloorsListBox_Click);
            this.FloorsListBox.SelectedIndexChanged += new System.EventHandler(this.FloorsListBox_SelectedIndexChanged);
            // 
            // menuStrip1
            // 
@@ -216,21 +203,21 @@
            // 
            this.FloorIndexTextBox.Location = new System.Drawing.Point(107, 26);
            this.FloorIndexTextBox.Name = "FloorIndexTextBox";
            this.FloorIndexTextBox.Size = new System.Drawing.Size(144, 20);
            this.FloorIndexTextBox.Size = new System.Drawing.Size(144, 21);
            this.FloorIndexTextBox.TabIndex = 2;
            // 
            // BackgroundImgTextBox
            // 
            this.BackgroundImgTextBox.Location = new System.Drawing.Point(107, 52);
            this.BackgroundImgTextBox.Name = "BackgroundImgTextBox";
            this.BackgroundImgTextBox.Size = new System.Drawing.Size(100, 20);
            this.BackgroundImgTextBox.Size = new System.Drawing.Size(100, 21);
            this.BackgroundImgTextBox.TabIndex = 2;
            // 
            // ElevTextBox
            // 
            this.ElevTextBox.Location = new System.Drawing.Point(107, 78);
            this.ElevTextBox.Name = "ElevTextBox";
            this.ElevTextBox.Size = new System.Drawing.Size(144, 20);
            this.ElevTextBox.Size = new System.Drawing.Size(144, 21);
            this.ElevTextBox.TabIndex = 2;
            // 
            // labelControl1
@@ -259,7 +246,6 @@
            // 
            // simpleButton1
            // 
            //this.simpleButton1.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton1.ImageOptions.SvgImage")));
            this.simpleButton1.Location = new System.Drawing.Point(213, 51);
            this.simpleButton1.Name = "simpleButton1";
            this.simpleButton1.Size = new System.Drawing.Size(38, 23);
@@ -270,7 +256,6 @@
            // SaveButton
            // 
            this.SaveButton.Enabled = false;
            //this.SaveButton.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("SaveButton.ImageOptions.SvgImage")));
            this.SaveButton.Location = new System.Drawing.Point(95, 104);
            this.SaveButton.Name = "SaveButton";
            this.SaveButton.Size = new System.Drawing.Size(74, 35);
@@ -281,7 +266,6 @@
            // CancelButton
            // 
            this.CancelButton.Enabled = false;
            //this.CancelButton.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("CancelButton.ImageOptions.SvgImage")));
            this.CancelButton.Location = new System.Drawing.Point(177, 104);
            this.CancelButton.Name = "CancelButton";
            this.CancelButton.Size = new System.Drawing.Size(74, 35);
@@ -305,11 +289,11 @@
            this.groupControl1.Name = "groupControl1";
            this.groupControl1.Size = new System.Drawing.Size(263, 151);
            this.groupControl1.TabIndex = 5;
            this.groupControl1.TabStop = false;
            this.groupControl1.Text = "属性编辑";
            // 
            // simpleButton4
            // 
            //this.simpleButton4.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton4.ImageOptions.SvgImage")));
            this.simpleButton4.Location = new System.Drawing.Point(13, 104);
            this.simpleButton4.Name = "simpleButton4";
            this.simpleButton4.Size = new System.Drawing.Size(74, 35);
@@ -330,27 +314,25 @@
            this.groupControl2.Name = "groupControl2";
            this.groupControl2.Size = new System.Drawing.Size(236, 409);
            this.groupControl2.TabIndex = 6;
            this.groupControl2.TabStop = false;
            this.groupControl2.Text = "楼层管理";
            // 
            // simpleButton10
            // 
            //this.simpleButton10.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("simpleButton10.ImageOptions.Image")));
            this.simpleButton10.Location = new System.Drawing.Point(191, 25);
            this.simpleButton10.Location = new System.Drawing.Point(160, 42);
            this.simpleButton10.Name = "simpleButton10";
            this.simpleButton10.Size = new System.Drawing.Size(40, 34);
            this.simpleButton10.Size = new System.Drawing.Size(70, 22);
            this.simpleButton10.TabIndex = 6;
            this.simpleButton10.Text = "新增";
            this.simpleButton10.Text = "删除分区";
            this.simpleButton10.Click += new System.EventHandler(this.simpleButton10_Click);
            // 
            // simpleButton9
            // 
            //this.simpleButton9.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("simpleButton9.ImageOptions.Image")));
            //this.simpleButton9.ImageOptions.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.Full;
            this.simpleButton9.Location = new System.Drawing.Point(149, 25);
            this.simpleButton9.Location = new System.Drawing.Point(160, 20);
            this.simpleButton9.Name = "simpleButton9";
            this.simpleButton9.Size = new System.Drawing.Size(40, 34);
            this.simpleButton9.Size = new System.Drawing.Size(70, 22);
            this.simpleButton9.TabIndex = 6;
            this.simpleButton9.Text = "新增";
            this.simpleButton9.Text = "新增分区";
            this.simpleButton9.Click += new System.EventHandler(this.simpleButton9_Click);
            // 
            // comboBox1
@@ -359,13 +341,12 @@
            this.comboBox1.FormattingEnabled = true;
            this.comboBox1.Location = new System.Drawing.Point(7, 29);
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.Size = new System.Drawing.Size(136, 22);
            this.comboBox1.Size = new System.Drawing.Size(147, 20);
            this.comboBox1.TabIndex = 5;
            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
            // 
            // simpleButton6
            // 
            //this.simpleButton6.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton6.ImageOptions.SvgImage")));
            this.simpleButton6.Location = new System.Drawing.Point(149, 369);
            this.simpleButton6.Name = "simpleButton6";
            this.simpleButton6.Size = new System.Drawing.Size(65, 35);
@@ -375,7 +356,6 @@
            // 
            // simpleButton3
            // 
            //this.simpleButton3.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton3.ImageOptions.SvgImage")));
            this.simpleButton3.Location = new System.Drawing.Point(78, 369);
            this.simpleButton3.Name = "simpleButton3";
            this.simpleButton3.Size = new System.Drawing.Size(65, 35);
@@ -385,7 +365,6 @@
            // 
            // simpleButton2
            // 
            //this.simpleButton2.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton2.ImageOptions.SvgImage")));
            this.simpleButton2.Location = new System.Drawing.Point(7, 370);
            this.simpleButton2.Name = "simpleButton2";
            this.simpleButton2.Size = new System.Drawing.Size(65, 35);
@@ -412,6 +391,7 @@
            this.groupControl3.Name = "groupControl3";
            this.groupControl3.Size = new System.Drawing.Size(262, 251);
            this.groupControl3.TabIndex = 7;
            this.groupControl3.TabStop = false;
            this.groupControl3.Text = "快速生成";
            // 
            // labelControl7
@@ -432,7 +412,6 @@
            // 
            // simpleButton5
            // 
            //this.simpleButton5.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton5.ImageOptions.SvgImage")));
            this.simpleButton5.Location = new System.Drawing.Point(143, 211);
            this.simpleButton5.Name = "simpleButton5";
            this.simpleButton5.Size = new System.Drawing.Size(107, 35);
@@ -444,12 +423,11 @@
            // 
            this.BackgroundImgTextBox_q.Location = new System.Drawing.Point(106, 132);
            this.BackgroundImgTextBox_q.Name = "BackgroundImgTextBox_q";
            this.BackgroundImgTextBox_q.Size = new System.Drawing.Size(100, 20);
            this.BackgroundImgTextBox_q.Size = new System.Drawing.Size(100, 21);
            this.BackgroundImgTextBox_q.TabIndex = 2;
            // 
            // simpleButton7
            // 
            //this.simpleButton7.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton7.ImageOptions.SvgImage")));
            this.simpleButton7.Location = new System.Drawing.Point(212, 136);
            this.simpleButton7.Name = "simpleButton7";
            this.simpleButton7.Size = new System.Drawing.Size(38, 23);
@@ -475,24 +453,24 @@
            // 
            // tb_Height
            // 
            this.tb_Height.Text = "3";
            this.tb_Height.Location = new System.Drawing.Point(106, 107);
            this.tb_Height.Name = "tb_Height";
            this.tb_Height.Size = new System.Drawing.Size(144, 20);
            this.tb_Height.Size = new System.Drawing.Size(144, 21);
            this.tb_Height.TabIndex = 2;
            this.tb_Height.Text = "3";
            // 
            // tb_maxFloorIndex
            // 
            this.tb_maxFloorIndex.Location = new System.Drawing.Point(106, 57);
            this.tb_maxFloorIndex.Name = "tb_maxFloorIndex";
            this.tb_maxFloorIndex.Size = new System.Drawing.Size(144, 20);
            this.tb_maxFloorIndex.Size = new System.Drawing.Size(144, 21);
            this.tb_maxFloorIndex.TabIndex = 2;
            // 
            // ErrorLabel
            // 
            this.ErrorLabel.Location = new System.Drawing.Point(12, 222);
            this.ErrorLabel.Name = "ErrorLabel";
            this.ErrorLabel.Size = new System.Drawing.Size(48, 14);
            this.ErrorLabel.Size = new System.Drawing.Size(125, 14);
            this.ErrorLabel.TabIndex = 3;
            this.ErrorLabel.Text = "错误提示";
            this.ErrorLabel.Visible = false;
@@ -507,17 +485,17 @@
            // 
            // tb_minFloorElev
            // 
            this.tb_minFloorElev.Text = "0";
            this.tb_minFloorElev.Location = new System.Drawing.Point(106, 82);
            this.tb_minFloorElev.Name = "tb_minFloorElev";
            this.tb_minFloorElev.Size = new System.Drawing.Size(144, 20);
            this.tb_minFloorElev.Size = new System.Drawing.Size(144, 21);
            this.tb_minFloorElev.TabIndex = 2;
            this.tb_minFloorElev.Text = "0";
            // 
            // tb_minFloorIndex
            // 
            this.tb_minFloorIndex.Location = new System.Drawing.Point(106, 32);
            this.tb_minFloorIndex.Name = "tb_minFloorIndex";
            this.tb_minFloorIndex.Size = new System.Drawing.Size(144, 20);
            this.tb_minFloorIndex.Size = new System.Drawing.Size(144, 21);
            this.tb_minFloorIndex.TabIndex = 2;
            // 
            // groupControl4
@@ -526,6 +504,7 @@
            this.groupControl4.Name = "groupControl4";
            this.groupControl4.Size = new System.Drawing.Size(309, 409);
            this.groupControl4.TabIndex = 6;
            this.groupControl4.TabStop = false;
            this.groupControl4.Text = "预览";
            // 
            // groupControl5
@@ -536,17 +515,8 @@
            this.groupControl5.Name = "groupControl5";
            this.groupControl5.Size = new System.Drawing.Size(126, 409);
            this.groupControl5.TabIndex = 8;
            this.groupControl5.TabStop = false;
            this.groupControl5.Text = "功能";
            //
            // InsertIntoNet
            //
            //this.InsertIntoNet.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("InsertIntoNet.ImageOptions.Image")));
            this.InsertIntoNet.Location = new System.Drawing.Point(5, 369);
            this.InsertIntoNet.Name = "InsertIntoNet";
            this.InsertIntoNet.Size = new System.Drawing.Size(116, 35);
            this.InsertIntoNet.TabIndex = 4;
            this.InsertIntoNet.Text = "插入管网";
            this.InsertIntoNet.Click += new System.EventHandler(this.InsertIntoNet_Click);
            // 
            // comboBox2
            // 
@@ -556,9 +526,18 @@
            "向下"});
            this.comboBox2.Location = new System.Drawing.Point(5, 32);
            this.comboBox2.Name = "comboBox2";
            this.comboBox2.Size = new System.Drawing.Size(116, 22);
            this.comboBox2.Size = new System.Drawing.Size(116, 20);
            this.comboBox2.TabIndex = 5;
            this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged);
            //
            // InsertIntoNet
            //
            this.InsertIntoNet.Location = new System.Drawing.Point(5, 369);
            this.InsertIntoNet.Name = "InsertIntoNet";
            this.InsertIntoNet.Size = new System.Drawing.Size(116, 35);
            this.InsertIntoNet.TabIndex = 4;
            this.InsertIntoNet.Text = "插入管网";
            this.InsertIntoNet.Click += new System.EventHandler(this.InsertIntoNet_Click);
            // 
            // Form_EditFloors
            // 
@@ -578,27 +557,13 @@
            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
            this.Text = "楼层设置";
            this.Load += new System.EventHandler(this.Form_EditFloors_Load);
            ((System.ComponentModel.ISupportInitialize)(this.FloorsListBox)).EndInit();
            this.menuStrip1.ResumeLayout(false);
            this.menuStrip1.PerformLayout();
            //((System.ComponentModel.ISupportInitialize)(this.FloorIndexTextBox.Properties)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.BackgroundImgTextBox.Properties)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.ElevTextBox.Properties)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
            this.groupControl1.ResumeLayout(false);
            this.groupControl1.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl2)).EndInit();
            this.groupControl2.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.groupControl3)).EndInit();
            this.groupControl3.ResumeLayout(false);
            this.groupControl3.PerformLayout();
            //((System.ComponentModel.ISupportInitialize)(this.BackgroundImgTextBox_q.Properties)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_Height.Properties)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_maxFloorIndex.Properties)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_minFloorElev.Properties)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.tb_minFloorIndex.Properties)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl4)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.groupControl5)).EndInit();
            this.groupControl5.ResumeLayout(false);
            this.ResumeLayout(false);
            this.PerformLayout();
Hydro.MapBase/WindowsForm/Form_EditFloors.resx
@@ -167,363 +167,6 @@
        PdXm80/AfDokTVu+8DfPXv9XCcIPTvjvLQ8YoakAAAAASUVORK5CYII=
</value>
  </data>
  <assembly alias="DevExpress.Data.v22.2" name="DevExpress.Data.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="simpleButton1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkEAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBcHBlYXJhbmNlIj4N
        CiAgICA8cmVjdCB4PSIxMiIgeT0iNCIgd2lkdGg9IjgiIGhlaWdodD0iNiIgY2xhc3M9IlllbGxvdyIg
        Lz4NCiAgICA8cmVjdCB4PSIyIiB5PSIxMiIgd2lkdGg9IjgiIGhlaWdodD0iNiIgY2xhc3M9IlJlZCIg
        Lz4NCiAgICA8cmVjdCB4PSIyMiIgeT0iMjAiIHdpZHRoPSI4IiBoZWlnaHQ9IjYiIGNsYXNzPSJHcmVl
        biIgLz4NCiAgICA8ZyBjbGFzcz0ic3QwIj4NCiAgICAgIDxwYXRoIGQ9Ik0xMiwxMmg4djZoLThWMTJ6
        IE0xMCwxMFY0SDJ2NkgxMHogTTIyLDEwaDhWNGgtOFYxMHogTTIyLDE4aDh2LTZoLThWMTh6IE0xMiwy
        MHY2aDh2LTZIMTJ6IE0xMCwyNnYtNkgydjYgICAgSDEweiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwv
        Zz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="SaveButton.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANwDAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU2F2ZUFzIj4NCiAgICA8cGF0aCBk
        PSJNMTYsOWMwLTEuMSwwLjItMi4xLDAuNS0zSDh2OGg5LjVDMTYuNiwxMi42LDE2LDEwLjksMTYsOXog
        TTEyLDEyaC0yVjhoMlYxMnogTTI2LDE4djExYzAsMC42LTAuNCwxLTEsMUgzICAgYy0wLjYsMC0xLTAu
        NC0xLTFWN2MwLTAuNiwwLjQtMSwxLTFoM3YxMGgxMy4zYzAuMiwwLjIsMC40LDAuMywwLjcsMC41VjIw
        SDZ2NmgxNnYtOEgyNnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgICA8cGF0aCBkPSJNMjUsMmMtMy45LDAt
        NywzLjEtNyw3YzAsMy45LDMuMSw3LDcsN3M3LTMuMSw3LTdDMzIsNS4xLDI4LjksMiwyNSwyeiBNMjIs
        MTBoLTJWOGgyVjEweiBNMjYsMTBoLTJWOGgyVjEweiAgICBNMjgsMTBWOGgydjJIMjh6IiBjbGFzcz0i
        R3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="CancelButton.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGkEAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU2F2ZUFuZENsb3NlIj4NCiAgICA8
        cGF0aCBkPSJNNiwxNlY2SDNDMi40LDYsMiw2LjQsMiw3djIyYzAsMC42LDAuNCwxLDEsMWgyMmMwLjYs
        MCwxLTAuNCwxLTFWMTZINnogTTYsMjZ2LTZoMTZ2Nkg2eiBNMTYsNkg4djhoOFY2eiAgICBNMTIsMTJo
        LTJWOGgyVjEyeiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwYXRoIGQ9Ik0yOSwySDE5Yy0wLjUsMC0x
        LDAuNS0xLDF2MTBjMCwwLjUsMC41LDEsMSwxaDEwYzAuNSwwLDEtMC41LDEtMVYzQzMwLDIuNSwyOS41
        LDIsMjksMnogTTI3LjcsMTAuNCAgIGMwLjQsMC40LDAuNCwxLDAsMS4zYy0wLjQsMC40LTEsMC40LTEu
        MywwTDI0LDkuM2wtMi40LDIuNGMtMC40LDAuNC0xLDAuNC0xLjMsMGMtMC40LTAuNC0wLjQtMSwwLTEu
        M0wyMi43LDhsLTIuNC0yLjQgICBjLTAuNC0wLjQtMC40LTEsMC0xLjNjMC40LTAuNCwxLTAuNCwxLjMs
        MEwyNCw2LjdsMi40LTIuNGMwLjQtMC40LDEtMC40LDEuMywwYzAuNCwwLjQsMC40LDEsMCwxLjNMMjUu
        Myw4TDI3LjcsMTAuNHoiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="simpleButton4.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGgCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iRWRpdF9Db21tZW50IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3
        IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmx1ZXtmaWxsOiMxMTc3RDc7
        fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMywyMmgzdjZsNi02
        aDMuMkwyNiwxMS4yVjdjMC0wLjYtMC40LTEtMS0xSDNDMi40LDYsMiw2LjQsMiw3djE0QzIsMjEuNiwy
        LjQsMjIsMywyMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDxwYXRoIGQ9Ik0yOSwxOWwtOCw4bC00LTRs
        OC04TDI5LDE5eiBNMzAsMThsMS43LTEuN2MwLjQtMC40LDAuNC0xLDAtMS4zbC0yLjctMi43Yy0wLjQt
        MC40LTEtMC40LTEuMywwTDI2LDE0TDMwLDE4eiAgIE0xNiwyNHY0aDRMMTYsMjR6IiBjbGFzcz0iQmx1
        ZSIgLz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="simpleButton10.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        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
</value>
  </data>
  <data name="simpleButton9.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        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
        SUVORK5CYII=
</value>
  </data>
  <data name="simpleButton6.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAB0EAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iRGVsZXRlXzFfIj4NCiAgICA8
        cGF0aCBkPSJNNCwxMFY2YzAtMi4yLDQuNS00LDEwLTRzMTAsMS44LDEwLDR2NGMwLDIuMi00LjUsNC0x
        MCw0UzQsMTIuMiw0LDEweiBNMTQsMjBjMC43LDAsMS40LDAsMi0wLjEgICBjMC0wLjUsMC4yLTEsMC42
        LTEuM2wyLTJDMTksMTYuMiwxOS41LDE2LDIwLDE2czEsMC4yLDEuNCwwLjZsMS4zLDEuM2MwLjgtMC42
        LDEuMi0xLjIsMS4yLTEuOXYtNGMwLDIuMi00LjUsNC0xMCw0UzQsMTQuMiw0LDEydjQgICBDNCwxOC4y
        LDguNSwyMCwxNCwyMHogTTE5LjIsMjRMMTcsMjEuOEMxNiwyMS45LDE1LDIyLDE0LDIyYy01LjUsMC0x
        MC0xLjgtMTAtNHY0YzAsMi4yLDQuNSw0LDEwLDRjMS4yLDAsMi4zLTAuMSwzLjQtMC4yTDE5LjIsMjQg
        ICB6IiBjbGFzcz0iWWVsbG93IiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzAsMjAgMjgsMTggMjQs
        MjIgMjAsMTggMTgsMjAgMjIsMjQgMTgsMjggMjAsMzAgMjQsMjYgMjgsMzAgMzAsMjggMjYsMjQgICIg
        Y2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="simpleButton3.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMoDAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
        Pg0KICA8ZyBpZD0iQWRkR3JvdXBIZWFkZXIiPg0KICAgIDxyZWN0IHg9IjYiIHk9IjgiIHdpZHRoPSIx
        NCIgaGVpZ2h0PSI2IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8ZyBjbGFzcz0ic3QwIj4NCiAgICAgIDxw
        YXRoIGQ9Ik0yMCwxOEg2di0yaDE0VjE4eiBNMjAsMjBINnYyaDE0VjIweiBNMjAsMjRINnYyaDE0VjI0
        eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwvZz4NCiAgICA8cGF0aCBkPSJNMjIsMjhINFY2aDE2aDJo
        MC4ybDEuNi0xLjZDMjMuNiw0LjIsMjMuMyw0LDIzLDRIM0MyLjUsNCwyLDQuNSwyLDV2MjRjMCwwLjUs
        MC41LDEsMSwxaDIwYzAuNSwwLDEtMC41LDEtMSAgIHYtOS4ybC0yLTJWMjh6IiBjbGFzcz0iQmxhY2si
        IC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSIzMCw3IDI3LDEwIDI0LDcgMjIsOSAyNSwxMiAyMiwxNSAy
        NCwxNyAyNywxNCAzMCwxNyAzMiwxNSAyOSwxMiAzMiw5ICAiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4N
        Cjwvc3ZnPgs=
</value>
  </data>
  <data name="simpleButton2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAB0DAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iQWRkUGFyYWdyYXBoVG9UYWJsZU9mQ29udGVudHMiIHN0eWxlPSJlbmFi
        bGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5C
        bGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMx
        Qzt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0xNiwxNkg2di0yaDEwVjE2eiBNMTYsMThINnYyaDEwVjE4
        eiIgY2xhc3M9IlJlZCIgLz4NCiAgPHBhdGggZD0iTTI2LDI2djNjMCwwLjYtMC40LDEtMSwxSDFjLTAu
        NiwwLTEtMC40LTEtMVYxYzAtMC42LDAuNC0xLDEtMWgyNGMwLjYsMCwxLDAuNCwxLDF2N2gtMlYySDJ2
        MjZoMjJ2LTJIMjZ6ICAgTTIwLDZINnYyaDE0VjZ6IE0xNiwxMEg2djJoMTBWMTB6IE0xNiwyMkg2djJo
        MTBWMjJ6IiBjbGFzcz0iQmxhY2siIC8+DQogIDxwYXRoIGQ9Ik0zMSwxMEgxOWMtMC42LDAtMSwwLjQt
        MSwxdjEyYzAsMC42LDAuNCwxLDEsMWgxMmMwLjYsMCwxLTAuNCwxLTFWMTFDMzIsMTAuNCwzMS42LDEw
        LDMxLDEweiBNMzAsMThoLTR2NGgtMiAgdi00aC00di0yaDR2LTRoMnY0aDRWMTh6IiBjbGFzcz0iR3Jl
        ZW4iIC8+DQo8L3N2Zz4L
</value>
  </data>
  <data name="simpleButton5.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFICAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iU2hvd19EZXRhaWwiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcg
        MCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7
        fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgkuc3Qwe29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPGcg
        Y2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTE2LDBoMTZ2NkgxNlYweiBNMTYsMTRoMTZWOEgxNlYx
        NHogTTE2LDIyaDE2di02SDE2VjIyeiBNMTYsMzBoMTZ2LTZIMTZWMzB6IiBjbGFzcz0iQmxhY2siIC8+
        DQogIDwvZz4NCiAgPHBvbHlnb24gcG9pbnRzPSIxNCw0IDEwLDQgMTAsMCA2LDAgNiw0IDIsNCAyLDgg
        Niw4IDYsMTIgMTAsMTIgMTAsOCAxNCw4ICIgY2xhc3M9IkdyZWVuIiAvPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="simpleButton7.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkEAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBcHBlYXJhbmNlIj4N
        CiAgICA8cmVjdCB4PSIxMiIgeT0iNCIgd2lkdGg9IjgiIGhlaWdodD0iNiIgY2xhc3M9IlllbGxvdyIg
        Lz4NCiAgICA8cmVjdCB4PSIyIiB5PSIxMiIgd2lkdGg9IjgiIGhlaWdodD0iNiIgY2xhc3M9IlJlZCIg
        Lz4NCiAgICA8cmVjdCB4PSIyMiIgeT0iMjAiIHdpZHRoPSI4IiBoZWlnaHQ9IjYiIGNsYXNzPSJHcmVl
        biIgLz4NCiAgICA8ZyBjbGFzcz0ic3QwIj4NCiAgICAgIDxwYXRoIGQ9Ik0xMiwxMmg4djZoLThWMTJ6
        IE0xMCwxMFY0SDJ2NkgxMHogTTIyLDEwaDhWNGgtOFYxMHogTTIyLDE4aDh2LTZoLThWMTh6IE0xMiwy
        MHY2aDh2LTZIMTJ6IE0xMCwyNnYtNkgydjYgICAgSDEweiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwv
        Zz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="InsertIntoNet.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        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
        grE/AKH/djUsnEiBAAAAAElFTkSuQmCC
</value>
  </data>
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAAAA
Hydro.MapBase/WindowsForm/Ä£°å¹ÜÀí.Designer.cs
@@ -83,7 +83,7 @@
            this.splitContainer3.Panel1.SuspendLayout();
            this.splitContainer3.Panel2.SuspendLayout();
            this.splitContainer3.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
            //((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
            this.panelControl1.SuspendLayout();
            this.SuspendLayout();
            // 
@@ -541,7 +541,7 @@
            this.splitContainer3.Panel2.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
            this.splitContainer3.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
            //((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
            this.panelControl1.ResumeLayout(false);
            this.ResumeLayout(false);
Hydro.MapView/Base/LinkViewModel.cs
@@ -14,6 +14,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class LinkViewModel : LinkCalcModel, IBaseViewModel
    {
        public LinkViewModel()
@@ -24,30 +25,24 @@
        {
            StartNode = new NodeViewModel(startPoint);
            EndNode = new NodeViewModel(endPoint);
            Points = new List<PointF>() { startPoint, endPoint };
            //Points = new List<PointF>() { startPoint, endPoint };
        }
        public LinkViewModel(PointF startPoint, PointF endPoint, List<PointF> points)
        {
            StartNode = new NodeViewModel(startPoint);
            EndNode = new NodeViewModel(endPoint);
            Points = points;
            //Points = points;
        }
        //private string Node1;
        [Category("1、基本信息")]
        [DisplayName("节点1")]
        [Browsable(true)]
        public new string Node1
        public string Node1
        {
            get
            {
                if (StartNode != null && base.Node1 != StartNode.ID)
                {
                    base.Node1 = StartNode.ID;
                }
                return base.Node1;
            }
            set
@@ -56,20 +51,15 @@
                base.Node1 = value;
            }
        }
        //private string Node2;
        [Category("1、基本信息")]
        [DisplayName("节点2")]
        [Browsable(true)]
        public new string Node2
        public string Node2
        {
            get
            {
                if (EndNode != null && base.Node2 != EndNode.ID)
                {
                    base.Node2 = EndNode.ID;
                }
                return base.Node2;
            }
            set
@@ -81,22 +71,17 @@
        [Browsable(false)]
        [JsonIgnore]
        public NodeViewModel StartNode { get; set; }
        public NodeViewModel StartNode { get { return (NodeViewModel)base.StartNode; } set { base.StartNode = value; } }
        [Browsable(false)]
        [JsonIgnore]
        public NodeViewModel EndNode { get; set; }
        public NodeViewModel EndNode { get { return (NodeViewModel)base.EndNode; } set { base.EndNode = value; } }
        private PointF _position { get; set; } = new PointF(0, 0);
        public  PointF Position
        {
            get
            {
                //if (StartPoint.Position==new PointF(0,0)  || EndPoint.Position == new PointF(0, 0))
                //{
                //    return new PointF(0,0);
                //}
                //if (_position == new PointF(0, 0))
                {
                    if (StartNode == null || EndNode == null) return _position;
                    var x = (StartNode.Position.X + EndNode.Position.X) / 2;
@@ -107,16 +92,16 @@
                }
                return _position;
            }
            set
            {
                _position = value;
            set
            {
            }
        }
        [Browsable(false)]
        public List<PointF> Points { get; set; }
        public List<PointF> Points { get { return new List<PointF>() { StartNode.Position, EndNode.Position }; } }
        public PointF[] ToArray(bool is3Dview = false)
        {
            if (!is3Dview)
@@ -218,7 +203,7 @@
            }
            set
            {
                Position = new PointF(value, Position.Y);
                //Position = new PointF(value, Position.Y);
            }
        }
        [Category("1、基本信息")]
@@ -233,7 +218,7 @@
            }
            set
            {
                Position = new PointF(Position.X, value);
                //Position = new PointF(Position.X, value);
            }
        }
Hydro.MapView/Base/NodeViewModel.cs
@@ -14,6 +14,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class NodeViewModel : NodeCalcModel, IBaseViewModel
    {
        public NodeViewModel()
Hydro.MapView/Common/Dataset.cs
@@ -10,9 +10,11 @@
using System.Windows.Forms.DataVisualization.Charting;
using Hydro.CommonBase;
using Hydro.CommonBase;
using Newtonsoft.Json;
namespace Hydro.MapView
{
    [Serializable]
    public class Dataset
    {
        public static List<string> listString = new List<string>() { "流量扬程曲线", "流量功率曲线", "流量效率曲线" };
@@ -130,6 +132,7 @@
        public int degree { get { return FitTimes; } set { if (FitTimes != value) this.IsFitted = false; FitTimes = value; } }
        public List<double> ForumParams = null;
        [JsonIgnore]
        public DenseVector coefficients = null; // å­˜å‚¨å¤šé¡¹å¼ç³»æ•°
@@ -141,6 +144,7 @@
        [NonSerialized]
        [JsonIgnore]
        public PumpViewModel pump = null;
Hydro.MapView/Common/MapOption.cs
@@ -6,6 +6,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class MapOption
    {
        public float Link_multiply { get; set; } = 0.6667f;
Hydro.MapView/MapViewNetWork.cs
@@ -15,17 +15,20 @@
using static Hydro.MapView.MapViewEnum;
using Hydro.CommonBase;
using TimePoint = Hydro.CommonBase.TimePoint;
using System.Runtime.InteropServices;
namespace Hydro.MapView
{
    [Serializable]
    public partial class MapViewNetWork : NetWork
    {
        bool use_old = false;
        public string Name;
        private LinkViewModelList _links=new LinkViewModelList();
        public LinkViewModelList Links { get { return _links; } set { base.Links= _links = value; } }
        public List<LinkViewModel> ViewLinks { get { return base.Links.Select(l => (LinkViewModel)l).ToList(); } }
        public List<NodeViewModel> ViewNodes { get { return base.Nodes.Select(n => (NodeViewModel)n).ToList(); } }
        private NodeViewModelList _nodes = new NodeViewModelList();
        public NodeViewModelList Nodes { get { return _nodes; }set { base.Nodes = _nodes = value; } }
        public NodeViewModel StartPoint { get; set; }
@@ -924,4 +927,349 @@
    }
    //构造一个List<LinkViewModel>类,能够实现List的所有功能
    [Serializable]
    public class LinkViewModelList:List<LinkCalcModel>
    {
        //List<LinkCalcModel> base;
        Dictionary<string, LinkViewModel> dict;//
        public LinkViewModelList() : base()
        {
            this.dict = new Dictionary<string, LinkViewModel>();
        }
        //public LinkViewModelList(List<LinkCalcModel> links)
        //{
        //    base = links;
        //    base.ForEach(link =>
        //    {
        //        if (!dict.ContainsKey(link.ID))
        //            dict.Add(link.ID,link);
        //    });
        //}
        public List<LinkViewModel> ViewLinks
        {
            get
            {
                var list = new List<LinkViewModel>();
                base.ForEach(l =>
                {
                    //if (l is LinkViewModel)
                    list.Add((LinkViewModel)l);
                });
                return list;
                //return base.Select(l => (LinkViewModel)l).ToList();
            }
        }
        /// <summary>
        /// æ›´æ–°å­—å…¸
        /// </summary>
        public void UpdateDict()
        {
            this.dict= new Dictionary<string, LinkViewModel>();
            base.ForEach(link =>
            {
                if (!dict.ContainsKey(link.ID))
                    dict.Add(link.ID, (LinkViewModel)link);
            });
        }
        /// <summary>
        /// ä¿®æ”¹æŸä¸ªoldID至newID,同时更新字典
        /// </summary>
        /// <param name="oldID"></param>
        /// <param name="newID"></param>
        public void ChangeID(string oldID,string newID)
        {
            if (dict.ContainsKey(oldID))
            {
                dict[oldID].ID = newID;
                dict.Add(newID, dict[oldID]);
                dict.Remove(oldID);
            }
        }
        /// <summary>
        /// å®žçްAdd方法,同时更新字典
        /// </summary>
        public void Add(LinkViewModel linkCalcModel)
        {
            base.Add(linkCalcModel);
            if (!dict.ContainsKey(linkCalcModel.ID))
                dict.Add(linkCalcModel.ID, linkCalcModel);
        }
        /// <summary>
        /// å®žçްAddRange方法,同时更新字典
        /// </summary>
        /// <param name="linkCalcModels"></param>
        public void AddRange(List<LinkViewModel> linkCalcModels)
        {
            base.AddRange(linkCalcModels);
            linkCalcModels.ForEach(link =>
            {
                if (!dict.ContainsKey(link.ID))
                    dict.Add(link.ID, link);
            });
        }
        public bool RemoveAt(int index)
        {
            if (index < 0 || index >= base.Count) return false;
            var link = base[index];
            base.RemoveAt(index);
            if (dict.ContainsKey(link.ID))
                dict.Remove(link.ID);
            return true;
        }
        /// <summary>
        /// ç»Ÿè®¡æ•°é‡
        /// </summary>
        public int Count { get { return base.Count; } }
        public LinkViewModel this[string ID]
        {
            get
            {
                if (dict.ContainsKey(ID))
                    return dict[ID];
                else
                    return (LinkViewModel)base.Find(l => l.ID == ID);
            }
        }
        public LinkViewModel this[int index]
        {
            get
            {
                return (LinkViewModel)base[index];
            }
        }
        public void Sort()
        {
            base.Sort();
        }
        //实现Sort(Comparison<LinkViewModel> comparison)方法
        public void Sort(Comparison<LinkCalcModel> comparison)
        {
            base.Sort(comparison);
        }
        //实现Select方法
        public void Select(Action<LinkViewModel> action)
        {
            //base.ForEach(action);
            //base.ForEach(action);
            ViewLinks.ForEach(action);
        }
        //实现Find方法
        public LinkViewModel Find(Predicate<LinkViewModel> match)
        {
            //base.Find(match);
            return ViewLinks.Find(match);
        }
        //实现FindAll方法
        public List<LinkViewModel> FindAll(Predicate<LinkViewModel> match)
        {
            return ViewLinks.FindAll(match);
        }
        //实现ForEach方法
        public void ForEach(Action<LinkViewModel> action)
        {
            ViewLinks.ForEach(action);
        }
        //实现RemoveAll方法
        public int RemoveAll(Predicate<LinkCalcModel> match)
        {
            return base.RemoveAll(match);
        }
        /// <summary>
        /// å®žçްRemove方法,同时更新字典
        /// </summary>
        public bool Remove(LinkViewModel linkCalcModel)
        {
            if (base.Remove(linkCalcModel))
            {
                if (dict.ContainsKey(linkCalcModel.ID))
                    dict.Remove(linkCalcModel.ID);
                return true;
            }
            else
                return false;
        }
    }
    //构造一个List<NodeViewModel>类,能够实现List的所有功能
    [Serializable]
    public class NodeViewModelList : List<NodeCalcModel>
    {
        //List<NodeCalcModel> base;
        Dictionary<string, NodeCalcModel> dict;//=new Dictionary<string, NodeCalcModel>();//
        public NodeViewModelList():base()
        {
            this.dict = new Dictionary<string, NodeCalcModel>();
        }
        //public NodeViewModelList(List<NodeCalcModel> nodes)
        //{
        //    base = nodes;
        //    base.ForEach(node =>
        //    {
        //        if (!dict.ContainsKey(node.ID))
        //            dict.Add(node.ID,node);
        //    });
        //}
        /// <summary>
        /// æ›´æ–°å­—å…¸
        /// </summary>
        public void UpdateDict()
        {
            this.dict = new Dictionary<string, NodeCalcModel>();
            base.ForEach(node =>
            {
                if (!dict.ContainsKey(node.ID))
                    dict.Add(node.ID, node);
            });
        }
        /// <summary>
        /// ä¿®æ”¹æŸä¸ªoldID至newID,同时更新字典
        /// </summary>
        /// <param name="oldID"></param>
        /// <param name="newID"></param>
        public void ChangeID(string oldID, string newID)
        {
            if (dict.ContainsKey(oldID))
            {
                dict[oldID].ID = newID;
                dict.Add(newID, dict[oldID]);
                dict.Remove(oldID);
            }
        }
        /// <summary>
        /// å®žçްAdd方法,同时更新字典
        /// </summary>
        public void Add(NodeViewModel nodeCalcModel)
        {
            base.Add(nodeCalcModel);
            if (!dict.ContainsKey(nodeCalcModel.ID))
                dict.Add(nodeCalcModel.ID, nodeCalcModel);
        }
        /// <summary>
        /// å®žçްAddRange方法,同时更新字典
        /// </summary>
        /// <param name="nodeCalcModels"></param>
        public void AddRange(List<NodeViewModel> nodeCalcModels)
        {
            base.AddRange(nodeCalcModels);
            nodeCalcModels.ForEach(node =>
            {
                if (!dict.ContainsKey(node.ID))
                    dict.Add(node.ID, node);
            });
        }
        /// <summary>
        /// å®žçްRemove方法,同时更新字典
        /// </summary>
        public bool Remove(NodeViewModel nodeCalcModel)
        {
            if (base.Remove(nodeCalcModel))
            {
                if (dict.ContainsKey(nodeCalcModel.ID))
                    dict.Remove(nodeCalcModel.ID);
                return true;
            }
            else
                return false;
        }
        public bool RemoveAt(int index)
        {
            if (index < 0 || index >= base.Count) return false;
            var node = base[index];
            base.RemoveAt(index);
            if (dict.ContainsKey(node.ID))
                dict.Remove(node.ID);
            return true;
        }
        /// <summary>
        /// ç»Ÿè®¡æ•°é‡
        /// </summary>
        public int Count { get { return base.Count; } }
        public NodeViewModel this[string ID]
        {
            get
            {
                if (dict.ContainsKey(ID))
                    return (NodeViewModel)dict[ID];
                else
                    return (NodeViewModel)base.Find(l => l.ID == ID);
            }
        }
        public NodeViewModel this[int index]
        {
            get
            {
                return (NodeViewModel)base[index];
            }
        }
        //public List<NodeCalcModel> ToList()
        //{
        //    return base;
        //}
        //实现Sort方法
        public List<NodeViewModel> ViewNodes
        {
            get
            {
                //将NodeCalcModel转换为NodeViewModel
                //return this.Select(l => (NodeViewModel)l).ToList();
                List<NodeViewModel> list = new List<NodeViewModel>();
                foreach (var item in this)
                {
                    list.Add((NodeViewModel)item);
                }
                return list;
            }
        }
        public void Sort()
        {
            base.Sort();
        }
        //实现Sort(Comparison<NodeViewModel> comparison)方法
        public void Sort(Comparison<NodeCalcModel> comparison)
        {
            base.Sort(comparison);
        }
        //实现Select方法
        public void Select(Action<NodeViewModel> action)
        {
            ViewNodes.ForEach(action);
            //base.ForEach(action);
        }
        //实现Find方法
        public NodeViewModel Find(Predicate<NodeViewModel> match)
        {
            return ViewNodes.Find(match);
        }
        //实现FindAll方法
        public List<NodeViewModel> FindAll(Predicate<NodeViewModel> match)
        {
            return ViewNodes.FindAll(match);
        }
        //实现ForEach方法
        public void ForEach(Action<NodeViewModel> action)
        {
            ViewNodes.ForEach(action);
        }
        //实现RemoveAll方法
        public int RemoveAll(Predicate<NodeCalcModel> match)
        {
            return base.RemoveAll(match);
        }
    }
}
Hydro.MapView/MapViewNetWork2Inp.cs
@@ -30,8 +30,8 @@
            StreamReader sr = new StreamReader(filePath);
            //try
            {
                Nodes = new List<NodeCalcModel>();
                Links = new List<LinkCalcModel>();
                Nodes = new NodeViewModelList();
                Links = new LinkViewModelList();
@@ -221,7 +221,7 @@
                                break;
                            case "STATUS":
                                {
                                    LinkViewModel link = (LinkViewModel)Links.Find(l => l.ID == parts.ToString(0, null));
                                    LinkViewModel link = Links.Find(l => l.ID == parts.ToString(0, null));
                                    if (link != null)
                                        link.Status = StringToStatus(parts.ToString(1, "OPEN"));
                                }
@@ -392,13 +392,13 @@
            k1 = 0;
            while (k1 < Links.Count)
            {
                var p = (LinkViewModel)Links[k1];
                var J = (NodeViewModel)Nodes[k2];
                var p = Links[k1];
                var J = Nodes[k2];
                var k0 = k2;
                while (J.ID != p.Node1 && k2 < Nodes.Count)
                {
                    k2++;
                    if (k2 < Nodes.Count) J = (NodeViewModel)Nodes[k2];
                    if (k2 < Nodes.Count) J = Nodes[k2];
                }
                if (k2 == Nodes.Count)
@@ -423,13 +423,13 @@
            k1 = 0;
            while (k1 < Links.Count)
            {
                var p = (LinkViewModel)Links[k1];
                var J = (NodeViewModel)Nodes[k2];
                var p = Links[k1];
                var J = Nodes[k2];
                var k0 = k2;
                while (J.ID != p.Node2 && k2 < Nodes.Count)
                {
                    k2++;
                    if (k2 < Nodes.Count) J = (NodeViewModel)Nodes[k2];
                    if (k2 < Nodes.Count) J = Nodes[k2];
                }
                if (k2 == Nodes.Count)
                {
@@ -593,12 +593,12 @@
            StreamReader sr = new StreamReader(filePath);
            //try
            {
                Nodes = new List<NodeCalcModel>();
                Nodes = new NodeViewModelList();
                //reservoirs = new List<Reservoir>();
                //tanks = new List<Tank>();
                //meters = new List<Meter>();
                Links = new List<LinkCalcModel>();
                Links =new LinkViewModelList();
                //valves = new List<Valve>();
                //repeaters = new List<Repeater>();
@@ -807,12 +807,12 @@
                k2 = 0;
                while (k2 < Links.Count)
                {
                    var p = (LinkViewModel)Links[k2];
                    var J = (NodeViewModel)Nodes[k1];
                    var p = Links[k2];
                    var J = Nodes[k1];
                    while (J.ID != p.Node1 && k1 < Nodes.Count)
                    {
                        k1++;
                        if (k1 < Nodes.Count) J = (NodeViewModel)Nodes[k1];
                        if (k1 < Nodes.Count) J = Nodes[k1];
                    }
                    if (k1 == Nodes.Count)
@@ -832,12 +832,12 @@
                k2 = 0;
                while (k2 < Links.Count)
                {
                    var p = (LinkViewModel)Links[k2];
                    var J = (NodeViewModel)Nodes[k1];
                    var p = Links[k2];
                    var J = Nodes[k1];
                    while (J.ID != p.Node2 && k1 < Nodes.Count)
                    {
                        k1++;
                        if (k1 < Nodes.Count) J = (NodeViewModel)Nodes[k1];
                        if (k1 < Nodes.Count) J =Nodes[k1];
                    }
                    if (k1 == Nodes.Count)
                    {
@@ -900,7 +900,7 @@
            Nodes.ForEach(o0 =>
            {
                var o = (NodeViewModel)o0;
                var o = o0;
                if (!o.Visible) return;
                if (o is JunctionViewModel j)
                    junctionStringBuilder.AppendLine(j.ToString() + $"{j.Level}\tJunction");
@@ -1011,7 +1011,7 @@
            StringBuilder emitterStringBuilder = new StringBuilder();
            emitterStringBuilder.AppendLine(";Junction        \tCoefficient");
            Nodes.ForEach(o => emitterStringBuilder.Append(((NodeViewModel)o).ToEmitterString()));
            Nodes.ForEach(o => emitterStringBuilder.Append((o).ToEmitterString()));
Hydro.MapView/Model/AreaViewModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class AreaViewModel : NodeViewModel, IBaseViewModel
    {
    }
Hydro.MapView/Model/Factory.cs
@@ -6,6 +6,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class Factory
    {
        public string Name { get; set; }
Hydro.MapView/Model/FactoryList.cs
@@ -12,6 +12,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class FactoryList
    {
        public List<Factory> Factories { get; set; }
Hydro.MapView/Model/JunctionViewModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class JunctionViewModel:NodeViewModel
    {
        public override string ToString()
Hydro.MapView/Model/MeterViewModel.cs
@@ -6,6 +6,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class MeterViewModel:NodeViewModel
    {
        public override string ToString()
Hydro.MapView/Model/NozzleViewModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class NozzleViewModel:NodeViewModel
    {
        [Category("2、计算参数")]
Hydro.MapView/Model/PipeViewModel.cs
@@ -8,6 +8,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class PipeViewModel: LinkViewModel
    {
        [Category("1、基本信息")]
Hydro.MapView/Model/PointF3D.cs
@@ -6,6 +6,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class PointF3D
    {
        public float X { get; set; }
Hydro.MapView/Model/PumpNodeViewModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class PumpNodeViewModel:NodeViewModel
    {
        public PumpNodeViewModel()
Hydro.MapView/Model/PumpViewModel.cs
@@ -14,6 +14,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class PumpViewModel : LinkViewModel
    {
        [Browsable(false)]
Hydro.MapView/Model/RepeaterViewModel.cs
@@ -10,6 +10,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class RepeaterViewModel:LinkViewModel
    {
        [Category("1、基本信息")]
Hydro.MapView/Model/ReservoirViewModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class ReservoirViewModel:NodeViewModel
    {
        [Category("2、计算参数")]
Hydro.MapView/Model/TankViewModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class TankViewModel:NodeViewModel
    {
        [Category("2、计算参数")]
Hydro.MapView/Model/ValveNodeViewModel.cs
@@ -8,6 +8,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class ValveNodeViewModel:NodeViewModel
    {
        public string Node1 { get; set; }
Hydro.MapView/Model/ValveViewModel.cs
@@ -7,6 +7,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class ValveViewModel:LinkViewModel
    {
        [Category("1、基本信息")]
Hydro.MapView/Template/Template.cs
@@ -14,6 +14,7 @@
namespace Hydro.MapView
{
    [Serializable]
    public class Template
    {
            private string _ID;
out/Hydro.CodeProvider.dll
Binary files differ
out/Hydro.CommonBase.dll
Binary files differ
out/Hydro.ConfigModel.dll
Binary files differ
out/Hydro.Core.dll
Binary files differ
out/Hydro.HydraulicCore.bsc
Binary files differ
out/Hydro.HydraulicCore.dll
Binary files differ
out/Hydro.HydraulicCore.exp
Binary files differ
out/Hydro.HydraulicCore.lib
Binary files differ
out/Hydro.HydraulicModel.dll
Binary files differ
out/Hydro.HydraulicOptimizer.dll
Binary files differ
out/Hydro.Inp.dll
Binary files differ
out/Hydro.MapUI.dll
Binary files differ
out/Hydro.MapView.dll
Binary files differ
out/TestForm.exe
Binary files differ