[Revit]Autodesk Revit 二次开发整理(资料、准备工作和环境搭建)
1 前言
Revit被Autodesk收购之后,整理和开放了一大部分API,供开发者实现自己的功能和程序,总体来说API的功能比较完善,毕竟市面上已经出现了各式各样的插件。
本人也是初学者,在Revit分类中分享一些自己记录的笔记内容。
2 准备工作
工欲善其事,必先利其器。
2.1 语言
首先,定下你自己想使用的编程语言,官方SDK中给出的语言示例包括C#、VB、C++三种,至于选择哪一种来开发,可以根据个人喜好和语言掌握情况。不过一般来说,大家都使用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 辅助工具
开发过程中使用一些特定工具,辅助提升你的开发效率还是很有必要的。
- RevitLookup
RevitLookup可以辅助开发人员在Revit中查看Revit底层数据库中的元素对象、属性、关系等内容,更加直观和方便,免除你去翻SDK一个一个查了; - AddInManager
AddInManager是用来在开发过程中调试你的命令和程序的,如果不使用AddInManager,那你调试起来就只能一遍一遍的重复关闭Revit,安装插件,再打开revit,测试,修改这样一个流程了,那么不出几天,就会变成Revit二次开发: 
入门 --> 放弃
传送门:
- RevitLookup 2015
 - RevitLookup 2016
 - RevitLookup 2017
 - RevitLookup 2018
 - AddinManager 2014
 - AddinManager 2015
 - AddinManager 2016
 - AddinManager 2017
 - AddinManager 2018
 
安装完成,在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 新建工作项目
- 打开Visual Studio,点击文件 ---> 新建 ---> 项目;

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

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

 
3.2 添加项目引用
- 添加Revit API引用,从Revit安装目录中找到
RevitAPIUI.dll和RevitAPI.dll,这是两个最常用的动态链接库;
在项目解决方案浏览器中右键引用一项,选择添加引用,浏览找到上述两个dll文件,确定;

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

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

注:
- 以上,除了必备的生产工具外,不必全部准备,可以从简单业务入门,带着任务去学习。
 - 现在好像资源分数由系统决定了,之前都是设置0分或者1分,现在自己不可以设定资源分数了~
 - 不能下载的可以找其它资源下载。
 
暂时就先写这么多吧。
4 结语
万事开头难,当时刚开始学习写插件码代码的时候也是会踩到各种各样的坑,但好在网上有各种各样的解决方案(比心 ❤️),善用互联网上的优质资源,可以帮助大家快速熟悉整个开发过程,并解决你大部分的问题。
如有错误,恳请指正。
Murphy.L
Perhaps, we’ve just forgotten that we are still pioneers.
[Revit]Autodesk Revit 二次开发整理(资料、准备工作和环境搭建)的更多相关文章
- 【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 ...
 - arcgis api for flex 开发入门(一)环境搭建
		
http://www.cnblogs.com/wenjl520/archive/2009/06/02/1494514.html arcgis api for flex 开发入门(一)环境搭建arcgi ...
 - Android开发使用控件入门--环境搭建
		
Android开发使用控件入门--环境搭建 软件名称(,梦,,想.CAD ,控件) 1. 环境搭建: 3 1.1. 安装Eclipse 3 1.2. 下载JDK 3 1.3. 下载Android S ...
 - 跨平台开发之阿里Weex框架环境搭建(一)
		
转载自:http://www.cnblogs.com/fozero/p/5995122.html 一.介绍 Weex是阿里今年6月份推出的跨平台解决方案,6月底正式开源.官网 https://alib ...
 - windows phone 8 开发系列(一)环境搭建
		
一:前奏说明 本人一名普通的neter,对新玩意有点小兴趣,之前wp7出来的时候,折腾学习过点wp7开发,后来也没怎么用到(主要对微软抛弃wp7的行为比较不爽),现在wp8已经出来一段时间了,市场上也 ...
 - JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建
		
本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...
 - PHP移动互联网开发笔记(1)——环境搭建及配置
		
开篇说明:记得我上大二的时候第一次听到PHP,当时只知道这是一个开发网站的语言,并没有深入学习,在学了Java Web开发和Android开发之后我对互联网的发展方向有了一个我自己的认识,现在我们不能 ...
 - 《ArcGIS Runtime SDK for .Net开发笔记》--介绍与环境搭建
		
一. ArcGIS Runtime SDK for .NET介绍 ArcGIS Runtime SDK for .net是一款针对windows平台的开发包.能够在开发出在windows phone, ...
 - 驱动开发 - WDK 调试及 SVN 环境搭建
		
由于从公司辞职了,所以以前在公司里搭建的驱动开发环境也就 Game Over 了, 同样由于那环境是很久以前搭建的,自己也有很多记不清楚的地方了, 而且其中还是有很多需要注意的地方的,所以在这里顺便做 ...
 
随机推荐
- notepadd++正则表达式大小写转换
			
示例1:将语句 test this sentence 转为大写 查找:^.*$ 替换:\U$0 或------------ 查找:^(.*)$ 替换:\U\1 或 \U$1 示例2:将语句 TEST ...
 - python之mock模块基本使用
			
mock简介 mock原来是python的第三方库 python3以后mock模块已经整合到了unittest测试框架中,不用再单独安装 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个 ...
 - netty服务端启动--ServerBootstrap源码解析
			
netty服务端启动--ServerBootstrap源码解析 前面的第一篇文章中,我以spark中的netty客户端的创建为切入点,分析了netty的客户端引导类Bootstrap的参数设置以及启动 ...
 - spark 源码分析之四 -- TaskScheduler的创建和启动过程
			
在 spark 源码分析之二 -- SparkContext 的初始化过程 中,第 14 步 和 16 步分别描述了 TaskScheduler的 初始化 和 启动过程. 话分两头,先说 TaskSc ...
 - Python自学day-8
			
一.SocketServer 简化了编写网络服务器的难度. SocketServer一共有如下几个类型: socketserver.TCPServer :提供一个TCP的socketserver. s ...
 - 【commons-lang3工具】JAVA脱敏工具
			
前言:commons-langbao中有很多方便的工具,无需我们自己去实现,能够节省很多开发时的问题: 1.工具包,引入依赖,jDK8对应的版本如下: <!-- https://mvnrepos ...
 - Java学习笔记——设计模式之十.观察者模式
			
观察者模式(Observer),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. Subject类: ...
 - HDU 3183:A Magic Lamp(RMQ)
			
http://acm.hdu.edu.cn/showproblem.php?pid=3183 题意:给出一个数,可以删除掉其中m个字符,要使得最后的数字最小,输出最后的数字(忽略前导零). 思路:设数 ...
 - mysql计算日期之间相差的天数
			
TO_DAYS(NOW()) - TO_DAYS(createTime) as dayFactor,
 - 干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结
			
目录 C# VS JAVA 基础语法类比篇: 一.匿名类 二.类型初始化 三.委托(方法引用) 四.Lambda表达式 五.泛型 六.自动释放 七.重写(override) ASP.NET CORE ...