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 enum dialogPar { id, textYes, textNo, title, OK, unitTypeId, info, unit, para1, para2 } //public static IUnityContainer container; //public static IContainerExtension _prismContainer; //public static HttpClient client; //public static loginRes userInfo; //public static List Users; public static bool isConfigIniCreateBySys = true; //public static string drawingFileId; 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 根据ID获取用户名称 ///// ///// 根据ID获取用户名称 ///// ///// ///// //public static string GetUserNameById(string id) //{ // if (string.IsNullOrEmpty(id)) // { return ""; } // var user = Users.FirstOrDefault(a => a.F_UserId == id || a.F_Account == id); // if (user != null) // { return user.F_RealName; } // else // { // return ""; // //user = GlobalObject.Users.FirstOrDefault(a => a.F_Account == id); // //return user != null ? user.F_RealName : ""; // } //} //#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 #region 判断是否是电缆 /// /// 判断是否是电缆 /// /// public static bool IsCable(ec_objecttype obj) { if (obj == null) { return false; } var flag = obj.ObjectTypeName.EndsWith("电缆"); return flag; } #endregion #region 取字符串最后的一个或多个数字 /// /// 取字符串最后的一个或多个数字 /// /// 输入字符串 /// 数字前的字符串 /// 最后的数字 /// public static bool GetLastNumber(string input, ref string preInput, ref int num) { string pattern = @"(\d+)$"; // 正则表达式,匹配字符串末尾的一个或多个数字 Match match = Regex.Match(input, pattern); if (match.Success) { preInput = input.Substring(0, input.Length - match.Value.Length); num = int.Parse(match.Value); return true; } else { return false; } } #endregion /// /// /// /// 包括命名空间 /// public static System.Windows.Media.ImageSource ImageSourceFromEmbeddedResourceStream(string resName) { System.Reflection.Assembly assy = System.Reflection.Assembly.GetExecutingAssembly(); //foreach (string resource in assy.GetManifestResourceNames()) //{ // Console.WriteLine(resource);//遍历所有的内嵌资源 //} System.IO.Stream stream = assy.GetManifestResourceStream(resName); if (stream == null) return null; System.Windows.Media.Imaging.BitmapImage img = new System.Windows.Media.Imaging.BitmapImage(); img.BeginInit(); img.StreamSource = stream; img.EndInit(); return img; } public static string GetPCInfo() { string computerName = Environment.MachineName; // 获取计算机名称 string userName = Environment.UserName; // 获取当前用户名称 return $"{computerName} 计算机{userName} 用户"; } } }