using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace _3_2过滤所有外墙
{
[Transaction(TransactionMode.Manual)]
public class Class1:IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document;
//创建一个收集器
FilteredElementCollector collector = new FilteredElementCollector(doc);
//创建一个过滤器,使用类型来过滤
ElementClassFilter classFilter = new ElementClassFilter(typeof(Wall));
//调用收集器的wherepasses函数对元素进行过滤
collector = collector.WherePasses(classFilter);
//遍历收集器,获取想要的元素
foreach (Wall wall in collector)
{
//获取墙类型“功能”参数,它是用来指示墙是否为外墙的
var functionParameter = wall.WallType.get_Parameter(BuiltInParameter.FUNCTION_PARAM);
if (functionParameter!=null &&functionParameter.StorageType==StorageType.Integer)
{
if (functionParameter.AsInteger()==(int)WallFunction.Exterior)
{
//使用wall
}
}
}
return Result.Succeeded;
}
}
}
ElementCategoryFilter,使用类别过滤元素
ElementSymbolFilter,使用族类型顾虑元素