123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using Autodesk.Revit.DB;
- using Autodesk.Revit.DB.Electrical;
- using FWindSoft.SystemExtensions;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace FWindSoft.Revit
- {
- /// <summary>
- /// 线管相关类型扩展
- /// </summary>
- public static class ConduitExtension
- {
- /// <summary>
- /// 获取项目中所有线管类型
- /// </summary>
- /// <param name="doc"></param>
- /// <returns></returns>
- public static List<ConduitType> GetConduitTypes(this Document doc)
- {
- List<ConduitType> list = doc.GetElements<ConduitType>();
- return list;
- }
- /// <summary>
- /// 获取线管类型
- /// </summary>
- /// <param name="typeName"></param>
- /// <returns></returns>
- public static ConduitType GetConduitType(this Document doc, string typeName)
- {
- var list = doc.GetConduitTypes();
- if (list == null)
- return default(ConduitType);
- ConduitType wireTye = list.FirstOrDefault(t => t.Name.Equals(typeName));
- return wireTye ?? list[0].DuplicateT<ConduitType>(typeName);
- }
- /// <summary>
- /// 获取较较大直径的线管
- /// </summary>
- /// <param name="first"></param>
- /// <param name="second"></param>
- /// <returns></returns>
- public static Conduit GetLargerDiameter(this Conduit first, Conduit second)
- {
- return first.Diameter.MoreEqual(second.Diameter)
- ? first
- : second;
- }
- /// <summary>
- /// 获取较较小直径的线管
- /// </summary>
- /// <param name="first"></param>
- /// <param name="second"></param>
- /// <returns></returns>
- public static Conduit GetSmallerDiameter(this Conduit first, Conduit second)
- {
- return first.Diameter.LessEqual(second.Diameter)
- ? first
- : second;
- }
- /// <summary>
- /// 获取线管类型可使用的直径尺寸
- /// </summary>
- /// <param name="conduitType">线管类型</param>
- /// <returns></returns>
- public static List<ConduitSize> GetConduitSizes(this ConduitType conduitType)
- {
- var document = conduitType.Document;
- var standard = document.GetElement(conduitType.GetParameterElementId(BuiltInParameter.CONDUIT_STANDARD_TYPE_PARAM));
- var standardName = standard.Name.Trim();
- ConduitSizeSettings sizeSettings = ConduitSizeSettings.GetConduitSizeSettings(document);
- ConduitSizes useConduitSizes = null;
- foreach (var sizeItem in sizeSettings)
- {
- if (sizeItem.Key.Trim() == standardName)
- {
- useConduitSizes = sizeItem.Value;
- break;
- }
- }
- List<ConduitSize> conduitSizes = new List<ConduitSize>();
- if (useConduitSizes == null)
- {
- return conduitSizes;
- }
- foreach (var size in useConduitSizes)
- {
- conduitSizes.Add(size);
- }
- return conduitSizes;
- }
- }
- }
|