Revit二次开发环境搭建(Revit 2019+Visual Studio 2017)准备内容
Revit 2019开发环境的搭建,需要安装的内容如下:
- Revit 2019(主要的开发环境)
- Visual Studio 2019(用于代码的编写)
- Revit SDK 2019
- AddinManager(用于管理二次开发插件)
- Revit Lookup(查看工具)
- lLSpy 4.0.1(查看Revit API)
安装
系统要求:Windows 10 (x64)
Revit 2020 的安装
可以选择浏览器搜索Revit找到官网下载,只能试用版本(2020可能已经试用版和正式版2合1了,但是试用到期之后还是要钱)或者选用教育/学生版。如果想要永久版本的……(咳咳,都懂得这东西不好发,而且有手就找得到,懒得找就私信我或者VX:R7jsdh)
太久版本的Revit版本建议还是不要安装了吧。(Revit 安装过程小概率会遇到总是安装失败的问题,不过不属于本篇笔记的内容,故不加赘述,如果遇到了,同上,私聊,95%的把握可以帮你解决)
Visual Studio 2019 的安装
在VS社区中可以找到下载链接,可以点击这里下载。
同时,请注意 .NET框架的安装,另外也要安装 .NET Core 。官方给出的是:Revit 2019 对应 .NET Framwork 4.7。但是本文之后需要安装的 Revit Lookup 用到的是 4.7 的框架,所以即便您安装的是 Revit 2020,请依旧安装 4.7 框架。
如若想要安装其他版本,譬如Professional,但是苦于只能使用试用版,同上,私信 or VX。
Revit SDK 2020
点击这里跳转下载地址,安装路径最好和 Revit 2020 安装在同一路径,非要不在一起也无大碍。
配置 AddinManager
Revit SDK 2020安装路径应该包含了Revit SDK文件和AddinManager插件,用来允许外部进行二次开发代码。
在Windows 10 中可能会找不到该目录:C:\ProgramData\Autodesk\Revit\Addins\2020,需要打开资源管理器的【选项卡查看→勾选隐藏的项目】。
复制SDK文件下的Add-In Manager目录下的AddInManager.dll和Autodesk.AddInManager.addin文件到上面的目录中。然后更改Autodesk.AddInManager.addin文件中的Assembly标签中的东西,里面的路径为SDK的实际安装路径,然后保存。
【注】如果找不到这句说的2个.dll文件,请参照下方步骤。
- 如果你安装了 Revit 2019 SDK,那么可直接将19的这两个AddIn文件复制到上方路径中;
- 如果没有,那么请【移步🔒这里】(提取码:76ig),同样的下载完之后复制两个文件到上方路径即可。
更改之后打开Revit即可在【附加模块→外部工具】中看到安装的插件。
【提示】如果有要求选择载入类型的窗口,请一律选择“总是载入”,切记!
Revit Lookup
点击这里跳转下载地址。
选择Download ZIP,下载后解压在先前安装的Revit SDK路径下,之后点击解压完之后的项目文件夹,找到最下面的RevitLookup.sln文件,双击使用VS打开。
【注】如果有弹出窗口显示对应的.NET Framwork 框架版本不对应,请选择第二项,为该项目下载并安装对应版本的.NET 框架,之后浏览器会自动打开一个链接,链接就是框架的下载地址。选择Download .NET Framwork 4.7 Developer Pack,跳转到下载页面之后,会提示你是否需要另外的语言包,确定下载原英文框架之后,可以再自行下载中文(简体)语言包。两个安装包都安装好之后,就会发现打开RevitLookup.sln文件不载有弹窗提示。
项目打开之后重新添加下面的引用,刚打开项目的时候,这几个引用会有黄色警告⚠的标记,在Revit安装路径下可以找到这些.dll(引用),之后点击启动▶,是否出现提示或者其他窗口请不要在意,主要查看在 C:\Program Files (x86)\Autodesk\Revit 2020 SDK\RevitLookup-2019.0.0.7\CS\bin\Debug 中有没有出现这个文件:RevitLookup.dll。
【需要重新添加的引用】
AdWindows
RevitAPI
RevitAPIIFC
RevitAPIMacros
RevitAPIUI
RevitAPIUIMacros
【快速找到上方引用的方法】
- 右键选择【引用→添加引用】
- 打开【引用管理器→浏览→选择要引用的文件】
- 在浏览窗口的右上方搜索框中输入需要添加的引用,系统即可自动检索到所需内容
在这之后,进入SDK安装路径:C:\Program Files (x86)\Autodesk\Revit 2020 SDK\RevitLookup-2019.0.0.7\CS,找到RevitLookup.addin文件,打开文件,将里面的Assembly标签内容修改为(即上述编译生成的RevitLookup.dll所在的路径,也就是👉C:\Program Files (x86)\Autodesk\Revit 2020 SDK\RevitLookup-2019.0.0.7\CS\bin\Debug)
这之后,将这个已经修改过的RevitLookup.dll拷贝到该目录中👉C:\ProgramData\Autodesk\Revit\Addins\2020,如此,便完成RevitLookup的安装,重启Revit 2020之后就可以在选项卡【附加模块】中看到RevitLookup,如下图:
【注】需要提醒的是,红框标记处的Revit Lookup只有当打开一个项目的时候才会亮起,否则是灰色的图标且不能点击。
ILSpy 4.0.1
点击这里跳转下载地址。
测试
- 打开Visual Studio 2019,创建新项目,找到创建模板【类库(.NET Framwork)】,切记,选择的是类库(.NET Framwork),不是类库(通用 Windows)或者类库(.NET Standard),这里一定会有人心急赶紧弄好而看错。之后写上项目名Hello Revit。
- 在右边的引用中右键添加引用(RevitAPI.dll和RevitAPIUI.dll),用上文一样的方法,找到所需要的添加的引用,确定添加之后,记得把这里上述两个引用的【复制到本地】属性改为false,否则会生成一大堆没用的东西。因为做的是测试插件,不可能脱离Revit程序本身来运行的。
- 除了using System;其他所有的引用全部删掉;然后在后面加上下面的字段。
using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.Attributes;
- 在默认生成的public class Class1{}前面加上下面的字段。
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
- 把默认生成的public class Class1{}改成下面的字段。
public class Class1: IExternalCommand{}
- 在上面的字段内部添加下面的字段。
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { }
- 在上面的字段内部添加如下字段。
TaskDialog.Show(“Revit”, “Hello Revit!”); return Result.Succeeded;
- 最终这个.cs文件的全部代码应该是下面这样:
using System; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.Attributes; namespace Hello_Revit { [Transaction(TransactionMode.Manual)] public class Class1 : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { TaskDialog.Show("Revit", "Hello Revit!"); return Autodesk.Revit.UI.Result.Succeeded; } } }
- CtrlK,S保存全部文件,不会快捷键的情点击【文件】,找到【全部保存】。之后右键项目本身选择【属性】,找到【生成】,把【目标平台】改为 x64,省略该步骤在编译的时候会出现警告。检查无误之后生成类库,并记下输出窗口中的.dll文件的位置。【注】是目标平台!不要看成平台!
- 新建一个文本文件.txt,输入以下内容。但是要注意的是:注意第4行、第5行和第6行,都要根据实际情况填写。第4行Assembly标签内就是上一步记下的.dll文件的位置,第5行AddIn标签的内容可以在这个类库项目的Properties文件夹中的AssemblyInfo.cs文件里找到,直接把Guid冒号后面的引号中内容完全粘贴到标签内即可。【注】FullClassName标签内的类名一定要和上面的类库项目中.cs文件的命名空间一致,下面的代码中Hello和Revit字段中间的下划线是因为创建项目的名称是Hello Revit,创建时会默认把空格当做下滑线处理。
<?xml version ="1.0" encoding ="utf-8" standalone ="no"?> <RevitAddIns> <AddIn Type="Command"> <Assembly>E:\文档\Visual Studio 2019\repos\Hello Revit\bin\Debug\Hello Revit.dll</Assembly> <AddInId>0d27e093-398b-41f2-bbfd-eaef14cad3b1</AddInId> <FullClassName>Hello_Revit.Class1</FullClassName> <Text>Hello Revit</Text> <VendorId>NAME</VendorId> </AddIn> </RevitAddIns>
- 把这个.txt文件重命名为HelloRevit.addin,复制到Revit插件目录下:C:\ProgramData\Autodesk\Revit\Addins\2020。
- 重启Revit,选择【附加模块→外部工具→Hello Revit】,执行之后就可以看到弹出对话框,测试成功。