using IniParser; using Prism.Ioc; using SWS.Commons; using SWS.Model; using SWS.Service; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Net.Http; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using Unity; using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; namespace SWS.CAD { public class GlobalObje { public static string templateForDrawing = "普通图框"; public static string editorPre = "DI_Electrical "; public static string TemplateFile_Template = "普通图框"; public enum DBConst { /// /// 图纸类型 /// Be_DrawingType, /// /// 图纸阶段 /// Be_DrawingStage, /// /// 图纸系统 /// Be_DrawingSystem, /// /// 材料统计 /// Be_MaterialCensus, /// /// 材料范围 /// Be_MaterialRange } #region 图纸类型 static List _dwgType; /// /// 初始化图纸类型列表 /// /// public static List DwgType() { var res0 = new ec_dataitem { DataItemName = "图纸类型", DataItemCode = DBConst.Be_DrawingType.ToString() }; if (_dwgType == null) { var serv = GlobalObject.container.Resolve(); var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingType.ToString())); var res2 = res.Result; return res2; } else { return _dwgType; } } #endregion #region 材料范围 static List _dwgMaterialRange; /// /// 初始化材料材料范围 /// /// public static List DwgMaterialRange() { var res0 = new ec_dataitem { DataItemName = "材料范围", DataItemCode = DBConst.Be_MaterialRange.ToString() }; if (_dwgMaterialRange == null) { var serv = GlobalObject.container.Resolve(); var res = Task.Run(() => serv.GetDetails(DBConst.Be_MaterialRange.ToString())); var res2 = res.Result; return res2; } else { return _dwgMaterialRange; } } #endregion #region 材料统计 static List _dwgMaterialCensus; /// /// 初始化材料统计列表 /// /// public static List DwgMaterialCensus() { var res0 = new ec_dataitem { DataItemName = "材料统计", DataItemCode = DBConst.Be_MaterialCensus.ToString() }; if (_dwgMaterialCensus == null) { var serv = GlobalObject.container.Resolve(); var res = Task.Run(() => serv.GetDetails(DBConst.Be_MaterialCensus.ToString())); var res2 = res.Result; return res2; } else { return _dwgMaterialCensus; } } #endregion #region 图纸阶段 static List _dwgStage; /// /// 初始化图纸阶段列表 /// /// public static List DwgStage() { var res0 = new ec_dataitem { DataItemName = "图纸阶段", DataItemCode = DBConst.Be_DrawingStage.ToString() }; if (_dwgStage == null) { var serv = GlobalObject.container.Resolve(); var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingStage.ToString())); var res2 = res.Result; return res2; } else { return _dwgStage; } } #endregion #region 图纸系统 static ObservableCollection _dwgSystem; /// /// 初始化图纸系统列表 /// /// public static ObservableCollection DwgSystem() { var res0 = new ec_dataitem { DataItemName = "图纸系统", DataItemCode = DBConst.Be_DrawingSystem.ToString() }; if (_dwgSystem == null) { var serv = GlobalObject.container.Resolve(); var res = Task.Run(() => serv.GetDetails(DBConst.Be_DrawingSystem.ToString())); var res2 = res.Result; var res3 = DataItemDetailsToTree(res2); return res3; } else { return _dwgSystem; } } #endregion #region DataItemDetail列表转换成树形结果 /// /// DataItemDetail列表转换成树形结果 /// /// 列表数据 /// 是否子节点遍历添加 /// public static ObservableCollection DataItemDetailsToTree(List listData, bool isChildres = false) { ObservableCollection result = new ObservableCollection(); List list = new List(); if (isChildres) { list = listData; } else { //取所有第一级树 list = listData.Where(a => a.UpDataItemDetailID == "0").ToList(); } foreach (var data in list) { //获取当前节点的所有子节点 var details = listData.Where(a => a.UpDataItemDetailID == data.DataItemDetailID).ToList(); if (details.Any()) { //获取子节点 var childrens = DataItemDetailsToTree(details, true); result.Add(new Model.TreeModel { ID = data.DataItemDetailID, Text = data.DataItemName, ChildNodes = childrens }); } else { //没有子节点就添加当前节点Node result.Add(new Model.TreeModel { ID = data.DataItemDetailID, Text = data.DataItemName, }); } } return result; } #endregion #region 对象类型树 /// /// 对象类型树 /// public static List objectTypeTree = new List(); #endregion #region 设计浏览树 /// /// 设计浏览树 /// public static List designTree = new List(); #endregion public static bool isConfigIniCreateBySys = true; public static ec_project curProject; public static DateTime preClickTime = DateTime.Now; public static Style TransparentComboBoxStyle; public static Style WhiteStyle; public static Unit UnitSelected; public static List Units; /// /// 打开的图纸名列表 /// public static List ListDwgOpened = new List(); /// /// 图纸树上的所有图纸名 /// public static List AllDwgName = new List(); public static string currentTagNumber; #region 本地文件目录 static string _LocalFileDirectory; /// /// 获取本地目录文件夹 /// /// public static string GetLocalFileDirectory() { if (string.IsNullOrEmpty(_LocalFileDirectory)) { string path = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Roaming\SWS\Config.ini"); FileIniDataParser parser = new FileIniDataParser(); var data = parser.ReadFile(path); _LocalFileDirectory = data["Profile"]["Directory"]; return _LocalFileDirectory; } else { return _LocalFileDirectory; } } /// /// 设置本地目录文件夹 /// /// 文件夹目录 public static void SetLocalFileDirectory(string dir) { _LocalFileDirectory = dir; } #endregion #region 图纸文件所在文件夹 /// /// 图纸文件所在文件夹 /// /// public static string GetDwgFileFolder() { string path = Path.Combine(GetLocalFileDirectory(), curProject.ProjectIndex.ToString()); if (!Directory.Exists(path)) Directory.CreateDirectory(path); return path; } #endregion #region 图纸文件备份文件夹 /// /// 图纸文件备份文件夹 /// /// public static string GetBackupDwgFileFolder() { string path = Path.Combine(GetDwgFileFolder(), "Backup"); if (!Directory.Exists(path)) Directory.CreateDirectory(path); return path; } #endregion #region 查找子控件 /// /// 查找子控件 /// /// 子控件的类型 /// 要找的是obj的子控件 /// 想找的子控件的Name属性 /// 目标子控件 public static T GetChildObject(DependencyObject obj, string name) where T : FrameworkElement { DependencyObject child = null; T grandChild = null; for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++) { child = VisualTreeHelper.GetChild(obj, i); if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name))) { return (T)child; } else { // 在下一级中没有找到指定名字的子控件,就再往下一级找 grandChild = GetChildObject(child, name); if (grandChild != null) return grandChild; } } return null; } #endregion } }