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