FilterableValueProvider 是 Autodesk Revit 中的一个类,它实现了对可过滤值的提供。具体来说,参数、元素和类型都可以通过此类进行筛选和排序。
FilterableValueProvider 类具有一个构造函数,例如:
public FilterableValueProvider(ParameterType parameterType, BuiltInParameter builtInParameter = BuiltInParameter.INVALID, StorageType[] storageTypeFilter = null);
该构造函数需要传入参数类型,且可以选择通过内置参数或存储类型进行过滤操作。
FilterableValueProvider 类还实现了以下方法,可供调用:
通过 Element 对象获取此元素的可过滤值。
通过 Parameter 对象获取此参数的可过滤值。
通过 ElementType 对象获取此类型的可过滤值。
通过 Element 集合获取所有元素的可过滤值。
通过 Parameter 集合获取所有参数的可过滤值。
通过 ElementType 集合获取所有类型的可过滤值。
将传入的字符串列表进行排序。
将传入的字符串列表按给定顺序进行排序。
以下代码展示了如何使用 FilterableValueProvider 类来获取元素的可过滤值:
// 获取门元素的高度可过滤值
FilterableValueProvider provider = new FilterableValueProvider(ParameterType.Length, BuiltInParameter.DOOR_HEIGHT);
IEnumerable<Element> doors = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors).ToList();
IList<string> values = provider.GetValues(doors).ToList();
values = provider.Sort(values, SortOrder.Descending).ToList();
foreach (string value in values)
{
Debug.Print(value);
}
通过以上示例,我们可以获取门元素的高度可过滤值,并按从高到低排序输出。