Revit插件开发

Revit的二次开发,跟版本关系比较大,这里Revit用的是2019版本,vs用的是2017版本,开发用的语言是C#,用到的.net框架是4.7.1版.请特别注意版本!版本不同时,会碰到小问题,但总体思路是一致的。

  1. 操作系统:Windows10 64位版本
  2. Revit2019版本,请到Autodesk下载即可
  3. Visual Studio 2017版本,请到微软公司下载即可,注意vs安装时,要安装C#
  4. 特别注意:Revit官方要求,2019Revit要匹配的.Net框架版本是4.7,在这里我只找到了4.7.1,大版本号一致,最后看起来没问题。
  5. 安装RevitSDK 2019,应该是用来二次开发的SDK,下载地址RevitSDK安装包,大概350M。
  6. 安装插件管理,方便管理插件,安装后会在附加模块中多出一个外部工具选项。如果已经安装了RevitSDK,它包含了插件管理器。
  7. 配置插件管理器,将dll和addin文件拷贝到Revit插件目录下,并修改addin文件的具体内容,比较烦琐,具体操作
  8. 安装RevitLookup插件,将来调试时使用下载地址
    1. 下载后解压到RevitSDK目录下,寻找RevitLook.sln文件,用VS打开,更换6个引用,AdWindows,RevitAPI,RevitAPIIFC,RevitAPIMacros,RevitAPIUI,RevitAPIMacros
    2. 上述6个引用的“复制到本地”属性改为False,我们不需要拷贝它们只要引用就好。
  9. 找到RevitLookup.addin修改它,也比较烦琐,具体操作
  10. 终于到了写HelloWorld
    1. vs2017中新建项目,在模板中选择Visual C#,和 类库(.Net Framework) ,注意记住项目的名字,后续会用到
    2. 在解决方案管理其中,添加引用。在引用管理器中选择“浏览”,在Revit安装目录下找到RevitAPI.dll和RevitAPIUI.dll。
    3. 上述两个引用的“复制到本地”属性改为False,我们不需要拷贝它们只要引用就好。
    4. 把代码改成如下:
          using Autodesk.Revit.DB;
          using Autodesk.Revit.UI;
          using Autodesk.Revit.Attributes;
      
          namespace revit_plus1
          {
              [TransactionAttribute(TransactionMode.Manual)]
              //[Transaction(TransactionMode.Manual)]
              public class Class1 : IExternalCommand
              {
                  public Result Execute(ExternalCommandData commandData,ref string message,ElementSet elements)
                  {
                      TaskDialog.Show("Revit", "HelloWorld!");
                      return Autodesk.Revit.UI.Result.Succeeded;
                  }
              }
          }
          
    5. 注意修改平台类型,在VS的 “生成” → “配置管理器” → “活动解决方案平台” 中增加 “X64”平台。
    6. 编译成功后,在项目 “属性”→“生成”→“输出”→“输出路径”能看到dll最终在哪个目录,注意利用dll生成时间判断是否新生成。
    7. 在Revit插件目录增加一个“HelloWorld.addin”:这里比较烦琐,具体操作
    8. 启动Revit,在“附加模块”→“外部工具”的下拉箭头处找到“HelloWorld”,执行后,可以看到弹出对话框,搞定