using Autodesk.Revit.DB; using Autodesk.Revit.UI; using DevExpress.Data.Extensions; using DevExpress.XtraPrinting.Native; using Glodon.Revit.Utility; using HStation.RevitDev.Model.ModelEnum; using HStation.RevitDev.RevitDataExport.Entity; using HStation.RevitDev.RevitDataExport.Entity.ElementModels; using HStation.RevitDev.RevitDataExport.Forms; using HStation.RevitDev.RevitDataExport.Utility; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Reflection; namespace HStation.RevitDev.RevitDataExport.Common { public static class GlobalResource { public static readonly string PluginName = "泵系统分析"; public static readonly string PanelName = "族库"; public static Document CurrentDocument = null; public static UIDocument CurrentUIDocument = null; public static AddInId CurrentAddinId = null; public static string InstancePaneGuid = "A64C3186-4905-4CEC-AB1D-41B39CEA4352"; public static string LastFilePath = string.Empty; public static List>>> RevitModels = new List>>>(); public static RevitType PlacingType = RevitType.RFT_Unknown; public static Wpf_InstancePanel InstancePanel = null; public static Wpf_FamilyPanel FamilyPanel = null; public static int ThumbnailSize = 150; public static string CurrentRevitVersion = string.Empty; public static bool HideMode = false; public static bool IsOtherHidden = false; public static Dictionary DockablePanelDict => new Dictionary { {RevitType.RFT_Pump, "8AF8DA72-120F-44A0-81DD-5DD24EDAB919"}, {RevitType.RFT_Valve, "1A2728E3-51FF-4084-B0B6-F6DAD26A56FB"}, {RevitType.RFT_Pipe, "CB879681-B8E8-4FE2-BF57-4C86068D2C89"}, {RevitType.RFT_FourJoint, "AAB55EEE-8450-4848-9C89-0322BBE94F5A"}, {RevitType.RFT_Elbow, "C357EC81-09FF-41C5-8E32-FE71E30EA394"}, {RevitType.RFT_Blocker, "0250FA8F-56C3-4355-817D-60B515CAD90E"}, {RevitType.RFT_FireHydrant, "34E2EAD1-3D49-46C9-9942-451DD0192229"}, {RevitType.RFT_HeatExchanger, "056EAACD-ED75-4854-8F3C-A4A43007BF31"}, {RevitType.RFT_Converter, "51F22122-04D5-4C28-9E68-1ADED0EABD04"}, {RevitType.RFT_Shower, "D4AA8261-406E-44FF-A1EE-531153FA9709"}, {RevitType.RFT_ThreeJoint, "1BAA114A-E355-402C-B91D-569882D12987"}, {RevitType.RFT_WaterBox, "44951F67-0C2F-4B02-B988-8B5F06295A18"}, {RevitType.RFT_WaterMeter, "28354DCD-C11F-4EE8-89F8-72B9A93FD9E6"}, {RevitType.RFT_WaterPool, "2DFB190E-1FD9-4CC6-8F85-AD3B19745ACF"}, }; public static string BinDirectory { get { string result = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); return result; } } public static string DataDirectory { get { string result = Path.Combine(Path.GetDirectoryName(BinDirectory), "Data"); return result; } } public static string ExportFilePath { get { string result = Path.Combine(DataDirectory, "Export", "export.json"); return result; } } public static string RecordFilePath { get { string result = Path.Combine(DataDirectory, "Config", "record.json"); return result; } } public static string ParamsFilePath { get { string result = Path.Combine(DataDirectory, "Config", "familyparams.json"); return result; } } public static string ConfigFilePath { get { string result = Path.Combine(DataDirectory, "Config", "config.json"); return result; } } public static string SettingFilePath { get { string result = Path.Combine(DataDirectory, "Config", "setting.json"); return result; } } public static string FamilysDirectory { get { string result = Path.Combine(DataDirectory, "Familys"); return result; } } public static string ImageDirectory { get { string result = Path.Combine(DataDirectory, "Image"); return result; } } private static ConfigModel configModel = null; private static ConfigSettingModel configSettingModel = null; public static ConfigSettingModel ConfigSettingModel { get { if (configSettingModel != null) { return configSettingModel; } if (!File.Exists(ConfigFilePath)) { return new ConfigSettingModel() { SystemType= ConfigHelper.SystemType.All }; } var strConfig = File.ReadAllText(SettingFilePath); if (string.IsNullOrEmpty(strConfig)) { return new ConfigSettingModel() { SystemType = ConfigHelper.SystemType.All }; } var ret = Newtonsoft.Json.JsonConvert.DeserializeObject(strConfig); if (ret == null) { return new ConfigSettingModel() { SystemType = ConfigHelper.SystemType.All }; } configSettingModel = ret; return configSettingModel; } } public static ConfigModel ConfigModel { get { if (configModel != null) { return configModel; } if (!File.Exists(ConfigFilePath)) { return new ConfigModel(); } var strConfig = File.ReadAllText(ConfigFilePath); if (string.IsNullOrEmpty(strConfig)) { return new ConfigModel(); } var ret = Newtonsoft.Json.JsonConvert.DeserializeObject(strConfig); if (ret == null) { return new ConfigModel(); } configModel = ret; return configModel; } } public static bool Contains(this List>>> tuples, string id) { var dict = tuples.Find(x => x.Item1 == CurrentDocument.Title)?.Item2; if (dict == null) { return false; } foreach (var pair in dict) { if (pair.Value.Contains(id)) { return true; } } return false; } public static void Add(this List>>> tuples, Element elem, RevitType type = RevitType.RFT_Others) { if (elem == null) { return; } //var ps = elem.GetParameterByProName("是否自定义"); //if ((type != RevitType.RFT_Others && type != RevitType.RFT_Pipe) && (ps == null || !ps.AsString().Equals("是"))) //{ // return; //} var id = elem.Id.IntegerValue.ToString(); if (!tuples.Contains(id)) { var dict = tuples.Find(x => x.Item1 == CurrentDocument.Title)?.Item2; if (dict == null) { dict = new Dictionary>(); tuples.Add(new Tuple>>(elem.Document.Title, dict)); } if (!dict.ContainsKey(type)) { dict.Add(type, new List()); } if (!dict[type].Contains(id)) { dict[type].Add(id); } } } private static ElementModel CreateElementModel(Element elem, RevitType revitType) { return new ElementModel(); } public static void Remove(this List>>> tuples, string id) { if (string.IsNullOrEmpty(id)) { return; } var dict = tuples.Find(x => x.Item1 == CurrentDocument.Title)?.Item2; if (dict == null) { return; } foreach (var pair in dict) { if (pair.Value.Contains(id)) { pair.Value.Remove(id); } } } public static List GetIds(this List>>> tuples) { var ret = new List(); var dict = tuples.Find(x => x.Item1 == CurrentDocument.Title)?.Item2; if (dict == null) { return ret; } foreach (var pair in dict) { if (pair.Key != RevitType.RFT_Others) { var subList = pair.Value; ret.AddRange(subList); } } return ret; } public static List GetOtherIds(this List>>> tuples) { var ret = new List(); var dict = tuples.Find(x => x.Item1 == CurrentDocument.Title)?.Item2; if (dict == null) { return ret; } foreach (var pair in dict) { if (pair.Key == RevitType.RFT_Others) { var subList = pair.Value; ret.AddRange(subList); } } return ret; } public static bool ContainsKey(this List>>> tuples, RevitType type) { var dict = tuples.Find(x => x.Item1 == CurrentDocument.Title)?.Item2; if (dict == null) { return false; } return dict.ContainsKey(type); } } }