using Hydro.CommonBase; using Hydro.Inp; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.Remoting.Metadata; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static Hydro.MapView.MapViewEnum; namespace Hydro.MapView { [Serializable] public class Template { private string _ID; [Category("基本信息")] [Description("对象的ID唯一标识")] [DisplayName("模板ID")] [Browsable(true)] public string ID { get { if (_ID == null || _ID == "") _ID = Guid.NewGuid().ToString(); return _ID; } set { _ID = value; } } [Category("基本信息")] [DisplayName("名称")] public string Name { get; set; } public MapOption mapOption { get; set; } = new MapOption(); private string _filePath = null; [Category("计算参数")] [DisplayName("路径INP")] public string filePath { get { return _filePath; } set { var filePath = value; var CurDir = Directory.GetCurrentDirectory(); if (filePath != null && filePath.IndexOf(CurDir) >= 0) { filePath = filePath.Replace(CurDir, ""); if (filePath[0] == '\\') filePath = filePath.Substring(1); } _filePath = filePath; } } [Browsable(false)] public PointF3D OffSet { get; set; } = new PointF3D(0, 0, 0); private string _BackGroundImg_FullPath; [Browsable(false)] public string BackGroundImg_FullPath { get { if (string.IsNullOrEmpty(_BackGroundImg_FullPath)) { FileInfo fi = new FileInfo(FullPath); return fi.FullName.Substring(0, fi.FullName.Length - fi.Extension.Length) + ".png"; } else return _BackGroundImg_FullPath; } set { _BackGroundImg_FullPath = value; } } public float BackGroundElev = 0; /// /// 底图X /// public float BackGroundImgX = 0; /// /// 底图Y /// public float BackGroundImgY = 0; /// /// 底图高度 /// public float BackGroundImgHeight = 0; /// /// 底图宽度 /// public float BackGroundImgWidth = 0; /// /// 底图旋转角度 /// public float BackGroundImgRotaAngle = 0; public PointF BackGroundPoint1 = new PointF(); public PointF BackGroundPoint2 = new PointF(); [Browsable(false)] public string FullPath { get { if (filePath != null) filePath = filePath.TrimStart('\\'); return Path.Combine(Directory.GetCurrentDirectory(), (filePath == null ? "" : filePath)); } } [Browsable(false)] public string ImportExcelPath { get; set; } [Browsable(false)] public int ImportExcelIndex { get; set; } [Category("计算参数")] [DisplayName("最高级数")] public int MaxLevel { get; set; } = 99; [Category("基本信息")] [Description("类型")] [DisplayName("类型")] [Browsable(true)] public TemplateType Type { get; set; } public Template() { ID = new Guid().ToString(); Name = "临时"; filePath = null; } public Template(string ID, string name, string address, TemplateType type) { if (ID == null) this.ID = new Guid().ToString(); Name = name; filePath = address; Type = type; } [Category("其他参数")] [Description("对象的ID唯一标识")] [Browsable(false)] [NonSerialized] public MapViewNetWork network = null; [Category("楼层")] [DisplayName("楼层")] public List Regions { get; set; } = null;// new List(); [Category("基本信息")] [DisplayName("标高")] [Browsable(false)] public float Elev { get { return 0; } } [Browsable(false)] public float Diameter { get { return 0; } } [Browsable(false)] public float Level { get { return 0; } } [Category("其他参数")] [DisplayName("开始节点")] public string Node1 { get; set; } [Category("其他参数")] [DisplayName("结束节点")] public string Node2 { get; set; } [Browsable(false)] public string X { get; set; } [Browsable(false)] public string Y { get; set; } [Browsable(false)] public string Visible { get; set; } [Category("默认视角")] [DisplayName("视角")] [Browsable(false)] public MapDimensions view { get; set; } = null; [Category("默认视角")] [DisplayName("中心X")] [Browsable(true)] public float CenterX { get { if (view != null) return view.Center.X; else return 0; } set { if (view == null) view = new MapDimensions(); view.Center = new PointF(value, view.Center.Y); } } [Category("默认视角")] [DisplayName("中心Y")] [Browsable(true)] public float CenterY { get { if (view != null) return view.Center.Y; else return 0; } set { if (view == null) view = new MapDimensions(); view.Center = new PointF(view.Center.X, value); } } [Category("默认视角")] [DisplayName("缩放")] [Browsable(true)] public float zoom { get { if (view != null) return view.zoom; else return 1f; } set { if (view == null) view = new MapDimensions(); view.zoom = value; } } [Category("默认视角")] [DisplayName("旋转角度")] [Browsable(true)] public double rotation { get { if (view != null) return view.rotation; else return 0; } set { if (view == null) view = new MapDimensions(); view.rotation = value; } } [Category("默认视角")] [DisplayName("俯视角度")] [Browsable(true)] public double rotationF { get { if (view != null) return view.rotationF; else return 90; } set { if (view == null) view = new MapDimensions(); view.rotationF = value; } } public override string ToString() { return Name; } public void Export(string path) { network.BuildToInp(path); //SaveFileDialog saveFileDialog = new SaveFileDialog(); //saveFileDialog.Filter = "Temporary Files (*.temp)|*.temp"; //saveFileDialog.InitialDirectory = Directory.GetCurrentDirectory() + $@"\template\{类型}"; //saveFileDialog.FileName = 名称; //if (saveFileDialog.ShowDialog() == DialogResult.OK) //{ // string filePath = saveFileDialog.FileName; // // 使用 filePath 变量来保存文件 // //temp.路径 = filePath; //} } public bool loadInpFile() { network = new MapViewNetWork(); var result = network.BuildFromInp(FullPath); if (result) { network.MapObjects.ForEach(o => { if (o.Level > MaxLevel) o.Visible = false; else o.Visible = true; }); return true; } else return false; } [DisplayName("颜色分级方案")] public List Colours { get; set; } = new List(); //public Trigger triggers; } }