From e358beb08f5be49703009b64f058ecfbcfeefbd9 Mon Sep 17 00:00:00 2001 From: qin <a@163.com> Date: 星期六, 28 九月 2024 14:27:52 +0800 Subject: [PATCH] 测试standard2.1 --- HStation.RevitDev/RevitDataExport/Plugin/Application.cs | 427 +++++++++++++++++++++++++++++++++++----------------- 1 files changed, 286 insertions(+), 141 deletions(-) diff --git a/HStation.RevitDev/RevitDataExport/Plugin/Application.cs b/HStation.RevitDev/RevitDataExport/Plugin/Application.cs index 23f2770..0f72050 100644 --- a/HStation.RevitDev/RevitDataExport/Plugin/Application.cs +++ b/HStation.RevitDev/RevitDataExport/Plugin/Application.cs @@ -1,141 +1,286 @@ -锘縰sing Autodesk.Revit.Attributes; -using Autodesk.Revit.DB; -using Autodesk.Revit.UI; -using HStation.RevitDev.Model.ModelEnum; -using HStation.RevitDev.RevitDataExport.Common; -using HStation.RevitDev.RevitDataExport.Utility; -using System; -using System.IO; -using System.Reflection; -using System.Windows.Media.Imaging; - -namespace HStation.RevitDev.RevitDataExport.Plugin -{ - [Transaction(TransactionMode.Manual)] - public class Application : IExternalApplication - { - UIControlledApplication m_application; - - public Result OnShutdown(UIControlledApplication application) - { - return Result.Succeeded; - } - - public Result OnStartup(UIControlledApplication application) - { - m_application = application; - Ribbon ribbon = new Ribbon(application); - RibbonPanel ribbonPanel = ribbon.CreateRibbon(); - ribbonPanel.AddSeparator(); - GlobalResource.CurrentRevitVersion = application.ControlledApplication.VersionNumber; - - CreateFamilyBottons(ribbon, ribbonPanel); - ribbonPanel.AddSeparator(); - CreateExportBottons(ribbon, ribbonPanel); - ribbonPanel.AddSeparator(); - - RegistEvent(); - return Result.Succeeded; - } - - private void CreateExportBottons(Ribbon ribbon, RibbonPanel ribbonPanel) - { - string className = "HStation.RevitDev.RevitDataExport.ExportModels"; - string path = Assembly.GetExecutingAssembly().Location; - - PushButtonData pdata = new PushButtonData("Export", "瀵煎嚭", path, className); - PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; - - string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"瀵煎嚭.png"); - pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 - pBtn.ToolTip = "瀵煎嚭妯″瀷鏁版嵁"; - } - - private static void CreateFamilyBottons(Ribbon ribbon, RibbonPanel ribbonPanel) - { - string className1 = "HStation.RevitDev.RevitDataExport.PumpSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Pump, className1); - - string className2 = "HStation.RevitDev.RevitDataExport.ValveSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Valve, className2); - - string className3 = "HStation.RevitDev.RevitDataExport.PipeSystem"; - ribbon.CreateButton_PipeSystem(ribbonPanel, RevitType.RFT_Pipe, className3); - - string className4 = "HStation.RevitDev.RevitDataExport.HeatExchangerSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_HeatExchanger, className4); - - string className5 = "HStation.RevitDev.RevitDataExport.BlockerSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Blocker, className5); - - string className6 = "HStation.RevitDev.RevitDataExport.ShowerSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Shower, className6); - - string className7 = "HStation.RevitDev.RevitDataExport.ThreeJointSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_ThreeJoint, className7); - - string className8 = "HStation.RevitDev.RevitDataExport.FourJointSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_FourJoint, className8); - - string className9 = "HStation.RevitDev.RevitDataExport.WaterMeterSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_WaterMeter, className9); - - string className10 = "HStation.RevitDev.RevitDataExport.WaterPoolSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_WaterPool, className10); - - string className11 = "HStation.RevitDev.RevitDataExport.WaterBoxSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_WaterBox, className11); - - string className12 = "HStation.RevitDev.RevitDataExport.ElbowSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Elbow, className12); - - string className13 = "HStation.RevitDev.RevitDataExport.FireHydrantSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_FireHydrant, className13); - - string className14 = "HStation.RevitDev.RevitDataExport.ReducingSystem"; - ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Reducing, className14); - } - - private void RegistEvent() - { - m_application.ControlledApplication.DocumentOpened += ControlledApplication_DocumentOpened; - m_application.ControlledApplication.DocumentOpening += ControlledApplication_DocumentOpening; - m_application.ControlledApplication.DocumentCreated += ControlledApplication_DocumentCreated; - m_application.ControlledApplication.DocumentCreating += ControlledApplication_DocumentCreating; - - m_application.ControlledApplication.DocumentSaved += ControlledApplication_DocumentSaved; - m_application.ControlledApplication.DocumentSavedAs += ControlledApplication_DocumentSavedAs; - } - - private void ControlledApplication_DocumentSavedAs(object sender, Autodesk.Revit.DB.Events.DocumentSavedAsEventArgs e) - { - CacheUtil.SaveCache(e.Document); - } - - private void ControlledApplication_DocumentSaved(object sender, Autodesk.Revit.DB.Events.DocumentSavedEventArgs e) - { - CacheUtil.SaveCache(e.Document); - } - - private void ControlledApplication_DocumentOpening(object sender, Autodesk.Revit.DB.Events.DocumentOpeningEventArgs e) - { - DockPaneUtil.HideAllDockablePane(m_application); - } - - private void ControlledApplication_DocumentCreated(object sender, Autodesk.Revit.DB.Events.DocumentCreatedEventArgs e) - { - DockPaneUtil.HideAllDockablePane(m_application); - } - - private void ControlledApplication_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e) - { - DockPaneUtil.HideAllDockablePane(m_application); - CacheUtil.ReadCache(e.Document); - } - - private void ControlledApplication_DocumentCreating(object sender, Autodesk.Revit.DB.Events.DocumentCreatingEventArgs e) - { - DockPaneUtil.HideAllDockablePane(m_application); - } - } -} +锘縰sing Autodesk.Revit.Attributes; +using Autodesk.Revit.DB; +using Autodesk.Revit.UI; +using HStation.RevitDev.Model.ModelEnum; +using HStation.RevitDev.RevitDataExport.Common; +using HStation.RevitDev.RevitDataExport.Entity; +using HStation.RevitDev.RevitDataExport.Utility; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Windows.Media.Imaging; + +namespace HStation.RevitDev.RevitDataExport.Plugin +{ + [Transaction(TransactionMode.Manual)] + public class Application : IExternalApplication + { + UIControlledApplication m_application; + + public Result OnShutdown(UIControlledApplication application) + { + return Result.Succeeded; + } + + public Result OnStartup(UIControlledApplication application) + { + m_application = application; + + GlobalResource.CurrentRevitVersion = application.ControlledApplication.VersionNumber; + Ribbon ribbon = new Ribbon(application); + + //姘村姏缁勪欢 + RibbonPanel panel1 = ribbon.CreatePanel("姘村姏缁勪欢"); + CreateFamilyBottons(ribbon, panel1); + + //瀵煎叆瀵煎嚭 + RibbonPanel panel2 = ribbon.CreatePanel("瀵煎叆瀵煎嚭"); + CreateExportBottons(ribbon, panel2); + CreateSystemSelectBotton(ribbon, panel2); + + //鏄剧ず鎺у埗 + RibbonPanel panel3 = ribbon.CreatePanel("鏄剧ず鎺у埗"); + CreateVisibleBotton(ribbon, panel3); + CreateVisibleOtherBotton(ribbon, panel3); + + //鎷撴墤妫�鏌� + RibbonPanel panel4 = ribbon.CreatePanel("鎷撴墤妫�鏌�"); + CreateCheckBotton(ribbon, panel4); + DockPaneUtil.RegistInstanceDockablePanel(application); + + //璁$畻鍒嗘瀽 + RibbonPanel panel5 = ribbon.CreatePanel("璁$畻鍒嗘瀽"); + CreateAnalyBotton(ribbon, panel5); + + //绯荤粺绠$悊 + RibbonPanel panel6 = ribbon.CreatePanel("绯荤粺绠$悊"); + CreateAutoClassifiedBotton(ribbon, panel6); + CreateFamilyManagerBotton(ribbon, panel6); + + RegistEvent(); + return Result.Succeeded; + } + + private void CreateFamilyManagerBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //SystemSelect + string className = "HStation.RevitDev.RevitDataExport.FamilyManager"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("FamilyManager", "鏃忓簱绠$悊", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"鏃忓簱绠$悊.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "鏃忓簱绠$悊"; + } + + private void CreateSystemSelectBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //SystemSelect + string className = "HStation.RevitDev.RevitDataExport.SystemSelect"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("SystemSelect", "瀵煎叆", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"绯荤粺鍒嗙被.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "瀵煎叆"; + } + + private void CreateAutoClassifiedBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //Classified Elements + string className = "HStation.RevitDev.RevitDataExport.AutoClassified"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("AutoClassified", "鏋勪欢鍒嗙被", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"鏋勪欢鍒嗙被.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "鏋勪欢鍒嗙被"; + } + + private void CreateCheckBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //Check Links + string className = "HStation.RevitDev.RevitDataExport.SystemCheck"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("Check", "绯荤粺妫�鏌�", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"绯荤粺妫�鏌�.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "绯荤粺妫�鏌�"; + } + private void CreateAnalyBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //Check Links + string className = "HStation.RevitDev.RevitDataExport.Analy"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("Check", "姘村姏璁$畻", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"姘村姏璁$畻.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "姘村姏璁$畻"; + } + + private void CreateVisibleBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //Hide Or Display Models + string className = "HStation.RevitDev.RevitDataExport.HideModels"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("Hide", "绠$綉鏄鹃殣", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"涓�閿樉闅�.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "绠$綉鏄鹃殣"; + } + + private void CreateVisibleOtherBotton(Ribbon ribbon, RibbonPanel ribbonPanel) + { + //Hide Or Display Models + string className = "HStation.RevitDev.RevitDataExport.HideOtherModels"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("HideOther", "鍏跺畠鏄鹃殣", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"涓�閿樉闅�.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "鍏跺畠鏄鹃殣"; + } + + private void CreateExportBottons(Ribbon ribbon, RibbonPanel ribbonPanel) + { + string className = "HStation.RevitDev.RevitDataExport.ExportModels"; + string path = Assembly.GetExecutingAssembly().Location; + + PushButtonData pdata = new PushButtonData("Export", "瀵煎嚭", path, className); + PushButton pBtn = ribbonPanel.AddItem(pdata) as PushButton; + + string imagePath = Path.Combine(GlobalResource.ImageDirectory, $"瀵煎嚭.png"); + pBtn.LargeImage = new BitmapImage(new Uri(imagePath));//32 * 32 + pBtn.ToolTip = "瀵煎嚭妯″瀷鏁版嵁"; + } + + private static void CreateFamilyBottons(Ribbon ribbon, RibbonPanel ribbonPanel) + { + string className1 = "HStation.RevitDev.RevitDataExport.PumpSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Pump, className1); + + string className2 = "HStation.RevitDev.RevitDataExport.ValveSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Valve, className2); + + string className3 = "HStation.RevitDev.RevitDataExport.PipeSystem"; + ribbon.CreateButton_PipeSystem(ribbonPanel, RevitType.RFT_Pipe, className3); + + //鎹㈢儹鍣� + if (GlobalResource.ConfigSettingModel.SystemType == ConfigHelper.SystemType.All || GlobalResource.ConfigSettingModel.SystemType == ConfigHelper.SystemType.CirculatingWater) + { + string className4 = "HStation.RevitDev.RevitDataExport.HeatExchangerSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_HeatExchanger, className4); + } + + string className5 = "HStation.RevitDev.RevitDataExport.BlockerSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Blocker, className5); + + //鍠锋穻澶� + if (GlobalResource.ConfigSettingModel.SystemType == ConfigHelper.SystemType.All || GlobalResource.ConfigSettingModel.SystemType == ConfigHelper.SystemType.Spray) + { + string className6 = "HStation.RevitDev.RevitDataExport.ShowerSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Shower, className6); + } + + string className7 = "HStation.RevitDev.RevitDataExport.ThreeJointSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_ThreeJoint, className7); + + string className8 = "HStation.RevitDev.RevitDataExport.FourJointSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_FourJoint, className8); + + string className9 = "HStation.RevitDev.RevitDataExport.WaterMeterSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_WaterMeter, className9); + + string className10 = "HStation.RevitDev.RevitDataExport.WaterPoolSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_WaterPool, className10); + + string className11 = "HStation.RevitDev.RevitDataExport.WaterBoxSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_WaterBox, className11); + + string className12 = "HStation.RevitDev.RevitDataExport.ElbowSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Elbow, className12); + + //娑堢伀鏍� + if (GlobalResource.ConfigSettingModel.SystemType == ConfigHelper.SystemType.All || GlobalResource.ConfigSettingModel.SystemType == ConfigHelper.SystemType.Fire) + { + string className13 = "HStation.RevitDev.RevitDataExport.FireHydrantSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_FireHydrant, className13); + } + + string className14 = "HStation.RevitDev.RevitDataExport.ReducingSystem"; + ribbon.CreateButton_SystemAnalysis(ribbonPanel, RevitType.RFT_Converter, className14); + } + + private void RegistEvent() + { + m_application.ControlledApplication.DocumentOpened += ControlledApplication_DocumentOpened; + m_application.ControlledApplication.DocumentOpening += ControlledApplication_DocumentOpening; + m_application.ControlledApplication.DocumentCreated += ControlledApplication_DocumentCreated; + m_application.ControlledApplication.DocumentCreating += ControlledApplication_DocumentCreating; + + m_application.ControlledApplication.DocumentSaved += ControlledApplication_DocumentSaved; + m_application.ControlledApplication.DocumentSavedAs += ControlledApplication_DocumentSavedAs; + + } + + private void ControlledApplication_DocumentSavedAs(object sender, Autodesk.Revit.DB.Events.DocumentSavedAsEventArgs e) + { + CacheUtil.SaveCache(e.Document); + } + + private void ControlledApplication_DocumentSaved(object sender, Autodesk.Revit.DB.Events.DocumentSavedEventArgs e) + { + CacheUtil.SaveCache(e.Document); + } + + private void ControlledApplication_DocumentOpening(object sender, Autodesk.Revit.DB.Events.DocumentOpeningEventArgs e) + { + DockPaneUtil.HideAllDockablePane(m_application); + } + + private void ControlledApplication_DocumentCreated(object sender, Autodesk.Revit.DB.Events.DocumentCreatedEventArgs e) + { + var doc = e.Document; + GlobalResource.CurrentDocument = e.Document; + DockPaneUtil.HideAllDockablePane(m_application); + var cache = GlobalResource.RevitModels.Find(x => x.Item1 == doc.Title); + if (cache == null) + { + GlobalResource.RevitModels.Add(new Tuple<string, Dictionary<RevitType, List<string>>>(doc.Title, new Dictionary<RevitType, List<string>>())); + } + } + + private void ControlledApplication_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e) + { + DockPaneUtil.HideAllDockablePane(m_application); + GlobalResource.CurrentDocument = e.Document; + CacheUtil.InitCache(e.Document); + DocumentUtil.UpdataDocumentCache(e.Document); + } + + private void ControlledApplication_DocumentCreating(object sender, Autodesk.Revit.DB.Events.DocumentCreatingEventArgs e) + { + DockPaneUtil.HideAllDockablePane(m_application); + } + } +} -- Gitblit v1.9.3