From 43bd8ee779a4cca7483bdf73c176b9fb8ebed5e2 Mon Sep 17 00:00:00 2001 From: qin <a@163.com> Date: 星期二, 24 九月 2024 17:24:28 +0800 Subject: [PATCH] 水力计算 --- HStation.RevitDev/RevitDataExport/Utility/DocumentUtil.cs | 134 +++++++++++++++++++------------------------- 1 files changed, 57 insertions(+), 77 deletions(-) diff --git a/HStation.RevitDev/RevitDataExport/Utility/DocumentUtil.cs b/HStation.RevitDev/RevitDataExport/Utility/DocumentUtil.cs index 9f46d5f..14874db 100644 --- a/HStation.RevitDev/RevitDataExport/Utility/DocumentUtil.cs +++ b/HStation.RevitDev/RevitDataExport/Utility/DocumentUtil.cs @@ -1,5 +1,4 @@ -锘縰sing Autodesk.Revit.ApplicationServices; -using Autodesk.Revit.DB; +锘縰sing Autodesk.Revit.DB; using Autodesk.Revit.DB.Events; using Autodesk.Revit.DB.Plumbing; using Autodesk.Revit.UI; @@ -7,13 +6,10 @@ using DevExpress.Utils.Extensions; using HStation.RevitDev.Model.ModelEnum; using HStation.RevitDev.RevitDataExport.Common; -using HStation.RevitDev.RevitDataExport.Entity; using HStation.RevitDev.RevitDataExport.Service; using System; 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,18 +26,18 @@ private static void App_DocumentChanged(object sender, DocumentChangedEventArgs e) { + //褰撳垱寤轰竴涓柊鏂囨。鏃讹紝鍏堟墽琛宒ocumentChanged浜嬩欢锛屽湪鎵ц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); - UpdateLinkerInfo(doc); + AddUnhandledElements(); GlobalResource.InstancePanel.UpdateForm(); } catch (Exception ex) @@ -50,55 +46,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; } @@ -135,6 +106,8 @@ bool isPumpSystemElement = false; foreach (var id in addedIds) { + //鎵嬪姩甯冪疆鐨勬瀯浠跺娑堢伀鏍撱�佺儹鎹㈠櫒绛夊熀鏈笉鑳借嚜鍔ㄥ姞鍏ュ埌绯荤粺涓紝鑳借嚜鍔ㄥ竷缃苟杩炴帴 + //绯荤粺鐨勫熀鏈兘鏄笁閫氥�佸洓閫氥�佸集澶淬�佽繃娓′欢銆佺甯借繖浜� if (IsConnectedWithPumpSystem(doc, id)) { isPumpSystemElement = true; @@ -189,7 +162,11 @@ private static void AddAutoCreated(FamilyInstance fi) { - if (fi.IsWanTou()) + if (fi.IsPipeHat()) + { + GlobalResource.RevitModels.Add(fi, RevitType.RFT_Blocker); + } + else if (fi.IsWanTou()) { GlobalResource.RevitModels.Add(fi, RevitType.RFT_Elbow); } @@ -220,35 +197,22 @@ private static void Application_ViewActivated(object sender, ViewActivatedEventArgs e) { - GlobalResource.CurrentDocument = e.CurrentActiveView.Document; + //鍒囨崲鏂囨。鏃� + if (GlobalResource.CurrentDocument == null || + GlobalResource.CurrentDocument.GetHashCode() != e.CurrentActiveView.Document.GetHashCode()) + { + GlobalResource.CurrentDocument = e.CurrentActiveView.Document; + GlobalResource.InstancePanel.UpdateForm(); + } } - public static List<Element> GetModelElements(this Document doc) + public static List<Element> GetModelElements(this Document doc) { if (!doc.IsValidObject) { return new List<Element>(); } - //FilteredElementCollector collector = null; - //foreach (Category cate in doc.Settings.Categories) - //{ - // if (cate.CategoryType != CategoryType.Model) - // { - // continue; - // } - // var subCollector = new FilteredElementCollector(doc); - // subCollector.OfCategory((BuiltInCategory)(cate.Id.IntegerValue)); - // subCollector.WhereElementIsNotElementType(); - // if (collector == null) - // { - // collector = subCollector; - // } - // else - // { - // collector.UnionWith(subCollector); - // } - //} - // + var collector1 = new FilteredElementCollector(doc). OfCategory(BuiltInCategory.OST_PipeCurves). WhereElementIsNotElementType(); @@ -256,6 +220,8 @@ var collector2 = new FilteredElementCollector(doc). OfClass(typeof(FamilyInstance)). WhereElementIsNotElementType(); + + var elements1 = collector1.ToElements()?.ToList(); var elements2 = collector2.ToElements()?.ToList(); @@ -267,19 +233,33 @@ return elements1; } - public static void AddUnhandledElementsToCache() + 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)) { continue; } - RevitMepCategoryService.MatchElement(element); + RevitMepCategoryService.AddToCache(element); } - UpdateLinkerInfo(GlobalResource.CurrentDocument); + //UpdateLinkerInfo(GlobalResource.CurrentDocument); + } + + public static void UpdataDocumentCache(this Document doc) + { + if (!doc.IsValidObject) + { + return; + } + if (!GlobalResource.CurrentDocument.IsValidObject || doc.GetHashCode() != GlobalResource.CurrentDocument.GetHashCode()) + { + GlobalResource.CurrentDocument = doc; + //GlobalResource.RevitModels = new List<Tuple<string, Dictionary<RevitType, List<string>>>>(); + } + AddUnhandledElements(); } } } -- Gitblit v1.9.3