推荐序二
几年前,一位朋友送了我一台米家的机器人积木,我花了一下午的时间组装好,本来想单纯放在桌面上当做装饰摆件,不过在安装的最后,说明书上要求给那台机器人装上一个“大脑”,然后下载一个APP,可以控制机器人的一系列行为。一般类似的机器人,你只能拿着一个遥控器,控制它前进、后退、转弯,而这个机器人的手机APP上,则是多了很多“编程”的玩法。和很多非计算机专业出身的人一样,我对“编程”这两个字有着本能的恐惧,但毕竟是孩子都能玩的玩具,我就硬着头皮尝试了一下这台机器人的编程功能。真操作起来也并不复杂,一开始我尝试让它前进固定的距离再转弯,从而实现自动在我的家里完成巡航;后来通过一系列的判断和循环操作,让它对家里不同位置的环境做出反应,比如压到一只拖鞋会发出警报;最后甚至加上了颜色传感器,让它“看到”红色的东西就唱一首歌。重要的是,在整个“编程”的过程中,我没有使用那些复杂的英文代码,而是把一个个动作模块、判断模块、计时模块按照规则“拼装”到一起,和拼装积木也没什么区别。当然,这离那种复杂代码控制的高级机器人还差十万八千里,但从本质上来讲,它们实现的事情本质上都是相通的,那就是用定制操作对抗重复劳动。
什么是“定制操作”呢?玩具厂当然没办法知道每个家庭的房间布局,所以没有办法统一预设一套算法,让机器人实现自动巡航,机器人一定会撞墙。什么是“重复劳动”呢?如果我们希望机器人在家里行走,就只能一遍又一遍拿着遥控器,控制它的前进和转弯。是的,在我们使用Revit软件进行BIM工作的时候,软件本身就是那个预设了一些通用功能的机器人,但世界上那么多工程师,那么多具体的操作需求,软件不可能把所有的需求都预设成一个个的按钮,这时候就需要我们来“定制”一些自己的操作。在程序员的世界有句话:“Don't Repeat Yourself(不要重复你自己)”。这句话说的是代码不要重复,这对人来说也是一样。当一项工作需要重复操作很多次的时候,程序员一定会写一个程序,让机器来帮助完成任务。
在BIM圈,也有很多人走上了软件开发的道路,不过对大多数工程行业的人来说,没有很深的计算机学习背景,为工作中的具体场景学习写代码,性价比并不是很高,专门的软件研发方向也和他们的职业路线不相符。
这就是Dynamo派上用场的时候了。Dynamo是一个与Revit结合使用的可视化编程工具,它的界面非常友善,用线条把不同功能的节点块串联到一起,来实现不同的功能,让你用更直观简单的方式访问Revit API,可以不必输入一行代码。用Dynamo实现比较多的功能,就是完成那些重复的工作。
举个例子,我的一位朋友为了给一个项目录入信息,曾经需要专门雇几个实习生,一条条手动录入,当项目要录入上万条信息的时候,成本就很高;后来使用Dynamo,效率提高了不止10倍。同样,在Revit中插入一张表格或者出一张图很简单,而当你需要插入100张表格、出100张图的时候可就痛苦了,Dynamo可以让你本来花几个小时才能完成的重复工作在几分钟内完成。使用它不仅仅是完成重复的工作,还可以用来实现复杂形体的设计。稍微复杂一点的形体,可以用Revit体量功能来完成,但对于更复杂的异形建筑、桥梁等形体的建模,Revit体量功能就不够用了。
Dynamo可以作为一个强大的形体设计工具,通过编码生成需要的设计选项,来完成高难度的建模工作,后期也可以通过更改参数来方便地变更响应式模型。除此之外,Dynamo还可以用来做建筑信息的拾取和处理、环境分析等工作,只要发挥你的想象力,所有Revit提供的API可能做的事情,都可以用它抽取和集合起来,去做一些很棒的工作。
如果Revit是一辆赛车,建模的知识相当于知道刹车在哪、油门怎么踩、方向盘怎么控制,但也仅此而已了。随着你对赛车越来越深的了解,你需要更进一步知道它的引擎原理,了解怎么换机油、换备胎,甚至是自己改装让它的性能更棒。而学习Dynamo带来的思维转变是更重要的,它让你不满足于软件本身的预设操作,去想办法自己创造新的功能,并把创造成果分享给他人。它还会给你带来拆解任务的思维和数据思维,帮助你在BIM技术的探索之路上走得更远。通过对这本书的系统性学习,你将会走进Dynamo的神奇世界,那里有无数的“灵光一现时刻”在等待你。
BIMBOX孙彬