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.首先获取需要转换的参数(单个与批量),参 ...
随机推荐
- input长度随输入内容动态变化 input光标定位在最右侧
<input type="text" onkeydown="this.onkeyup();" onkeyup="this.size=(this. ...
- C-C++到底支不支持VLA以及两种语言中const的区别
C-C++到底支不支持VLA以及两种语言中const的区别 到底支不支持VLA VLA就是variable-length array,也就是变长数组. 最近写程序的时候无意间发现,gcc中竟然支持下面 ...
- 用webgl打造自己的3D迷宫游戏
用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam 背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...
- Spring mybatis源码篇章-NodeHandler实现类具体解析保存Dynamic sql节点信息
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-XMLLanguageDriver解析sql包装为SqlSource SqlNode接口类 publi ...
- YYHS-怎样更有力气
题目描述 OI大师抖儿在夺得银牌之后,顺利保送pku.这一天,抖儿问长者:"我虽然已经保送了,但我的志向是为国家健康工作五十年.请问我应该怎样变得更有力气?" 长者回答:&quo ...
- The Last
第八次课程作业 感慨 没想到这就最后一次课程作业了,还以为会跟我到大学毕业呢.既然是最后一次就说说心里话.起初收到做博客作业的消息还觉得蛮有新意的(因为第一次作业不难),后来不断的作业涌现出来了,还都 ...
- 201521123114 《Java程序设计》第7周学习总结
1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 public b ...
- 201521123023《Java程序设计》第11周学习总结
1. 本周学习总结 Lock.Condition,互斥同步访问方法,相比于synchronized,相似的wait().notify().notifyAll()方法,还有更多高级的方法 Executo ...
- Scrapy爬虫框架解析
Scrapy框架解析 Scrapy框架大致包括以下几个组件:Scrapy Engine.Spiders.Scheduler.Item Pipeline.Downloader: 组件 Scrapy En ...
- 运算符(C# 参考)
reference:https://msdn.microsoft.com/zh-cn/library/zkacc7k1(v=vs.140).aspx