Revit 提供了一个快捷过滤器ElementWorkSetFilter来获得一个工作集中的对象。
下面代码从RevitAPI.chm 中获取。
public void WorksetElements(Document doc, Workset workset)
{
// filter all elements that belong to the given workset
FilteredElementCollector elementCollector = new FilteredElementCollector(doc);
ElementWorksetFilter elementWorksetFilter = new ElementWorksetFilter(workset.Id);
ICollection<Element> worksetElemsfounds = elementCollector.WherePasses(elementWorksetFilter).ToElements();
// how many elements were found?
int elementsCount = worksetElemsfounds.Count;
String message = "Element count : " + elementsCount;
// Get name and/or Id of the elements that pass the given filter and show a few of them
int count = 5; // show info for 5 elements only
foreach (Element ele in worksetElemsfounds)
{
if (null != ele)
{
message += "\nElementId : " + ele.Id;
message += ", Element Name : " + ele.Name;
if (0 == --count)
break;
}
}
Autodesk.Revit.UI.TaskDialog.Show("ElementsOfWorkset", message);
}