[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.