using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Events; using Autodesk.Revit.DB.Plumbing; using Autodesk.Revit.UI; using DevExpress.Utils.Extensions; using HStation.RevitDev.RevitDataExport.Common; using System.Linq; namespace HStation.RevitDev.RevitDataExport.Utility { public class DocumentUtil { public static void RegistDocumentEvent(Application app) { app.DocumentChanged -= App_DocumentChanged; app.DocumentChanged += App_DocumentChanged; } private static void App_DocumentChanged(object sender, DocumentChangedEventArgs e) { var doc = e.GetDocument(); var addedIds = e.GetAddedElementIds(); var removeIds = e.GetDeletedElementIds(); var modifiedIds = e.GetModifiedElementIds(); bool instancePlacing = GlobalResource.InstancePlacing; bool pipePlacing = GlobalResource.PipePlacing; if (pipePlacing || instancePlacing) { foreach (var id in addedIds) { var elem = doc.GetElement(id); if (elem is FamilyInstance fi) { GlobalResource.FamilyInstanceIds.Add(id.IntegerValue.ToString()); TaskDialog.Show("提示", "增加族示例:" + id.IntegerValue.ToString()); } if (elem is Pipe pipe) { GlobalResource.FamilyInstanceIds.Add(id.IntegerValue.ToString()); TaskDialog.Show("提示", "增加管道:" + id.IntegerValue.ToString()); } } } foreach (var id in removeIds) { if (GlobalResource.FamilyInstanceIds.Contains(id.IntegerValue.ToString())) { GlobalResource.FamilyInstanceIds.Remove(id.IntegerValue.ToString()); TaskDialog.Show("提示", "删除元素:" + id.IntegerValue.ToString()); } } foreach (var id in modifiedIds) { if (GlobalResource.FamilyInstanceIds.Contains(id.IntegerValue.ToString())) { } } } } }