Revit二次开发 - 构件过滤器(FilteredElementCollector)
本文演示如何获取Revit文件中的墙类型。
1.用Revit绘制模型
该模型中包含墙和门。
2.获取墙类型
2.1 OfCategory(BuiltInCategory.OST_Walls)
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Windows.Forms;
namespace RevitAddin3
{
[TransactionAttribute(TransactionMode.Manual)]
public class RevitAddin : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc);
var walls = collector.OfCategory(BuiltInCategory.OST_Walls);
string name = "";
foreach (var item in walls)
{
name += item.Name + "\n";
}
MessageBox.Show(name, "信息");
return Result.Succeeded;
}
}
}
执行结果:
2.2 OfClass(typeof(WallType))
将语句
var walls = collector.OfCategory(BuiltInCategory.OST_Walls);
替换为
var walls = collector.OfClass(typeof(WallType));
执行结果相同。
2.3 OfClass(typeof(Wall))
将语句
var walls = collector.OfCategory(BuiltInCategory.OST_Walls);
替换为
var walls = collector.OfClass(typeof(Wall));
执行结果