1 前言

Revit被Autodesk收购之后,整理和开放了一大部分API,供开发者实现自己的功能和程序,总体来说API的功能比较完善,毕竟市面上已经出现了各式各样的插件。

本人也是初学者,在Revit分类中分享一些自己记录的笔记内容。


2 准备工作

工欲善其事,必先利其器。

2.1 语言

首先,定下你自己想使用的编程语言,官方SDK中给出的语言示例包括C#VBC++三种,至于选择哪一种来开发,可以根据个人喜好和语言掌握情况。不过一般来说,大家都使用C#C#出自微软Anders Hejlsberg团队之手,设计优美,配合上宇宙第一IDE和 .NET Framwork,开发起来效率很高。同时对于有UI需求的开发者来说,使用Winform或者WPF也可以让你快速完成UI界面的设计。

当然,如若你觉得人生苦短,也可以使用Python进行开发,Github上有一个开源项目叫做pyRevit,这个插件为Revit提供了一个python脚本的运行环境和一些已有功能,你可以使用各路大神们用Python封装好的方法,实现你自己的业务。在此不多做介绍,有兴趣大家可以搜索相关资料学习。

2.2 SDK

选择好了适合你的语言,接下来需要去下载相关开发SDK,官方开发者中心有最新三年的SDK可以下载,如果你要下载再老的版本SDK,就需要你自己去网上搜索了。

我这里有一些老的SDK供大家选择下载:

SDK很重要,在此不禁让小学生水平的我吟诗一首,啊,SDK,你似那茫茫航洋中的灯塔,照亮我们前进的方向。个人理解,有了SDK你才知道你能做和不能做的界限,如果能做,也要根据SDK去决定该走什么路线、程序该怎么架构和设计等。

除了SDK,官方还提供了案例代码,可以从案例代码里面学习一些API的使用。

2.3 辅助工具

开发过程中使用一些特定工具,辅助提升你的开发效率还是很有必要的。

  1. RevitLookup

    RevitLookup可以辅助开发人员在Revit中查看Revit底层数据库中的元素对象、属性、关系等内容,更加直观和方便,免除你去翻SDK一个一个查了;
  2. AddInManager

    AddInManager是用来在开发过程中调试你的命令和程序的,如果不使用AddInManager,那你调试起来就只能一遍一遍的重复关闭Revit,安装插件,再打开revit,测试,修改这样一个流程了,那么不出几天,就会变成Revit二次开发:
graph LR
入门 --> 放弃

传送门:

安装完成,在Revit附加模块Tab页会出现如图所示工具:

2.4 IDE

如果你选择C#或者C++作为开发语言,那么宇宙第一IDE Visual Studio你值得拥有。当然,你也可以使用Visual Studio Code甚至Notepad。。。

如果你C盘空间还够,推荐大家下载使用Visual Studio Community 2015/2017,具体使用什么版本,还要根据你开发的Revit版本来决定,在安装VS的时候,注意勾选C#相关组件和高版本的 .Net Framwork开发工具,如果第一次没安装完全也可以在需要的时候运行安装程序修改安装配置。

如果你选择python,可以使用VSC或者PyCharm

2.5 资料

相关参考资料除了有SDK和官方给的参考代码案例外,还有国内外各类论坛里面的相关帖子。

比如叶雄进老师的博客,面市的相关书籍等。


3 开始第一个项目搭建

这里以VS为例。

3.1 新建工作项目

  1. 打开Visual Studio,点击文件 ---> 新建 ---> 项目;

  2. 项目类型选择,Visual C# ---> 类库(.NET Framwork),根据要开发revit的插件的版本,选择 .Net framwork版本,自己起一个名称,选择一个存储位置,点击确定;



    VS会默认给你创建如下模板:

3.2 添加项目引用

  1. 添加Revit API引用,从Revit安装目录中找到RevitAPIUI.dllRevitAPI.dll,这是两个最常用的动态链接库;

    在项目解决方案浏览器中右键引用一项,选择添加引用,浏览找到上述两个dll文件,确定;

确定之后,引用一项就会变成如图所示:

可以选择性的执行,将这两个dll的复制本地属性改为False,改为False,生成项目的时候这两个dll文件就不会复制到生成目录中,根据个人喜好设置~

  1. 引用Revit命名空间。

    Class1.cs文件最上面添加对Revit最常用命名空间的引用:
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

至此,一个revit最简单的插件环境已经搭建完毕。

接下来,就可以针对具体业务写业务代码了。

3.3 修改项目属性

项目默认的平台目标是Any CPU,写完代码直接生成会弹出MSB3270警告,如下:

1>------ 已启动全部重新生成: 项目: FirstRevitPlugin, 配置: Debug Any CPU ------
1>E:\Visual Studio 2017\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1987,5): warning MSB3270: 所生成项目的处理器架构“MSIL”与引用“RevitAPI”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构保持一致,或者为引用关联一个与您的项目的目标处理器架构相符的处理器架构。
1>E:\Visual Studio 2017\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1987,5): warning MSB3270: 所生成项目的处理器架构“MSIL”与引用“RevitAPIUI”的处理器架构“AMD64”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构保持一致,或者为引用关联一个与您的项目的目标处理器架构相符的处理器架构。

需要在解决方案管理器中,右键项目名称--->属性--->生成,将平台目标改为x64

再次生成就不会弹出该警告。

生成的dll文件会在该项目文件夹下的bin--->debug目录或者bin--->release目录。

注:

  1. 以上,除了必备的生产工具外,不必全部准备,可以从简单业务入门,带着任务去学习。
  2. 现在好像资源分数由系统决定了,之前都是设置0分或者1分,现在自己不可以设定资源分数了~
  3. 不能下载的可以找其它资源下载。

暂时就先写这么多吧。


4 结语

万事开头难,当时刚开始学习写插件码代码的时候也是会踩到各种各样的坑,但好在网上有各种各样的解决方案(比心 ❤️),善用互联网上的优质资源,可以帮助大家快速熟悉整个开发过程,并解决你大部分的问题。

如有错误,恳请指正。

Murphy.L


Perhaps, we’ve just forgotten that we are still pioneers.

[Revit]Autodesk Revit 二次开发整理(资料、准备工作和环境搭建)的更多相关文章

  1. 【ARM-Linux开发】在win下开发的eclipse+yougatoo+jlink环境搭建

    在win下开发的eclipse+yougatoo+jlink环境搭建 一 工具的安装 第一步:安装gcc编译工具 yagarto-bu-2.21_gcc-4.6.2-c-C++_nl-1.19.0_g ...

  2. arcgis api for flex 开发入门(一)环境搭建

    http://www.cnblogs.com/wenjl520/archive/2009/06/02/1494514.html arcgis api for flex 开发入门(一)环境搭建arcgi ...

  3. Android开发使用控件入门--环境搭建

    Android开发使用控件入门--环境搭建 软件名称(,梦,,想.CAD  ,控件) 1. 环境搭建: 3 1.1. 安装Eclipse 3 1.2. 下载JDK 3 1.3. 下载Android S ...

  4. 跨平台开发之阿里Weex框架环境搭建(一)

    转载自:http://www.cnblogs.com/fozero/p/5995122.html 一.介绍 Weex是阿里今年6月份推出的跨平台解决方案,6月底正式开源.官网 https://alib ...

  5. windows phone 8 开发系列(一)环境搭建

    一:前奏说明 本人一名普通的neter,对新玩意有点小兴趣,之前wp7出来的时候,折腾学习过点wp7开发,后来也没怎么用到(主要对微软抛弃wp7的行为比较不爽),现在wp8已经出来一段时间了,市场上也 ...

  6. JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  7. PHP移动互联网开发笔记(1)——环境搭建及配置

    开篇说明:记得我上大二的时候第一次听到PHP,当时只知道这是一个开发网站的语言,并没有深入学习,在学了Java Web开发和Android开发之后我对互联网的发展方向有了一个我自己的认识,现在我们不能 ...

  8. 《ArcGIS Runtime SDK for .Net开发笔记》--介绍与环境搭建

    一. ArcGIS Runtime SDK for .NET介绍 ArcGIS Runtime SDK for .net是一款针对windows平台的开发包.能够在开发出在windows phone, ...

  9. 驱动开发 - WDK 调试及 SVN 环境搭建

    由于从公司辞职了,所以以前在公司里搭建的驱动开发环境也就 Game Over 了, 同样由于那环境是很久以前搭建的,自己也有很多记不清楚的地方了, 而且其中还是有很多需要注意的地方的,所以在这里顺便做 ...

随机推荐

  1. JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec("");

    Process process = Runtime.getRuntime().exec("cmd /c dir c:"); BufferedReader bufferedReade ...

  2. Python连载7-time包的其他函数

    接连载6 一.time包 1.函数:sleep(second) (1)含义:是程序进入休眠状态多少秒 (2)格式:time.sleep(int num) 2.函数:strftime() (1)含义:将 ...

  3. Spring事物管理简介 (转)

    一.事物1.什么是事物 事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事物的特性 原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生 一致性:事物前后数据 ...

  4. laravel-admin(自定义表单与验证)

    场景: 很多时候,由于我们业务场景比较特殊,需要自定义表单,然后框架给我提供了对应表单组建! 案列:以创建一个字段为列 1.在控制器对应的方法中调用表单组建创建表单 public function c ...

  5. (1)Linux文件系统的目录组成

    记忆秘诀:BBDEH OPRLM TLSUV 宝贝的恩惠 欧派入联盟 偷了suv,19   目录 英文释义 简写 详解 1 /   根目录 整个文件系统的唯一根目录 2 /bin Binary 普通命 ...

  6. C/C++应用程序内存泄漏检查统计方案

    一.前绪 C/C++程序给某些程序员的几大印象之一就是内存自己管理容易泄漏容易崩,笔者曾经在一个产品中使用C语言开发维护部分模块,只要产品有内存泄漏和崩溃的问题,就被甩锅“我的程序是C#开发的内存都是 ...

  7. Python连载20-偏函数&zip函数&enumerate函数

    一. 偏函数 二. #先举个例子 #把字符串转换为十进制数字 int(') #help(int),int函数中有一个参数base代表把它转换某个进制的数字 #把八进制的字符串转换为十进制 eight ...

  8. 简单的scrapy实例

    前天实验室的学长要求写一个简单的scrapy工程出来,之前也多少看了点scrapy的知识,但始终没有太明白,刚好趁着这个机会,加深一下对scrapy工作流程的理解.由于临近期末,很多作业要做(其实.. ...

  9. 机器学习经典算法之Apriori

    一. 搞懂关联规则中的几个概念 关联规则这个概念,最早是由 Agrawal 等人在 1993 年提出的.在 1994 年 Agrawal 等人又提出了基于关联规则的 Apriori 算法,至今 Apr ...

  10. 03-Spring profile实用精简版介绍

    为什么说是实用精简版,没办法,工作太忙压力大啊,菜是原罪啊,所以接下来写的一些博客可能都是更偏实用性,精简点,方便自己回顾,快速上手使用即可,毕竟感觉不详细还有书不是吗. profile是用来干什么的 ...