using Autodesk.Revit.DB; using Autodesk.Revit.DB.Plumbing; using Glodon.Revit.Utility; using HStation.RevitDev.Model.AttributeClass; using HStation.RevitDev.RevitDataExport.Common; using HStation.RevitDev.RevitDataExport.Entity; using HStation.RevitDev.RevitDataExport.Entity.ElementModels; using HStation.RevitDev.RevitDataExport.Utility; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace HStation.RevitDev.RevitDataExport.Parser { [RevitType(Model.ModelEnum.RevitType.RFT_WindTurbine)] public class WindTurbineParser : BaseParser { public override List FilterCategories { get { return new List { BuiltInCategory.OST_MechanicalEquipment, BuiltInCategory.OST_GenericModel }; } } public override List FilterRegexes { get { return new List { "空压机" }; } } public override string GetParserName() { return "空压机"; } public override ElementModel Parse(Element elem) { var elemModel = BaseParse(elem); var result = new WindTurbineModel(elemModel); var diameter = ParameterOperator.GetParameterValueAsString(elem, "直径信息"); var length = ParameterOperator.GetParameterValueAsString(elem, "长度"); var flow = ParameterOperator.GetParameterValueAsString(elem, "流量"); var flowSpeed = ParameterOperator.GetParameterValueAsString(elem, "流速"); var pressureLoss = ParameterOperator.GetParameterValueAsString(elem, "压力损失"); var specificFriction = ParameterOperator.GetParameterValueAsString(elem, "比摩阻"); //var kr = ParameterOperator.GetParameterValueAsString(elem, "损失系数K"); result.编号 = elemModel.编号; result.连接构件 = ElementExtense2.GetLinkedElementIds(elemModel.编号); result.直径 = diameter; result.长度 = string.IsNullOrEmpty(length) ? "0.01" : length; result.流量 = flow; result.流速 = flowSpeed; result.压力损失 = pressureLoss; result.比摩阻 = specificFriction; //result.损失系数K = kr; return result; } 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)); } } return result; } } }