| | |
| | | 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;
|
| | |
|
| | | namespace HStation.RevitDev.RevitDataExport.Utility
|
| | |
| | |
|
| | | 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();
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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;
|
| | | }
|
| | |
|
| | |
| | | bool isPumpSystemElement = false;
|
| | | foreach (var id in addedIds)
|
| | | {
|
| | | //手动布置的构件如消火栓、热换器等基本不能自动加入到系统中,能自动布置并连接
|
| | | //系统的基本都是三通、四通、弯头、过渡件、管帽这些
|
| | | if (IsConnectedWithPumpSystem(doc, id))
|
| | | {
|
| | | isPumpSystemElement = true;
|
| | |
| | |
|
| | | 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);
|
| | | }
|
| | |
| | |
|
| | | 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>();
|
| | | }
|
| | | |
| | |
|
| | | var collector1 = new FilteredElementCollector(doc).
|
| | | OfCategory(BuiltInCategory.OST_PipeCurves).
|
| | | WhereElementIsNotElementType();
|
| | |
| | | var collector2 = new FilteredElementCollector(doc).
|
| | | OfClass(typeof(FamilyInstance)).
|
| | | WhereElementIsNotElementType();
|
| | |
|
| | | |
| | |
|
| | | var elements1 = collector1.ToElements()?.ToList();
|
| | | var elements2 = collector2.ToElements()?.ToList();
|
| | |
| | | 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))
|
| | |
| | | }
|
| | | RevitMepCategoryService.AddToCache(element);
|
| | | }
|
| | | UpdateLinkerInfo(GlobalResource.CurrentDocument);
|
| | | //UpdateLinkerInfo(GlobalResource.CurrentDocument);
|
| | | }
|
| | |
|
| | | public static void UpdataDocumentCache(this Document doc)
|
| | |
| | | if (!GlobalResource.CurrentDocument.IsValidObject || doc.GetHashCode() != GlobalResource.CurrentDocument.GetHashCode())
|
| | | {
|
| | | GlobalResource.CurrentDocument = doc;
|
| | | GlobalResource.RevitModels = new Dictionary<RevitType, ObservableCollection<ElementModel>>();
|
| | | //GlobalResource.RevitModels = new List<Tuple<string, Dictionary<RevitType, List<string>>>>();
|
| | | }
|
| | | AddUnhandledElements();
|
| | | }
|