| | |
| | | using Autodesk.Revit.DB; |
| | | using HStation.RevitDev.Model.ModelEnum; |
| | | using HStation.RevitDev.RevitDataExport.Common; |
| | | using HStation.RevitDev.RevitDataExport.Entity; |
| | | using HStation.RevitDev.RevitDataExport.Utility; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Collections.ObjectModel; |
| | | using System.Diagnostics; |
| | | using System.IO; |
| | | using System.Linq; |
| | | |
| | | namespace HStation.RevitDev.RevitDataExport.Service |
| | | { |
| | | public class RevitMepCategoryService |
| | | { |
| | | public static Dictionary<string, List<Element>> GroupElements(IEnumerable<Element> systemElems) |
| | | { |
| | | var result = new Dictionary<string, List<Element>>(); |
| | | var parsers = ParserManager.Instance.Parsers; |
| | | foreach (Element elem in systemElems) |
| | | { |
| | | bool pass = false; |
| | | foreach (var parser in parsers) |
| | | { |
| | | if (parser.IsPass(elem)) |
| | | { |
| | | pass = true; |
| | | var key = parser.GetParserName(); |
| | | if (!result.ContainsKey(key)) |
| | | { |
| | | result.Add(key, new List<Element>()); |
| | | } |
| | | if (!result[key].Any(x => x.Id.IntegerValue == elem.Id.IntegerValue)) |
| | | { |
| | | result[key].Add(elem); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (!pass) |
| | | { |
| | | //加入其它构件类型 |
| | | if (!result.ContainsKey("其他")) |
| | | { |
| | | result.Add("其他", new List<Element>()); |
| | | } |
| | | result["其他"].Add(elem); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public static void MatchElement(Element elem) |
| | | { |
| | | using Autodesk.Revit.DB;
|
| | | using HStation.Model;
|
| | | using HStation.RevitDev.Model.ModelEnum;
|
| | | using HStation.RevitDev.RevitDataExport.Common;
|
| | | using HStation.RevitDev.RevitDataExport.Entity;
|
| | | using HStation.RevitDev.RevitDataExport.Utility;
|
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using System.Collections.ObjectModel;
|
| | | using System.Diagnostics;
|
| | | using System.IO;
|
| | | using System.Linq;
|
| | |
|
| | | namespace HStation.RevitDev.RevitDataExport.Service
|
| | | {
|
| | | public class RevitMepCategoryService
|
| | | {
|
| | | public static Dictionary<string, List<Element>> GroupElements(IEnumerable<Element> systemElems)
|
| | | {
|
| | | var result = new Dictionary<string, List<Element>>();
|
| | | var parsers = ParserManager.Instance.Parsers;
|
| | | foreach (Element elem in systemElems)
|
| | | {
|
| | | bool pass = false;
|
| | | foreach (var parser in parsers)
|
| | | {
|
| | | if (parser.IsPass(elem))
|
| | | {
|
| | | pass = true;
|
| | | var key = parser.GetParserName();
|
| | | if (!result.ContainsKey(key))
|
| | | {
|
| | | result.Add(key, new List<Element>());
|
| | | }
|
| | | if (!result[key].Any(x => x.Id.IntegerValue == elem.Id.IntegerValue))
|
| | | {
|
| | | result[key].Add(elem);
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | if (!pass)
|
| | | {
|
| | | //加入其它构件类型
|
| | | if (!result.ContainsKey("其他"))
|
| | | {
|
| | | result.Add("其他", new List<Element>());
|
| | | }
|
| | | result["其他"].Add(elem);
|
| | | }
|
| | | }
|
| | | return result;
|
| | | }
|
| | |
|
| | | public static void AddToCache(Element elem)
|
| | | {
|
| | | var parsers = ParserManager.Instance.Parsers;
|
| | | bool pass = false;
|
| | | var id = elem.Id.IntegerValue.ToString();
|
| | |
| | | {
|
| | | var revitType = parser.GetRevitType();
|
| | | pass = true;
|
| | | |
| | |
|
| | | //把新增构件加入到缓存中
|
| | | if (!GlobalResource.RevitModels.ContainsKey(revitType))
|
| | | {
|
| | | GlobalResource.RevitModels.Add(revitType, new ObservableCollection<ElementModel>());
|
| | | GlobalResource.RevitModels[revitType].Add(new ElementModel
|
| | | {
|
| | | Name = elem.Name,
|
| | | Id = id,
|
| | | LinkIds = /*string.Join(",", linkedIds)*/string.Empty
|
| | | });
|
| | | GlobalResource.ElementIds.Add(id);
|
| | | }
|
| | | else if (!GlobalResource.RevitModels[revitType].Any(x => x.Id == id))
|
| | | {
|
| | | GlobalResource.RevitModels[revitType].Add(new ElementModel
|
| | | {
|
| | | Name = elem.Name,
|
| | | Id = id,
|
| | | LinkIds = /* string.Join(",", linkedIds)*/string.Empty
|
| | | });
|
| | | GlobalResource.ElementIds.Add(id);
|
| | | }
|
| | | GlobalResource.RevitModels.Add(elem, revitType);
|
| | | break;
|
| | | }
|
| | | }
|
| | | if (!pass)
|
| | | {
|
| | | //把新增构件加入到缓存中
|
| | | if (!GlobalResource.RevitModels.ContainsKey(RevitType.RFT_Others))
|
| | | {
|
| | | GlobalResource.RevitModels.Add(RevitType.RFT_Others, new ObservableCollection<ElementModel>());
|
| | | GlobalResource.RevitModels[RevitType.RFT_Others].Add(new ElementModel
|
| | | {
|
| | | Name = elem.Name,
|
| | | Id = id,
|
| | | LinkIds = /*string.Join(",", linkedIds)*/string.Empty
|
| | | });
|
| | | GlobalResource.ElementIds.Add(id);
|
| | | }
|
| | | else if (!GlobalResource.RevitModels[RevitType.RFT_Others].Any(x => x.Id == id))
|
| | | {
|
| | | GlobalResource.RevitModels[RevitType.RFT_Others].Add(new ElementModel
|
| | | {
|
| | | Name = elem.Name,
|
| | | Id = id,
|
| | | LinkIds = /* string.Join(",", linkedIds)*/string.Empty
|
| | | });
|
| | | GlobalResource.ElementIds.Add(id);
|
| | | }
|
| | | //把新增构件加入到缓存[其他]中
|
| | | GlobalResource.RevitModels.Add(elem, RevitType.RFT_Others);
|
| | | }
|
| | | return; |
| | | } |
| | | } |
| | | } |
| | | return;
|
| | | }
|
| | | }
|
| | | }
|