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
{
///
/// 线管相关类型扩展
///
public static class ConduitExtension
{
///
/// 获取项目中所有线管类型
///
///
///
public static List GetConduitTypes(this Document doc)
{
List list = doc.GetElements();
return list;
}
///
/// 获取线管类型
///
///
///
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(typeName);
}
///
/// 获取较较大直径的线管
///
///
///
///
public static Conduit GetLargerDiameter(this Conduit first, Conduit second)
{
return first.Diameter.MoreEqual(second.Diameter)
? first
: second;
}
///
/// 获取较较小直径的线管
///
///
///
///
public static Conduit GetSmallerDiameter(this Conduit first, Conduit second)
{
return first.Diameter.LessEqual(second.Diameter)
? first
: second;
}
///
/// 获取线管类型可使用的直径尺寸
///
/// 线管类型
///
public static List 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 conduitSizes = new List();
if (useConduitSizes == null)
{
return conduitSizes;
}
foreach (var size in useConduitSizes)
{
conduitSizes.Add(size);
}
return conduitSizes;
}
}
}