qin
2024-08-15 763de811220b4b724f355965c156ce95d62d64e5
HStation.RevitDev/RevitDataExport/Utility/DocumentUtil.cs
@@ -1,5 +1,4 @@
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Events;
using Autodesk.Revit.DB.Plumbing;
using Autodesk.Revit.UI;
@@ -13,7 +12,6 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using static DevExpress.Data.Mask.Internal.RegExMaskMath.CloudOfInts;
namespace HStation.RevitDev.RevitDataExport.Utility
{
@@ -30,16 +28,16 @@
        private static void App_DocumentChanged(object sender, DocumentChangedEventArgs e)
        {
            //当创建一个新文档时,先执行documentChanged事件,在执行documentCreated事件
            var doc = e.GetDocument();
            GlobalResource.CurrentDocument = doc;
            try
            {
                var addedIds = e.GetAddedElementIds();
                var removeIds = e.GetDeletedElementIds();
                var modifiedIds = e.GetModifiedElementIds();
                AddElements(doc,  addedIds);
                AddElements(doc, addedIds);
                RemoveElements(removeIds);
                ModifyElements(modifiedIds);
                AddUnhandledElements();
                GlobalResource.InstancePanel.UpdateForm();
@@ -50,55 +48,30 @@
            }
        }
        private static void UpdateLinkerInfo(Document doc)
        {
            if (!doc.IsValidObject) { return; }
        //private static void UpdateLinkerInfo(Document doc)
        //{
        //    if (!doc.IsValidObject) { return; }
            foreach (var pair in GlobalResource.RevitModels)
            {
                foreach (var model in pair.Value)
                {
                    var id = model.Id;
                    var element = doc.GetElement(new ElementId(int.Parse(id)));
                    var linkedElems = element.GetConnectElements();
                    var linkedIds = linkedElems.Select(x => x.Id.IntegerValue.ToString());
                    model.LinkIds = string.Join(",", linkedIds);
                }
            }
        }
        //    foreach (var pair in GlobalResource.RevitModels)
        //    {
        //        foreach (var id in pair.Value)
        //        {
        //            if (id == null) { continue; }
        private static void ModifyElements(ICollection<ElementId> modifiedIds)
        {
            foreach (var id in modifiedIds)
            {
            }
        }
        //            var element = doc.GetElement(new ElementId(int.Parse(id)));
        //            var linkedElems = element.GetConnectElements();
        //            var linkedIds = linkedElems.Select(x => x.Id.IntegerValue.ToString());
        //            model.LinkIds = string.Join(",", linkedIds);
        //        }
        //    }
        //}
        private static void RemoveElements(ICollection<ElementId> removeIds)
        {
            foreach (var id in removeIds)
            {
                var strId = id.IntegerValue.ToString();
                if (GlobalResource.RevitModels.Contains(strId))
                {
                    GlobalResource.RevitModels.Remove(id.IntegerValue.ToString());
                    foreach (var pair in GlobalResource.RevitModels)
                    {
                        var values = pair.Value;
                        var model = values.Where(x => x.Id == strId)?.ToList();
                        if (model == null || model.Count() == 0)
                        {
                            continue;
                        }
                        else
                        {
                            values.Remove(model[0]);
                        }
                    }
                }
                GlobalResource.RevitModels.Remove(id.IntegerValue.ToString());
            }
            return;
        }
@@ -223,13 +196,13 @@
            GlobalResource.CurrentDocument = e.CurrentActiveView.Document;
        }
        public static List<Element> GetModelElements(this Document doc)
        public static List<Element> GetModelElements(this Document doc)
        {
            if (!doc.IsValidObject)
            {
                return new List<Element>();
            }
            var collector1 = new FilteredElementCollector(doc).
                OfCategory(BuiltInCategory.OST_PipeCurves).
                WhereElementIsNotElementType();
@@ -251,7 +224,7 @@
        public static void AddUnhandledElements()
        {
            var elements = GlobalResource.CurrentDocument.GetModelElements();
            foreach (var element in elements)
            foreach (var element in elements)
            {
                var id = element.Id.IntegerValue.ToString();
                if (GlobalResource.RevitModels.Contains(id))
@@ -260,7 +233,7 @@
                }
                RevitMepCategoryService.AddToCache(element);
            }
            UpdateLinkerInfo(GlobalResource.CurrentDocument);
            //UpdateLinkerInfo(GlobalResource.CurrentDocument);
        }
        public static void UpdataDocumentCache(this Document doc)
@@ -272,7 +245,7 @@
            if (!GlobalResource.CurrentDocument.IsValidObject || doc.GetHashCode() != GlobalResource.CurrentDocument.GetHashCode())
            {
                GlobalResource.CurrentDocument = doc;
                GlobalResource.RevitModels = new Dictionary<RevitType, ObservableCollection<ElementModel>>();
                GlobalResource.RevitModels = new Dictionary<RevitType, List<string>>();
            }
            AddUnhandledElements();
        }