using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using DevExpress.XtraPrinting.Native; using HStation.RevitDev.Model.ModelEnum; using HStation.RevitDev.RevitDataExport.Common; using HStation.RevitDev.RevitDataExport.Forms; using HStation.RevitDev.RevitDataExport.Utility; using System; using System.Diagnostics; using System.Windows.Forms; namespace HStation.RevitDev.RevitDataExport { /// /// 系统分类 /// [Transaction(TransactionMode.Manual)] public class SystemSelect : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var form = new Form_SystemSelect(commandData); var revitHandle = Process.GetCurrentProcess().MainWindowHandle; form.Show(new WindowHandle(revitHandle)); return Result.Succeeded; } } /// /// 族库管理 /// [Transaction(TransactionMode.Manual)] public class FamilyManager : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var form = new Form_FamilyManager(commandData); var revitHandle = Process.GetCurrentProcess().MainWindowHandle; form.Show(new WindowHandle(revitHandle)); return Result.Succeeded; } } /// /// 构件分类 /// [Transaction(TransactionMode.Manual)] public class AutoClassified : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistViewEvent(commandData); DocumentUtil.RegistDocumentEvent(commandData); commandData.Application.ActiveUIDocument.Document.UpdataDocumentCache(); GlobalResource.InstancePanel.UpdateForm(); DockablePaneUtils.ShowInstancePanel(commandData); return Result.Succeeded; } } /// /// 一键显隐 /// [Transaction(TransactionMode.Manual)] public class HideModels : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var doc = commandData.Application.ActiveUIDocument.Document; commandData.Application.ActiveUIDocument.Document.UpdataDocumentCache(); CacheUtil.HideOrShowModels(commandData.Application.ActiveUIDocument.Document); return Result.Succeeded; } } /// /// 系统检查 /// [Transaction(TransactionMode.Manual)] public class SystemCheck : IExternalCommand { bool m_isFirstTrigger = true; UIApplication m_uiapp = null; ExternalCommandData m_data = null; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var uiapp = commandData.Application; var doc = commandData.Application.ActiveUIDocument.Document; m_uiapp = uiapp; m_data = commandData; doc.UpdataDocumentCache(); m_uiapp.Idling += App_Idling; RevitCommandId id = RevitCommandId.LookupPostableCommandId(PostableCommand.ShowDisconnects); if (uiapp.CanPostCommand(id)) { uiapp.PostCommand(id); } return Result.Succeeded; } private void App_Idling(object sender, Autodesk.Revit.UI.Events.IdlingEventArgs e) { if (m_isFirstTrigger) { m_isFirstTrigger = false; } else { SystemCheckUtils.SystemCheck(m_data); m_uiapp.Idling -= App_Idling; m_isFirstTrigger = true; } } } /// /// 导出模型 /// [Transaction(TransactionMode.Manual)] public class ExportModels : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var doc = commandData.Application.ActiveUIDocument.Document; doc.UpdataDocumentCache(); CacheUtil.SaveCache(commandData.Application.ActiveUIDocument.Document); var result = CacheUtil.ExportZipFile(commandData.Application.ActiveUIDocument.Document); if (result) TaskDialog.Show("提示", "导出完成!"); else TaskDialog.Show("提示", "导出失败,请重试!"); return Result.Succeeded; } } /// /// 水泵 /// [Transaction(TransactionMode.Manual)] public class PumpSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Pump; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 管道 /// [Transaction(TransactionMode.Manual)] public class PipeSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Pipe; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { GlobalResource.CurrentAddinId = commandData.Application.ActiveAddInId; DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 阀门 /// [Transaction(TransactionMode.Manual)] public class ValveSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Valve; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 换热气 /// [Transaction(TransactionMode.Manual)] public class HeatExchangerSystem : IExternalCommand { RevitType m_type = RevitType.RFT_HeatExchanger; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 闷头 /// [Transaction(TransactionMode.Manual)] public class BlockerSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Blocker; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 喷淋头 /// [Transaction(TransactionMode.Manual)] public class ShowerSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Shower; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 三通 /// [Transaction(TransactionMode.Manual)] public class ThreeJointSystem : IExternalCommand { RevitType m_type = RevitType.RFT_ThreeJoint; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 四通 /// [Transaction(TransactionMode.Manual)] public class FourJointSystem : IExternalCommand { RevitType m_type = RevitType.RFT_FourJoint; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 水表 /// [Transaction(TransactionMode.Manual)] public class WaterMeterSystem : IExternalCommand { RevitType m_type = RevitType.RFT_WaterMeter; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 水库 /// [Transaction(TransactionMode.Manual)] public class WaterPoolSystem : IExternalCommand { RevitType m_type = RevitType.RFT_WaterPool; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 水箱 /// [Transaction(TransactionMode.Manual)] public class WaterBoxSystem : IExternalCommand { RevitType m_type = RevitType.RFT_WaterBox; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 弯头 /// [Transaction(TransactionMode.Manual)] public class ElbowSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Elbow; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 消火栓 /// [Transaction(TransactionMode.Manual)] public class FireHydrantSystem : IExternalCommand { RevitType m_type = RevitType.RFT_FireHydrant; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } /// /// 过渡件 /// [Transaction(TransactionMode.Manual)] public class ReducingSystem : IExternalCommand { RevitType m_type = RevitType.RFT_Converter; public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { DocumentUtil.RegistDocumentEvent(commandData); DockablePaneUtils.ShowDockablePanel(commandData, m_type); return Result.Succeeded; } } public class WindowHandle : IWin32Window { private IntPtr _handle; public WindowHandle(IntPtr h) { Debug.Assert(IntPtr.Zero != h, "expected non-null window handle"); _handle = h; } public IntPtr Handle => _handle; } }