如题要获取线管类型的可用直径,主要使用到的是ConduitSizeSettings这个类。
namespace Autodesk.Revit.DB.Electrical
{
public class ConduitSizeSettings : Element, IEnumerable<KeyValuePair<string, ConduitSizes>>
{
public static ConduitSizeSettings GetConduitSizeSettings(Document aDoc);
public void AddSize(string standardName, ConduitSize sizeInfo);
public bool CreateConduitStandardTypeFromExisingStandardType(Document pADoc, string newStandardName, string existingStandardName);
public bool DoesConduitStandardTypeExist(string standardName);
public ConduitSizeSettingIterator GetConduitSizeSettingsIterator();
public virtual IEnumerator<KeyValuePair<string, ConduitSizes>> GetEnumerator();
public int GetSizeCount(string standardName);
public bool RemoveConduitStandardType(Document pADoc, string standardName);
public void RemoveSize(string standardName, double nominalDiameter);
}
}
一个扩展的实现方法
/// <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)
{
foreach (var size in useConduitSizes)
{
conduitSizes.Add(size);
}
}
return conduitSizes;
}