在这个教程中我们将学习如何开发一个Revit插件,并利用此插件实现设计自动化。课程中的源代码 可以从github下载。
第一步是创建 C# Libray新项目,这就是我们的”DeleteDoors”插件项目。
1、Visual Studio配置
在VS 界面中需要配置大量元素,以便能够正确编译代码。在工具栏中单击 Debug >🛠 DeleteDors 并按照 以下步骤操作:
1- 使用 Revit v2021 的用户应确保目标框架为 .NET 框架 4.8
2- 将调试器定义为外部程序,并指向revit.exe的路径
3- 定义在构建事件时保存插件的路径
由于是在命令行,因此你可以创建插件事件:
1 | xcopy "$(TargetPath)" "%ProgramData%/Autodesk\Revit\Addins\2021\" |
2、定义引用项
在 VS 的解决方案浏览器中,添加 2 个重要的引用项(扩展.dll): RevitAPI和RevitAPIUI。 你可以浏览”C:\Program Files\Autodesk\Revit 2021”来找到这些引用项。
将这两个引用项的Copy Local属性设置为False。
3、DeleteDoors功能实现
本课程的目标是创建一个外部命令,该命令将能够删除项目中的所有门,并在没有门构件时发出提示消息。
代码中包含 3 个函数:Execute、DeleteAllDoors和DeleteElement,前一个函数会调用后一个。 因此,Execute调用DeleteAllDoors,搜索项目中的所有门并删除。调用DeleteAllDoors功能时, 它调用DeleteElement函数。
如果你想要了解每行代码的详细信息,请参阅我以前关于RevitAPI 的课程。
1 | using System; |
4、插件Manifest
插件manifest使用 XML 创建,它 Revit能够识别扩展命令或应用程序。
1 | <?xml version="1.0" encoding="utf-8"?> |
有两种方法可以将插件manifest保存到其目录中:手动创建.txt文件,然后使用扩展.addin将其保存, 然后通过向VS解决方案添加配置文件并编写命令行自动保存(正如我在上面解释的那样)。
将”DeleteDoors.addin”的Copy Local属性设置为”Copy if newer”。如果插件已修改或目录中不存在, 此属性可将插件复制到正确的位置。
5、PackageContents配置
为了添加.XML 文件到包内容,单击解决方案并添加新项目。选择”XML 文件”并将其重命名 为”PackageContents”,并将下面代码复制进文件。
1 | <?xml version="1.0" encoding="utf-8" ?> |
6、测试DeleteDoors插件
我们已经完成了我们的Revit插件项目,现在是测试它的时候了。单击”开始”或按”F5”以启动Revit应用。 Revit打开后,当看到弹出窗口时,请单击”始终加载”按钮。
如果你查看Add-Ins>External Tools,会看到DeleteDoors插件已加载。
尝试创建一个带墙壁和门的项目,并执行DeleteDoors插件:
如果你尝试执行插件,它将删除门,然后你会得到这个:
果你继续执行该插件,会得到提示消息,指出当前项目中没有任何门。
外部命令:是加载插件到外部工具工具栏的声明界面:
原文链接:Revit插件开发入门 — BimAnt