Revit API 二次开发实战:打造自定义 BIM 工具
3 min readBIM 推进
RevitAPIC#BIM插件开发
为什么要学 Revit API 开发
Revit 是目前 BIM 领域使用最广泛的建模软件,但原生功能无法满足所有项目需求。通过 Revit API 二次开发,你可以创建自定义插件来自动化重复操作、扩展软件功能,甚至构建企业级的 BIM 管理工具。
开发环境搭建
开发 Revit 插件需要以下工具:
| 工具 | 版本要求 | 用途 |
|---|---|---|
| Visual Studio | 2022+ | IDE |
| .NET Framework | 4.8 | Revit 2024 运行时 |
| Revit SDK | 与 Revit 版本匹配 | API 参考与示例 |
| RevitAPI.dll | 随 Revit 安装 | 核心 API 引用 |
创建项目时选择"类库 (.NET Framework)"模板,并添加 RevitAPI.dll 和 RevitAPIUI.dll 的引用(位于 Revit 安装目录)。
插件基本结构
每个 Revit 插件的入口都是实现 IExternalCommand 接口的类:
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
[Transaction(TransactionMode.Manual)]
public class AutoNumbering : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
// 获取当前文档
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
// 你的业务逻辑写在这里
TaskDialog.Show("提示", "插件运行成功!");
return Result.Succeeded;
}
}
实战案例:房间自动编号
以下示例展示如何批量为 Revit 中的房间设置编号:
[Transaction(TransactionMode.Manual)]
public class RoomNumbering : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
Document doc = commandData.Application
.ActiveUIDocument.Document;
// 获取所有房间
FilteredElementCollector collector =
new FilteredElementCollector(doc);
var rooms = collector
.OfCategory(BuiltInCategory.OST_Rooms)
.WhereElementIsNotElementType()
.ToElements();
using (Transaction tx = new Transaction(doc, "房间自动编号"))
{
tx.Start();
int counter = 1;
foreach (Element room in rooms)
{
room.get_Parameter(BuiltInParameter.ROOM_NUMBER)
.Set($"R-{counter:D3}");
counter++;
}
tx.Commit();
}
TaskDialog.Show("完成",
$"已为 {rooms.Count} 个房间完成编号。");
return Result.Succeeded;
}
}
插件注册与部署
编译完成后,需要创建 .addin 清单文件让 Revit 识别插件:
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>房间自动编号</Name>
<Assembly>MyBIMTools.dll</Assembly>
<FullClassName>MyBIMTools.RoomNumbering</FullClassName>
<ClientId>a1b2c3d4-e5f6-7890-abcd-ef1234567890</ClientId>
<VendorId>MyCompany</VendorId>
</AddIn>
</RevitAddIns>
将 .addin 文件放入 %AppData%\Autodesk\Revit\Addins\{版本号}\ 目录,重启 Revit 即可在"附加模块"选项卡中看到你的插件。
下一步
掌握基础的 IExternalCommand 后,可以探索 IExternalApplication(用于创建自定义功能区面板)、事件订阅(如文档保存时自动检查)、以及 IUpdater 实现模型实时监控。