踏上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二次开发之路。

时间: 2024-10-18 06:59:14

踏上Revit二次开发之路 1 准备工作的相关文章

踏上Revit二次开发之路 2 从“HelloWorld”入手

2 从"HelloWorld"入手 在欧特克的官方网页上有个叫<My First Plug-in Training>的项目,号称可以让一个完全没有编程基础的人照着做出一个插件来.我快速浏览了一下,觉得这个例子还是太复杂了,虽然一步一步依葫芦画瓢能做出来,但最后能有多少收获就不好说了.所以,我决定还是先参考官方在线帮助的例子,从大家都喜闻乐见的"HelloWorld"入手,自己摸索一下. 2.1 先来看下具体步骤 1.启动Visual Studio,新建项

踏上Revit二次开发之路 3 自己的工具按钮

3 自己的工具按钮 上次的例子只能在"附加模块"→"外部工具"下运行,用作个人作品是没问题,如果打算搞个公司产品的话,估计BOSS是不会满意的.这次我来做一个直接显示在"附加模块"选项卡上的工具按钮. 3.1 基础 1.新建一个项目WelcomeToRevit.添加引用RevitAPI.dll和RevitAPI.dll.具体做法和上次一样,不赘述. 2.保留指令using System;添加指令using Autodesk.Revit.DB;us

Revit二次开发实现BIM盈利(以橄榄山快模为例讲解) 视频讲座下载

应笔墨闲谈群的邀请, 在10月11号晚8:30分在其群做了一次关于BIM二次开发的讲座. 由于参与者基本上都是从设计院和施工单位来的,所以对Revit二次开发做了纵览性的讲解, 以非程序员能听懂的方式讲解Revit二次开发.使这些行业领导或负责人能明白Revit二次开发的大概特点,以及其能实现的功能. 便于他们在自己的业务需要Revit插件时,能更好的思考和决策插件项目的立项和推动. 下面是这次讲座的提纲: Revit二次开发纵览,以橄榄山快模为例演示API概念Revit二次开发原理Revit二

Revit 二次开发 修改对象的颜色

//修改对象颜色 [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class ChangeColor : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements) { ChangeElementColor(comm

Revit二次开发实现BIM盈利(以橄榄山快模为例解说) 视频讲座下载

应笔墨闲谈群的邀请, 在10月11号晚8:30分在其群做了一次关于BIM二次开发的讲座. 因为參与者基本上都是从设计院和施工单位来的,所以对Revit二次开发做了纵览性的解说, 以非程序猿能听懂的方式解说Revit二次开发.使这些行业领导或负责人能明确Revit二次开发的大概特点,以及其能实现的功能. 便于他们在自己的业务须要Revit插件时,能更好的思考和决策插件项目的立项和推动. 以下是这次讲座的提纲: Revit二次开发纵览,以橄榄山快模为例演示API概念Revit二次开发原理Revit二

Revit 二次开发 自动选中对象

//获取选中对象 [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class setSelectEle : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements) { SetSelectionElement(co

Revit二次开发基础-在附加模块中添加外部工具选项

想必想投身与Revit二次开发的朋友们可能会出现这样的一种情景,当我们打开自己的revit(2014版本以上)时,点击附加模块,会发现缺少一个外部工具这个按钮!!!是不是Autodesk给你藏起来了,其实还真是! 接下来我就给大家演示下如何在附加模块下添加外部工具这个按钮. 本人使用的是Revit2016,所以以下是以该版本进行演示. 首先我们需要在Autodesk官网下载一个2016版本的SDK,如图所示: 另附网站:http://usa.autodesk.com/adsk/servlet/i

Revit二次开发,删除载入的族

Document doc = commandData.Application.ActiveUIDocument.Document; Family family = null; string s = "c:/xxx.rfa"; Transaction tran = new Transaction(doc,"载入族"); tran.Start(); bool b = doc.LoadFamily(s, out family); tran.Commit(); if (b)

Revit二次开发(一)获取参数

对于Revit的二次开发,基本技能需要Revit熟练使用,C#基本的语法,WPF的使用(MVVM或其他框架的使用),在此基础上进行开发 基本的格式 namespace ClassLibrary2 { [Transaction(TransactionMode.Manual)] public class Class1:IExternalCommand # 外部命令的接口 { public Result Execute(ExternalCommandData commandData, ref stri