踏上Revit二次开发之路 1 准备工作
1 准备工作
工欲善其事,必先利其器。在正式开始之前,我觉得有必要先盘点一下需要准备些什么。
1.1 硬件设备
PC机一台(谢绝Apple)。
配置不能太低,至少要i3以上的cpu、4g以上的内存和支持DX11的独立显卡,否则跑不动Revit,建议不低于i5 CPU和8g内存。SSD不是必须品,我敢保证,当你把360、电脑管家和金山毒霸之类装了四五个以后,开机时间肯定会比裸奔的5400转机械硬盘长很多(珍爱生命,远离国产软件全家桶)。
1.2 必要软件
1.2.1 64位Windows 7或8操作系统(Revit 2017开始支持Windows 10)
1.2.2 Revit 2014/2015/2016/2017/2018任选(低于2014也没支持的必要了)
1.2.3 Visual Studio 2008或更高版本(建议2012及以上)
1.2.4 从4.0开始的各种.NET框架
网上有种说法,什么开发Revit 2015需要Visual Studio 2013,开发Revit 2017需要Visual Studio 2015云云,其实根本没说到点子上。Visual Studio只是个集成开发环境(IDE)而已,在这里真正起作用的是.NET框架。根据官方某英文页面的说法,Revit与.NET版本对应关系如下:
Revit版本 | .NET版本 |
2014 | 4.0 |
2015/2016/2017 | 4.5 |
2018 | 4.5.2 |
但根据我的实践,Revit 2017对应的其实也是.NET 4.5.2,所以一定要注意,正所谓尽信书不如无书。
1.3 知识储备
1.3.1 Revit基本操作
如果连Revit能做什么、怎么做都不清楚,二次开发就无从谈起。为此,我特意借了本《官方标准教程》,从头到尾学习了一遍。其实类似的书很多,随便找哪本都差不多,没必要掌握太过高深复杂的技巧,毕竟学习的目的不是去做专职建模员。
真正可能有点麻烦的,是与操作Revit隐性相关的工程方面的知识。如果连图纸都看不懂,拿着Revit也就是瞎玩而已。当然对于建筑系或土木系科班出身的人,这完全不是问题;如果不是,我个人建议是先找下面两本大学教材看看透:一本是《工程制图》,另一本是《房屋建筑学》,都是大一的基础课程,版本不限。
1.3.2 软件开发基础
理论上所有支持托管代码的语言都能用来进行Revit二次开发,包括Python、Javascript等等,但实际上还是用微软原生的VB.NET、C#、C++、F#之类能获得更好的支持。一上来也不需要达到太专业的程度,具备如下几个方面就可以了:
首先是掌握上述某种语言的语法规范,就是诸如变量、表达式、分支循环和函数之类。WPF了解点皮毛即可,以后看别人的源代码时可能会碰到;至于.NET Core,我表示你确实想多了……
这几种语言当中,VB.NET我是实际写过几个桌面程序的,不过我对它的严谨性颇有疑虑,毕竟是脱胎于VB的;C#我以前没学过,只知道它相当简洁,而且是.NET的“亲儿子”;C++我也还算熟悉,可它是出了名的复杂,但凡有可能我都不会选择用它;至于F#,这玩意是啥?我仅仅听过名字,貌似以前微软还有个叫J#的倒霉孩子……
最终我选择C#,毕竟它同我最熟悉的Delphi一样都是Anders Hejlsberg的作品,天然有亲和力。虽然以前没学过,但是好在有其他语言基础,想必不会太困难。我自己是直接拿微软官方的《C# 5.0 语法规范》看的。对于没有编程基础的人,我个人推荐这本书——《Visual C# 2012 大学教程》,虽说老一点,但完全够用,关键是非常详细,700页的内容全是最基础的东西,要是换到别的入门书里顶多也就占二、三百页的篇幅。顺便提一句,这本书原名叫《Visual C# 2012 How to Program》,跟“大学教程”不沾边,作者是美国人Deitel,千万别弄错成国内作者的同名书。
其次是如何使用Visual Studio。对于有WinForm开发经验的人来说当然不成问题;对于用Qt、Eclipse之类跨平台开发的人来说问题也不大,上大学时总该学过;对于没有编程基础的人……看上面那本书就够啦。
最后是面向对象的思想,就是要理解诸如类啦,三大特征封装、继承、多态啦这些。对于有开发经验的人来说是基本功,对于没有编程基础的人还是用上面那本书解决,差不多就行。
什么?你说Revit二次开发知识?不懂就对了,都懂了还用学么!
1.4 资料来源
我准备了下面这些资料:
1.4.1 出版物
目前国内出版的Revit二次开发书籍只有两本。一本是《AUTODESK REVIT二次开发基础教程》,另一本是《API开发指南——Autodesk Revit》。因为稀少,所以好坏也无从谈起,既然想学习Revit二次开发,必然是要入手的。
至于这方面的外文书籍,我表示自己英语战五渣,真心看不懂,也没有关注过。
1.4.2 网站
首先当然是欧特克的官方Revit开发网站,可以在这里下载SDK和一些教程、视频(都是英语的)。不过这地方经常出404错误,不明觉厉。我觉得SDK最有价值因为含有大量示例源码,而教程看起来就挺吃力,视频更是听不懂:(
其次是Revit的官方在线帮助。里面有专门一章是写给开发者的。这里给出的地址是最新的2018版,想访问之前的版本把地址里的数字换掉就行。
接着是国内两位大牛的博客:叶雄进和卢石碧。一位是橄榄山的BOSS,一位是《AUTODESK REVIT二次开发基础教程》的作者。同时善用度娘,在博客园、CSDN、新浪博客等地方可以搜索到不少其他作者的博文。
另外还有一位国外大牛Jeremy Tammiik的博客,貌似干货不少,可惜我看不大懂:(
最后,自然是GitHub,可以搜索到一些源码作为参考。
1.4.3 交流群
在QQ群里搜索“revit”,看到带“二次开发”、“BIM开发”之类字样的就申请入伙吧。可以和别人进行技术交流或寻求帮助。
就这样,我已经摩拳擦掌、整装待发了。下回,我打算从一个最最最简单的插件——“Hello World”开始,正式踏上Revit二次开发之路。
踏上Revit二次开发之路 1 准备工作的更多相关文章
- 踏上Revit二次开发之路 0 序
0 序 近来,由于工作上的需要,开始自学Revit二次开发. Revit由欧特克公司专为BIM构建,是建筑业体系中使用最广泛的软件之一.借助欧特克公司在我国市场占有率方面的绝对优势,甚至给不少人带来& ...
- 踏上Revit二次开发之路 2 从“HelloWorld”入手
2 从"HelloWorld"入手 在欧特克的官方网页上有个叫<My First Plug-in Training>的项目,号称可以让一个完全没有编程基础的人照着做出一 ...
- 踏上Revit二次开发之路 3 自己的工具按钮
3 自己的工具按钮 上次的例子只能在"附加模块"→"外部工具"下运行,用作个人作品是没问题,如果打算搞个公司产品的话,估计BOSS是不会满意的.这次我来做一个直 ...
- Revit二次开发之绘制钢筋
第一次在博客园上写东西,也不知道该写些什么,我想就写点最近项目到遇到的问题吧. 最近在做一个小项目,具体需求大概是在一个revit模型中的对应的楼板位置绘制钢筋. 由于刚接触Revit二次开发,之前也 ...
- Revit二次开发初体验
最近换了下工作,由之前的互联网企业转入了BIM软件开发行列.具体原因不多说,作为一个程序员来说学习永无止境.下面来一个Hello World体验下Revit的二次开发 事前准备 VS Revit 20 ...
- Revit二次开发 推荐
学习revit二次开发,建议还是先把revit熟悉一下,去建立一下模型,亲自感受一下是如何创建模型的流程,其中会遇到什么问题.这样在自己做二次开发的时候,一些问题自己就能提前想到,规避掉.我大概用了半 ...
- [Revit]Autodesk Revit 二次开发整理(资料、准备工作和环境搭建)
1 前言 Revit被Autodesk收购之后,整理和开放了一大部分API,供开发者实现自己的功能和程序,总体来说API的功能比较完善,毕竟市面上已经出现了各式各样的插件. 本人也是初学者,在Revi ...
- Revit二次开发环境配置(Revit 2020 +Visual Studio 2019)
Revit二次开发环境搭建(Revit 2019+Visual Studio 2017)准备内容 Revit 2019开发环境的搭建,需要安装的内容如下: Revit 2019(主要的开发环境) Vi ...
- Revit二次开发之创建风管
在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法. 风管从类型上可分为三类:一般风管,软风管和风管占位符:从形状上也分为三类 ...
随机推荐
- 【Oracle】什么是DRM,怎么关闭
DRM 分析及案例讲解 什么是DRM DRM(Dynamic Resource management)是oracle10.10.2里面推出来的一个新特性,一直到现在最新的12cR1,都存在,且bug非 ...
- 实现所有SAP设备打印机并行打印
SAP版本:ECC 6.0 701 1.如何实现所有SAP设备打印机并行打印? I.通过事务码:SPAD,进入假脱机管理初始屏幕.点击左上角的菜单中 配置(c)=>输出设备,进入SAP系统 输出 ...
- 如何在K8s,Docker-Compose注入镜像Tag
最近在做基于容器的CI/CD, 一个朴素的自动部署的思路是: 从Git Repo打出git tag,作为镜像Tag ssh远程登录到部署机器 向部署环境注入镜像Tag,拉取镜像,重新部署 下面分享我是 ...
- win32 sdk 环境下创建状态栏
今天在学习状态栏,出了好多的问题,这里记录下. 要创建状态栏用:CreateStatusWindow CreateStatusWindow函数创建一个状态窗口,通常用于显示应用程序的状态.窗口通常显示 ...
- 微信小程序代码上传,审核发布小程序
1.打开微信开发者工具 管理员扫码 -> 填写好小程序的项目目录.AppID(必须是客户已注册好的AppID).项目名称 2.在app.js中修改id(客户登录后台管理系统的id),app.js ...
- 精通MySQL之架构篇
老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...
- three.js cannon.js物理引擎之Heightfield
今天郭先生说一说cannon.js物理引擎之Heightfield高度场,学过场论的朋友都知道物理学中把某个物理量在空间的一个区域内的分布称为场,高度场就是与高度相关的场,而cannon.js物理引擎 ...
- Go Proverbs
https://github.com/go-proverbs/go-proverbs.github.io Go Proverbs Simple, Poetic, Pithy Don't communi ...
- 线上nginx的一次“no live upstreams while connecting to upstream ”分析
线上nginx的一次"no live upstreams while connecting to upstream "分析 线上nginx的一次"no live upst ...
- java关键字static使用总结
java关键字static使用总结 1.static修饰的方法被称之为静态方法也叫做类方法,加static的方法,可以通过类名直接访问,不加static的方法只能通过对象名访问. 静态方法可以直接通过 ...