Revit二次开发初体验
最近换了下工作,由之前的互联网企业转入了BIM软件开发行列。具体原因不多说,作为一个程序员来说学习永无止境。下面来一个Hello World体验下Revit的二次开发
事前准备
VS
Revit 2017
Revit二次开发中会使用到两个dll文件,由这两个文件来提供对Revit中项目数据的访问,两个dll文件的名称为RevitAPI.dll和RevitAPIUI.dll。获取方式在Revit的安装目录中,我本机Revit安装在E盘,E:\Autodesk\2017\Revit 2017,这个路径下会存在这两个文件,拷贝到自己的项目中并将其添加为项目引用即可或者通过Nuget下载。

HelloWorld入门
1.创建一个类库项目,并以RevitHelloWorld命名,创建DLL文件夹并将上面提到的两个DLL文件拷贝其中,最后将这两个文件引入到项目中,最终效果如下:

2.创建HelloCommand文件,并实现IExternalCommand此接口

红色方框中的就是需要实现你需要的功能的地方。
本例中只简单介绍,所以,代码实现如下:

其中上面的两个特性需要注意必须加上,具体作用可以自己看下。如果不加后期再将这个放入Revit中的时候会提示

项目编译在bin目录下获得

3.打开Revit,创建一个项目

4.在Revit中添加刚才写好的功能

点击进去下面的界面:

选择Load将刚才生成的dll文件引入进来


点击run按钮即可看到刚才代码的效果

到这第一个HelloWorld的功能就完成了。
Revit插件启动模式
配置addin文件启动

在这个目录下创建一个addin文件类型的文件,文件内容如下:

唯一标识码的生成可以利用VS,工具菜单下创建GUID功能,将生成的数据粘贴即可:

这之后启动Revit在附件功能中就可以看到:

项目调试
很多情况下功能的开发总是需要调试的,这样可以跟踪程序的执行步骤,从而发现代码中可能存在的缺陷。这里我们借助VS进行调试。

选择Revit.exe,将当前程序附加到Revit中。并在代码中加入断点。


此时在按一节讲的运行程序即可看到如下效果:

附件模块下的外部工具和Revit Lookup的安装需要自己完成。
其中外部工具是用来调试程序的,Revit Lookup则是帮助开发人员查找属性用的。
Revit二次开发初体验的更多相关文章
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- Revit二次开发-BIM模型导出
最近一个月一直在研究Revit二次开发-BIM模型的导出,在网上找了很多相关资料学习.下面简单介绍一下我最近做的这个BIM模型的导出功能. 开始尝试使用Revit2015的样例程序里提供的读取模型几何 ...
- Revit二次开发之绘制钢筋
第一次在博客园上写东西,也不知道该写些什么,我想就写点最近项目到遇到的问题吧. 最近在做一个小项目,具体需求大概是在一个revit模型中的对应的楼板位置绘制钢筋. 由于刚接触Revit二次开发,之前也 ...
- Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储
在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...
- IOS开发初体验
IOS开发初体验 搭建开发环境 不多说什么了,开发环境的搭建太简单了,上App Store搜索XCode下载就行了,说多了都是眼泪 创建第一个IOS项目--HolleIOS 创建工程 选择工程创建位置 ...
- revit二次开发wpf里button按钮无法实现事务
不能在revit提供的api外部使用事务,解决此方法, 1.把button里要实现的功能写到外部事件IExternalEventHandler中,注册外部事件,在button事件中.raise()使用 ...
- Revit二次开发 推荐
学习revit二次开发,建议还是先把revit熟悉一下,去建立一下模型,亲自感受一下是如何创建模型的流程,其中会遇到什么问题.这样在自己做二次开发的时候,一些问题自己就能提前想到,规避掉.我大概用了半 ...
- 中文代码示例之NW.js桌面应用开发初体验
先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...
- revit二次开发之族的类型参数与实例参数的转换
1背景小伙伴在做revit二次开发的时候,可能需要在族环境中将族的类型参数与实例参数相互转换. 2思路1.使用族管理器FamilyManager,参见注释12.首先获取需要转换的参数(单个与批量),参 ...
随机推荐
- kindeditor上传图片时候,上传成功了,但是页面上却提示失败
今天尝试着kindeditor做一个上传demo,碰到了一个日狗的问题,百度谷歌都没有答案,最后查看源码才发现问题所在,记录一下,福利大众. 碰到问题如下,图片后台明明上传成功了,返回信息也是正确的, ...
- Mysql 分区详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt120 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.m ...
- ue4音效、动画结合实例
在游戏中,许多音效需要在动画恰当的时机出现,例如行走.奔跑,就需要恰好在足部落地瞬间播放. 而AnimNotify就能非常方便地处理此类问题. AnimNotify,顾名思义就是动画通知,能在特定的动 ...
- Linux — 用户组、权限
Linux 用户组分为:所有者.所在组.其他组 所有者:谁创建,谁是所有者.命令:ls -al 所在组:当创建文件或者文件夹时,这个文件或者文件夹所分配到的用户组,这样就会有效地隔离文件. 其他组:和 ...
- 201521123084 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. (1)Java中把不同类型的输入.输出抽象为流(Stream),而其中输入.输出的数据则称为数据流(Data ...
- [2017BUAA软工助教]收集个人信息
如题 我们要收集三个东西 1.学号 2.Github地址 ① 3.博客园博客地址 ② 请各位同学自行创建,并按照如下的格式评论在这篇博客下 "14061195+https://github. ...
- Java中继承与多态
Java类的继承继承的语法结构: [修饰符列表] class 子类名 extends 父类名{ 类体; }子类就是当前这个类,父类就是我们要复用的那个类java中只支持单继承 ...
- 201521123026 《Java程序设计》第4周学习总结
1. 本章学习总结 尝试使用思维导图总结有关继承的知识点 使用常规方法总结其他上课内容 1.类的重写:在子类中重写的方法需要和父类被重写的方法具有相同的方法名.参数列表以及返回值类型.当子类重写父类的 ...
- 201521123106《java程序设计》第四周学习总结
1. 本周学习总结 2. 书面作业 1.注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) 面向对象设计(大作业1-非常重要)2.1 讲故事:将在网上商 ...
- 201521123038 《Java程序设计》 第三周学习总结
201521123038 <Java程序设计> 第三周学习总结 1. 本周学习总结 附大图链接 http://naotu.baidu.com/file/5774caa2be710afbc0 ...