using 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.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();
|
|
CreateVisibleBotton(ribbon, ribbonPanel);
|
ribbonPanel.AddSeparator();
|
|
CreateCheckBotton(ribbon, ribbonPanel);
|
ribbonPanel.AddSeparator();
|
|
//AutoClassified SystemSelect
|
CreateAutoClassifiedBotton(ribbon, ribbonPanel);
|
DockPaneUtil.RegistInstanceDockablePanel(application);
|
ribbonPanel.AddSeparator();
|
|
CreateSystemSelectBotton(ribbon, ribbonPanel);
|
ribbonPanel.AddSeparator();
|
|
CreateFamilyManagerBotton(ribbon, ribbonPanel);
|
ribbonPanel.AddSeparator();
|
|
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 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 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_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)
|
{
|
DockPaneUtil.HideAllDockablePane(m_application);
|
GlobalResource.RevitModels = new Dictionary<RevitType, ObservableCollection<ElementModel>>();
|
GlobalResource.CurrentDocument = e.Document;
|
}
|
|
private void ControlledApplication_DocumentOpened(object sender, Autodesk.Revit.DB.Events.DocumentOpenedEventArgs e)
|
{
|
DockPaneUtil.HideAllDockablePane(m_application);
|
GlobalResource.CurrentDocument = e.Document;
|
CacheUtil.InitCache(e.Document);
|
}
|
|
private void ControlledApplication_DocumentCreating(object sender, Autodesk.Revit.DB.Events.DocumentCreatingEventArgs e)
|
{
|
DockPaneUtil.HideAllDockablePane(m_application);
|
}
|
}
|
}
|