『前言』
大家好,我是胡乱折腾,一事无成,BIM圈的纯路人,小O。
2024年6月7日,BIMBOX的公众号上发布了一篇叫做《工资、私活、发展空间,二次开发行业最近怎么样?》的文章,通过对两位Revit二次开发专家:Kevin与十五的访谈,为大家揭示了Revit二次开发行业在目前经济环境影响下的生存状况,在关于接私活的内容中,我们的大帅哥十五说到:
「平均一个私活项目2-3天完成,可以赚个1-2万。」
看到这句话时,我马上给十五算了一笔账:
3天一个项目,一个项目赚2万,一年就是365/3*2=243.3333万,就算他每年累计休息3个月时间,也能赚182.5万(狗头保命)。
于是乎,我的脑海出现了一阵响亮的呐喊:我要学二开~~~~(破音)!
『1』
在今年7~8的两个月时间里,我学习了Kevin的《Revit二次开发小白入门课》,刘铁猛老师的《C#语言入门详解》,以及一些零碎的网络资料。
整体的感觉就是,非常崩溃。
因为在跟着教程学习的过程中,我常常觉得自己跟不上教程的节奏。许多知识点并不容易理解,即便能跟着教程把程序写出来,也会经常有一种:「我到底做了什么?」的错愕感?如果你觉得自己年纪大了,不再是曾经那个懵懂少年,我强烈建议你来学编程,因为你看着满屏幕的代码一定会感觉很懵懂。
在遇到一些基础的编程知识,例如:遍历,抽象,继承、多态……如果理解不了,就要花大量时间去查资料和研究。如果你觉得自己太稚嫩,还不够成熟,我强烈建议你来学编程,因为你会秃然成熟。
咬着牙把教程都看完后,我发现,我就真的只是「看完」而已。因为我无法将学到的内容应用到实际中。
当我面对一个具体的需求时,脑海中常常一片空白,根本写不出相应的代码。这种挫败感让我感到自己好像什么都没学到一样。
更艰难的是,我也没有一个明确的目标。在看完教程后,完全不知道接下来应该做什么,可以做什么。
结果就是,很多我很想实现的功能,我没能力写出来,然后我也不知道以我的能力,可以写出什么样的功能。
随着时间的推移,我越发觉得自己好像在浪费时间,既没掌握技能,也没有取得进展,这种无力感让我很失落。
但一直这样纠结也不是办法,于是我决定,无论有没有用,都要先做一点东西出来。
所以,就有了今天要给大家唠嗑的3个没用的功能:十五的响指、蓝神的大饼、OO爱摸鱼。
先说「十五的响指」
这是一个非常简单的功能,用户通过滑块,从1%~99%之间选择一个值,例如69%,然后点击「确定」按钮,程序就会随机删除当前Revit文件中69%的构件实例。
这是一个感觉挺有意思,但实现之后又觉得无聊的功能。这个功能的乐趣,全部发生在微信教程群里讨论的时候,例如有群友建议,先把原本的模型发送到十五的邮箱,模型实例构件的被删除后,强制保存一次,然后删除项目的所有备份文件,最后弹出一条信息,让用户找十五,掏钱把模型买回来。就真的很刑。果然群里个个都是人才,说话又好听。
然后是「蓝神的大饼」
这个功能需要用户在模型上进行单击,程序会在用户点击的位置,创建一个文字注释,文字的内容,是一些给人鼓舞、打气的句子,例如:「恭喜你,踏入了前端这个世界!」、「你打开了另外一片广阔天地!」、「你将大有作为!」……这些句子,都是蓝神亲口对我说过的话。
这个功能的背景故事是,在我学习二次开发的两个月里,由于经常无法理解代码的逻辑,无法解决程序提示的错误,没能完成教程中老师布置的练习,从而产生自我怀疑,认为自己永远都写不出一个功能,感觉自己只在浪费时间……内心几度破防,情绪多次崩溃。
每次我想要放弃不再继续折腾下去的时候,只要找蓝神聊一下天,他总能给我一些鼓励,让我可以继续折腾下去。而且我发现,他鼓励我的说话,很有老板给打工人画大饼的质感。为此我也感到十分欣慰,蓝神已经具备当老板的潜质。苟富贵,勿相忘。
至于「OO爱摸鱼」,就是个离大谱的东西,因为它根本算不上是一个功能。它只是通过Revit的按钮去启动一个外部的exe文件,而这个exe文件是一个贪吃蛇小游戏。
这个小游戏,是我在看完刘猛铁老师的《C#语言入门详解》后,跟着另一位B站UP主做的一个《C#新建项目写贪吃蛇小游戏》练习。主要是想通过这种比较有趣的小案例,加深一下对C#语言的理解。
要不是我没有4090,我还想直接在Revit里启动黑悟空。
『2』
除了上文介绍的三个没用的功能外,其实我还写了一个,对我而言确实有点用的功能:Kevin Power
这个功能会获取结构柱上特定的标识信息,然后程序会把这些信息,写入到与结构柱相对应的模板构件中。让模板构件也能携带与结构柱相同的标识信息,从而能在统计模型的时候,可以分辨出每一块模板构件,属于哪一根结构柱。
在我的上一篇文章《BIMer去做结算,BIM能帮多少忙?》中,我提到模板的结算,是通过Excel表格的公式完成。
但是在我直接使用Excel统计之前,我其实一直在尝试从模型中提取模板的工程量。模板构件的创建有很多现成的插件产品可以实现,创建模板构件的工作10分钟不到就已经完成,其中有8分钟是在下载及安装插件。
至于模板构件的工程量统计,难点在于清单中要求模板的量要与具体的结构柱关联起来,那就需要在模板构件中设置一些与对应的结构柱关联的标识信息,作为索引。但如何快速地把结构构件的标识信息,写入与其关联的模板构件中,我却一直没有找到现成的方法。
为此,我还专门找了我的前领导,博哥,帮忙写了一个Dynamo脚本,来实现这个标识信息的传递的需求。感谢博哥!
尽管博哥提供的Dynamo脚本已经能很好实现我想要的效果,但我还是想通过自己的方法,来实现这个需求。这也是我要写「Kevin Power」这个功能的原因之一。
另一个原因是,我学习了Kevin的《Revit二次开发小白入门课》,在学习过程中,Kevin为我解答了很多问题,而且在他的教程里,也包含了大量实用的功能开发讲解,例如:装修设计、建筑外立面建模必备的「面生面」功能,还有图元信息的读写,按一定规则批量创建模型,还有用户界面设计……Kevin在教程教了这么多实用的东西,如果我自己写出来的功能全部都是没用的玩儿,那实在太特么丢脸了,所以我觉得还是要写一个有用的功能,哪怕这个功能只对我有用。
这个功能目前是一个「一次性功能」,因为它现在只能读取结构柱的特定信息,也只会把这些特定信息填写到默认的模板构件中,如果换了另一个项目,要传递的信息不是来自结构柱及模板构件,就无法实现需求。
所以这个功能需要优化的地方还有很多,然后,我知道你以为我会说什么,但我不说……
『3』
在写这些功能的时候,我感受到编程跟建模的工作方式有很大差异。
我在建模的时候,打开Revit,就能开始沉浸式操作,从早肝到晚,在建模过程中,几乎不会出现需要停下来,查找建模方法的情况。之所以能这样,一来是因为我要创建的模型比较简单,二来是因为我对Revit的各种功能还算略懂一二。
但编程完全不同。当我尝试写一个功能的时候,总会遇到各种各样的问题,不得不停下来查找资料、搜索方法,向AI提问。编程不像建模那样可以依赖直觉操作,它更像是一个需要不断推理和解决问题的过程。就像设计师做设计的时候,也会一边设计,一边查规范一样。
我刚开始的时候不太适应这种工作方式,感觉自己实在是太菜了,后来看的教程视频多了,发现其实大家都是这么干的,才舒坦下来。毕竟除了大佬,真没人能记住那么多方法。
在编程行业有一个梗:「代码和你,有一个能跑就行」。我觉得对于初学者来说,这句话简直就是救命稻草。初学者要做的,不是记住所有方法,不是精通所有编程概念,不是写出高效且优雅的代码,而是先把功能实现。
例如上文提到的4个功能,其实有90%以上的代码是来自基于AI生成的结果,剩下的10%是我模仿AI生成的结果,修修补补地写完。起初,我对此感到很羞愧,觉得自己没有能力独立完成项目。但后来蓝神告诉我,这其实是编程中的常态。即便是有经验的开发者,也经常会从文档、论坛或现有的代码库中寻找解决方案。
例如Kevin在他的《Revit二次开发案例线上视频课》中,也直接演示怎么从网上搜索、复制别人的代码进行修改,然后为己所用。就像如果已经有现成可用的族,我们就没必要重新建一个族。编程不一定要从零开始。
这里的关键在于,至少要有一点的基础知识,然后根据自己的需求,去理解并调整那些别人已经写好的代码。
尽管现在网上还有很多割韭菜的AI课程,号称可以使用AI实现0基础编程,但根据我在上一篇文章《BIMer去做结算,BIM能帮多少忙?》中,使用AI写CAD脚本的经验,在0基础的情况下,如果AI生产出来的是屎,我也只能老老实实地吃屎,而且吃完仍然无法实现我想要的效果。
但当我有了一点点编程基础后,情况就得到改善。我能够与AI进行更有效的沟通,用符合编程逻辑的语言让AI生成的代码可用性更高,让AI解释每一段代码的用途,然后根据自己的需求,尽可能地修改AI生成的代码。
在编程这件事情上,AI无法帮助我跳过学习的过程,但能让我学习的过程更高效。
现在是让学习编程变得非常友好的时代。所以我很佩服十五,蓝神,Kevin,我到现在还想不明白,他们以前是怎么在没有AI帮助的情况下把编程学会的。为什么会有这么屌的人。
『End』
经过两个月的学习,我认为自己永远都不可能像十五那样,3天赚2万。
但能让程序跑起来,即使过程十分笨拙,但能解决一点小需求,感觉还是不错。
而且我发现,尽管目前市场上有大量插件工具,但在微信群摸鱼的时候,总会有人提出一些市场上没有现成解决方法,没有现成插件工具可以实现的需求。面对这些需求,大部分群友的回答,就是去定制开发一个插件。
至于怎么定制开发,也就两个思路:富则找人侍候,穷则自己动手。
如果你也有一些没能找到现成解决方案的小需求,或者对编程、二次开发有学习的兴趣,都可以参考一下BIMBOX的二次开发教程。
以上就是本次与大家唠嗑的所有内容,最后再次感谢十五,蓝神,Kevin给我提供的帮忙和鼓励。
参考资料:
刘铁猛-C#语言入门详解
我就不落泪-C#新建项目写贪吃蛇小游戏
BIMBOX-Revit二次开发小白入门课
BIMBOX-Revit二次开发案例线上视频课