using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Net.Http; using System.Reflection; using System.Runtime.CompilerServices; using System.Text.RegularExpressions; using System.Threading.Tasks; using IniParser; using Prism.DryIoc; using Prism.Ioc; using SWS.Model; using Unity; namespace SWS.Commons { public class GlobalObject { public static string templateForDrawing = "普通图框"; public static string editorPre = "DI_Electrical "; public static string TemplateFile_Template = "普通图框"; public static string configPath = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Roaming\BricsCAD Electrical\Config\AppConfig.ini"); #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 TreeModel { ID = data.DataItemDetailID, Text = data.DataItemName, ChildNodes = childrens }); } else { //没有子节点就添加当前节点Node result.Add(new 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 DBConst { /// /// 图纸类型 /// Be_DrawingType, /// /// 图纸阶段 /// Be_DrawingStage, /// /// 图纸系统 /// Be_DrawingSystem, /// /// 材料统计 /// Be_MaterialCensus, /// /// 材料范围 /// Be_MaterialRange } public enum dialogPar { id, textYes, textNo, title, OK, unitTypeId, info, unit, para1, para2 } public static IContainerRegistry containerRegistry; public static IUnityContainer container; public static IContainerExtension _prismContainer; public static HttpClient client; public static loginRes userInfo; public static List Users; public static List AllDrawings = new List();//所有图纸 public static bool isConfigIniCreateBySys = true; //public static string drawingFileId; public static ec_project curProject; public static DateTime preClickTime = DateTime.Now; 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 = configPath; //FileIniDataParser parser = new FileIniDataParser(); //var data = parser.ReadFile(path); //_LocalFileDirectory = data["Profile"]["strLocalWorkDir"]; _LocalFileDirectory = IniHelper.ReadValueFromIniFile("Profile", "strLocalWorkDir"); 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 判断是否是电缆 /// /// 判断是否是电缆 /// /// 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 #region 系统缓存文件夹 /// /// 系统缓存文件夹 /// /// public static string GetCacheFolder() { string path = Path.Combine(GetLocalFileDirectory(), "Temp"); if (!Directory.Exists(path)) Directory.CreateDirectory(path); return path; } #endregion #region 根据图纸ID获取路径的存放路径 /// /// 根据图纸ID获取路径的存放路径 /// /// /// public static string GetDwgPath(string dwgID) { string fullpath = string.Empty; if (!AllDrawings.Any()) { return fullpath; } fullpath = GetParentPath(dwgID); return fullpath; } private static string GetParentPath(string dwgID) { string path = string.Empty; var node = TreeHelper.GetTreeModel(AllDrawings, dwgID); if (node.NodeType == "0") { path = node.Text + "\\" + path; } if (node.parentId != "0") { path = GetParentPath(node.parentId) + path; } return path; } #endregion #region 本项目dll路径 /// /// 本项目dll路径 /// /// public static string GetDllPath() { string codeBase = Assembly.GetExecutingAssembly().CodeBase; string dllPath = codeBase.Replace("file:///", ""); dllPath = Path.GetDirectoryName(dllPath); return dllPath; } #endregion /// /// /// /// 包括命名空间 /// public static System.Windows.Media.ImageSource ImageSourceFromEmbeddedResourceStream(string resName) { string imgPath = $"SWS.Commons.Images.{resName}"; System.Reflection.Assembly assy = System.Reflection.Assembly.GetExecutingAssembly(); //foreach (string resource in assy.GetManifestResourceNames()) //{ // Console.WriteLine(resource);//遍历所有的内嵌资源 //} System.IO.Stream stream = assy.GetManifestResourceStream(imgPath); 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} 用户"; } } }