using Autodesk.Revit.DB; using Autodesk.Revit.DB.Plumbing; using Glodon.Revit.Utility; using HStation.RevitDev.RevitDataExport.Common; using HStation.RevitDev.RevitDataExport.Utility; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HStation.RevitDev.RevitDataExport.Parser { /// /// 水箱 /// public class ShuiXiangParser : BaseParser { public override List FilterCategories { get { return new List { BuiltInCategory.OST_PipeAccessory, BuiltInCategory.OST_MechanicalEquipment, BuiltInCategory.OST_PipeFitting, BuiltInCategory.OST_GenericModel }; } } public override List FilterRegexes { get { return new List { "水箱" }; } } public override string GetParserName() { return "水箱"; } public override List> PropertyParse(Element elem) { var result = new List>(); var fi = elem as FamilyInstance; if (fi == null) { return result; } var connectInfos = MEPHelper.GetConnecters(fi); result.AddRange(CommonPropertyParse(elem)); for (int i = 1; i <= 5; i++) { if (connectInfos.Count >= i) { result.Add(new Tuple($"连接点{i}", connectInfos[i - 1]?.ElementId.ToString())); } else { result.Add(new Tuple($"连接点{i}", string.Empty)); } } var initlevel = ParameterOperator.GetParameterValueAsDouble(elem, "水位"); //(pipe.Location as LocationCurve).Curve.Length.FeetToMM(); if (initlevel.HasValue) { result.Add(new Tuple($"水位", initlevel.Value.ToString("f2"))); } var minlevel = ParameterOperator.GetParameterValueAsDouble(elem, "最低水位"); //(pipe.Location as LocationCurve).Curve.Length.FeetToMM(); if (minlevel.HasValue) { result.Add(new Tuple($"最低水位", minlevel.Value.ToString("f2"))); } var maxlevel = ParameterOperator.GetParameterValueAsDouble(elem, "最高水位"); //(pipe.Location as LocationCurve).Curve.Length.FeetToMM(); if (maxlevel.HasValue) { result.Add(new Tuple($"最高水位", maxlevel.Value.ToString("f2"))); } return result; } } }