你好,这里是BIMBOX。
前些天,我们和
Kiven合作,给你捧出一套Revit二次开发入门课程,带你一起实现这么几件事:真正意义上操控Revit;
避免重复操作;
实现自动化流程;
实现数据互通,打破程序壁垒。
让我们觉得意外的是,行业里已经有不少一线的小伙伴,早就已经掌握了二次开发的本事,并且已经在生产实践中使用它了。
其中一位小伙伴,名字叫TT,还给我们分享了几个他在实际工作中开发出来的功能,我们觉得很不错,就和TT聊起来,问他是怎么走上二次开发的学习之路的。
和很多人一样,TT的编程二开之路是从Dynamo开始的。
三年前,因为他接到一个BIM管廊项目,正是管廊项目中大量规律并重复的工作内容,让正在纠结学习Dynamo有什么用的他有机会学以致用。比如这么几种情况:
对管道模型等间距打断
在曲面等距点的法线方向上放置族:
批量修改族参数:
这些工作,都是规律且重复的,甚至看上去都没有什么技术含量,可当面对数以万计的工作量时,这一切就变得复杂起来,很可能一件不起眼的小事,就要耽误一个人好几天的时间。
那个时候,TT明白了学习Dynamo的意义,因为人类擅长做具有创造性的工作,这些枯燥乏味且数量巨大的事情理应交给计算机帮我们批量完成,而Dynamo就是让我们与计算机沟通的桥梁。
三年之后,他在工作中有了很大的成长,今天再问他,已经有了自动化很强的Dynamo,那么为什么要学习更抽象的C#二次开发技术呢?这个问题不同的人心里会有不同的答案,TT自己总结了三点:
Dynamo运行效率慢
Dynamo无法调试,很难定位脚本中的错误并加以解决
Dynamo节点功能受限,关键时候还得调用RevitAPI
除了以上三点,他认为学习二次开发是为了更优雅地解决实际问题。通过二开,他能定制自己特别的需求,可以在很大程度上不再受制于软件本身。
更关键的是,提升C#二开水平的同时,会让你的Dynamo应用水平也“莫名其妙”的得到提升,毕竟套路都一样,所以二者不仅不冲突,还非常的相辅相成。
比如,他在3D视图里开发了轴网功能,在开会时不用再尴尬的靠数柱子来定位了:
比如,通过Dynamo批处理功能加上C#搭配使用,实现批量新建参数,就不用再苦逼地对大量表格数据进行复制粘贴了:
在TT给我们讲述的案例里,最引起我们兴趣、也是我们认为最能解决一个大家日常痛点的,就是根据电缆桥架全自动排布电缆的功能。
很多项目都需要对电缆进行算量,但Revit本身并没有做出很好的电缆功能,手动做起来很费劲,利用TT开发的这个功能,只需要建好桥架模型,输入参数,里面的电缆就能根据要求自动排布好了。
TT说,之所以觉得二次开发是一种优雅的解决问题的方式,是因为上面例举的这些成果其实是他在学习了很多知识之后所得到的产物,是在沉迷学习、自我成长的过程中,顺便把问题给解决了。
他始终认为,学习的过程是不能离开实际工作的,和工作结合是一种系统性的学习方式,取得的学习成果更牢固,不会花一周速成了一个软件,然后一个月没碰,基本又丢的差不多了。
最终,通过系统性的学习,我们掌握的是一种通用的解决问题的方法,做到以不变应万变。
聊了很久之后,我们就问TT,每个人的实际工作需求可能并不相同,他愿不愿意把自己的学习经验分享出来,带着大家一起成长?
于是,经过几个月自我虐待式的精心筹备,我们和TT一起打磨了这套《C#二次开发案例课程:电缆的自动布置》,今天终于出炉捧给你了。
我们先来看TT最终做出来的成果:
03:19当然,课程不是单纯带你做出这么一个成果来,下面我们具体来说说它都讲了什么。
这套课程的特点
它是基于Revit做二次开发,使用的开发语言是C#,这也是目前.Net环境下主推的开发语言。
它是一个实战型的二开课程,课程中敲的每一行代码都是为了解决实际需求,敲代码的目的是把所有理论知识用代码来实现,借助代码把理想变成现实。
课程包含了二开的完整工作流,对使用到的每一个理论知识都做了详细讲解,真正限制自身能力提升的绝不是敲代码的能力,而是用到的理论知识,比如向量、空间坐标变换、数据结构、甚至是更高级的设计模式知识,而随着理论知识的提升,才能让你从容面对工作中多变的需求。
课程剪辑了所有的废话和无效操作,干货总时长6个半小时,课程目录如下:
课程能带给你什么
开发单个功能的完整流程。
课程从实际需求出发,先对用到的理论知识进行详细讲解,再对相关的RevitAPI进行说明。
做好这些准备之后,就开始手把手带你敲代码实现了,课程中没有使用任何C#高级语法,因为没必要。编程语言只是一个工具,我们在实际使用中逐步地提高编程能力,够用就好。
所以是要优雅地敲代码呢?还是简单点,能用就行呢?主要还是取决于我们平时所下的功夫,冰冻三尺非一日之寒,太为难自己的话,反而会打击到自己的积极性。用个不太恰当的比喻:
请先学会用这门语言来粗糙地沟通,再去尝试用它来优雅地搭讪。
化为己有,举一反三
课程想把一种思维方式带给大家,让每个人都能从中找到适合自己的东西,以及自己最欠缺的东西。哪怕只是一点点,都能帮你找到自己学习的方向,举一反三,最终去实现那些自己需要的功能。
重拾学习的信心
二次开发不是一个机械模仿的过程,而是一个把理论知识应用到实践的过程,限制你的仅仅是你自身的知识储备,你在学习的过程中会发现,以前所看的书都没有白看。比如《计算几何》能在二开中大有所为,《解析几何》更不用说,向量和矩阵知识更是几乎是天天都要用。
希望通过学习这套课程,让你感受到理论知识的重要性,重拾学习的信心。你现在所遇到的瓶颈将在学习二开之后被一次又一次地突破。
这套课程适合谁
为了在敲代码部分不至于听天书,TT建议你至少应该掌握一些C#基本的入门知识。
比如下面一些基本知识点,你要有所了解:
NetFramework的含义
什么是VisualStudio
变量、数据类型的概念
C#流程控制的概念及语法
面向对象的概念
类、函数的概念
C#中声明类、声明类函数的基本语法
C#中常用的集合类
C#中Lambda表达式的概念及常用语法
C#中LINQ常用语法
这套课程并不讲解C#语言的入门部分,原因是网上已经有大量优秀的C#入门课程。如果你对C#一点概念都没有,那就会导致你一节课听几分钟就要去百度一下,这会让你非常疲惫。
我们都怕浪费时间,但折腾了半天再重新回来学习基础,反而浪费了更多的时间。
如果你喜欢看书,TT建议你把《C#入门经典》一书从开头读到「第1部分OOP语言」。不一定非得这本书,但你需要对类似的内容有了大概的认识,并且已经亲手敲过一遍类似的示例代码。
这样就能够对基本的内容有一个比较全面的概念,哪怕印象并不深刻,那么对课程里出现的代码就不会那么陌生了。
如果你喜欢看视频,可以去找找网上的C#入门课,挑上面讲到的重点看一下。如果你想结合C#和Revit二次开发的双重入门,也可以去看看我们和Kiven合作的Revit二次开发入门课程。
最后,BOX想跟你闲扯几句。咱们不谈学习二开找工作方便的事儿,就是每个人当下的工作本身。
Revit这个软件,确实有很多地方不尽如人意,你想象中应该能实现的一件事,它偏偏就是实现不了。
不过,我们工作和生活中有很多事,都是有两套规则:
一套是给所有人的定好的表面规则,就像手机上的app,满足不了你的要求,只能两手一摊,没办法;
另外一套是不公开的、有后门的暗规则,就像是手机的操作系统,你可以去越狱、Root,让它为你所用,甚至开发自己的app。
不同的系统,暗规则的后门开放的严格程度不一样,而Revit是相对来说比较宽松的系统,它甚至欢迎你成为一名「黑客」,进入它的系统来改变或是增加玩法。敢不敢做一名「Revit黑客」,差得并不是水平,而只是一点点勇气。
BOX和这次合作的小伙伴TT,做到的只是帮你节省学习的时间,而勇气需要你自己去寻找。
通过二开世界的道路并不平坦,但如果你确定这是一条明路,那你需要的,仅仅是逼自己一把。所以,这个课程适合每一个想要寻求突破、并愿意为之逼自己一把的人。
为了不让你在学习的路上觉得孤独,我们照常为这套课程建立了讨论群,TT会和所有购买课程的小伙伴一起进步,大家需要补充的知识也可以在群里反馈。进群方式详见课程说明。
首月特价,还有团购优惠活动,感兴趣的小伙伴就拿下吧。
有态度,有深度,BIMBOX,咱们下次见!