从 IT 的角度思考 BIM(一):面向对象

时间:2023-02-08 14:41:18
还记得那个笑话吗:要把大象放进冰箱,总共分几步?这不仅仅是一个笑话,还是一个值得我们好好分析的笑话。
如果要放进冰箱的是一个苹果,那么也就不可笑了,但换成大象,就引起了我们的兴趣和注意,为什么?
我们现在对 BIM 已不再陌生,但如果跳出建筑的视角来思考 BIM,我们是否会有全新的认识呢?
本文将从 IT 的角度来思考 BIM,希望能给大家带来一些启发。
 
面向对象与面向过程
 
当我们把一个苹果放进冰箱时,我们其实并不太关注它(或者试试把苹果手机放进冰箱!),我们关注的是放进冰箱这个事儿。不,事实上我们也不太关注冰箱,我们真正关注的是“保鲜”这个事儿(谁说我不关注苹果的,我可不想吃一个烂苹果)。把苹果放进冰箱的目的是保鲜,且通过简单的开关冰箱就可以达到这个目的,太方便了,顺便拿出一盒酸奶来喝。
然后我们听说要把大象放进冰箱里!哦,不,怎么可能!大象那么大个儿,冰箱那么小点儿,这不科学!
非常好,现在我们关注的不仅仅是”保鲜“了,大象和冰箱已经进入了我们的视野。
在程序开发者的眼中,大象和冰箱都可以理解为是对象。面向对象编程将对象作为程序的基本单元,关注对象及对象间的关系。我们对于把大象放进冰箱的困惑,其实正是因为我们在关注对象,在不知不觉使用面向对象的思维方式考虑问题,而放苹果的时候,我们关注的是“开门,放入,关门”这个动作及“保鲜”这个结果,使用的是面向过程的思维方式。
看,就是这样,秘密就蕴藏在生活之中,看上去是那么的普通,只待我们去发现。
仅仅通过一个笑话还不足以对面向对象和面向过程进行充分的了解,其实建筑师和各专业的工程师一直都在“编程”,只不过用的不是计算机语言而是建筑语言,而且面向对象和面向过程的思想都有涉及。“面向对象的编程并不在于编写代码”这句话可以让我们好好地思考建筑师和工程师在建筑领域里的“面向对象编程”。
 
BIM 与 CAD
 
面向对象的概念和应用已超越了程序设计和软件开发,扩展到了多个领域,现在我们不妨对照着百科中的说明看看 BIM,哇哦!没错,BIM 就是面向对象的概念在建筑领域的延伸。
等等!难道说 CAD 就不是面向对象了吗?从图形的角度来说,CAD 是面向对象的,从建筑的角度来说,这个真没有!
从不同的角度来看问题,我们的关注点也不同。如果从产品的角度来看待建筑,我们关心的是建筑及其组成部分,而不是图形及立体几何中的元素。
当你指着图纸里的一条带有线宽的线段说“这根梁的位置需要调整”,没有人会误会你,因为大家都在用这种方式在图纸上表达。我们都知道梁是有轮廓的,而且节点形式还比较复杂,可这些信息在这段粗线条里却无法看到。有人会说:没问题,我是个 CAD 高手,可以按照真实的情况来画,且不但会画二维还能画三维的。实际上这完全可行,只要技术过硬,完全可以基于 CAD 继续开发,实现我们想要的功能。有一些软件的确也是这么做的。但对于普通用户来说,这种规模的开发是不切实际的。并不是每个会骑自行车的人都能发明一个“A 型自行车马达” 对自行车进行改造升级,作为普通用户,直接买一辆改造好的自行车比较方便。幸运的是科技发展的很快,虽然去探索潘多拉还需要点时间,但现在我们已经有种类繁多的摩托车和电动自行车可以选购了。
永远相信美好的事情即将发生!软件技术的发展为面向对象思维在建筑领域的应用提供了强大的支持。
回想一下我们是如何使用 CAD 软件进行工作的:点,线,矩形,圆……使用各种图形对象进行组合来画图,通过处理图形对象之间的关系来实现建筑表达的目的。再想一想我们是如何使用 BIM 软件进行工作的:柱,梁,墙……使用各种建筑对象进行组合来建模,通过处理建筑对象之间的关系来在数字环境下创造建筑客体。如果把 CAD 比作是绘画,那么 BIM 就是雕塑。通过在不同角度描绘物体,我们可以得到多幅画像,但每一次我们都要从头开始画,且关注的是当前角度描绘表达的准确性,这就是绘画的方式。即便现在我们可以使用数码相机快速地拍照,那也仅是绘画技术的升级,方式并没有改变。雕塑关注的是客观对象,通过对每一个细节的琢磨,雕像可以展现客观对象的真实形态,我们可以从无数个角度进行观察,只要雕像在,我们随时可以绘画和拍照。如果你是个”冰冰棒“,是在家里挂一张大照片给力呢,还是3D 打印一个1:1的真人模型给力呢?
实际上 BIM 中也有很多的几何细节,并不比 CAD 少,但这些几何细节经过了封装,我们通过建立建筑对象和建筑对象之间的关系后,才能得到这些几何细节。这些几何细节对我们的意义在于它们是建筑对象的属性,而不是独立存在的。
尼古拉斯·尼葛洛庞帝曾说过:真正想要了解一只青蛙,传统的解剖不是办法,更好的方式是构造一只青蛙。
我们先放下手中的建筑切片,看看通过 BIM 我们是否可以真正地了解建筑。
 
敲响 BIM 世界的大门
 
敲门前我先讲一个真实的故事。新办公室装修,我决定采用千兆网络来布设这个局域网。我对网线的事不放心,再三确认下,装修公司说他们经验丰富,放心好了。结果等到测速的时候发现问题了。因为装修公司做预算的时候网线的长度是按箱计的,粗算下来觉得一箱够了。结果施工的时候少了几米,他们也没在意,就随手把一根六类线一分二,以填补他们因缺乏准确的计算而导致的遗漏。如果是百兆网络,这种做法没有什么影响,但千兆网络要是这样做的话,网速就会降级到百兆,六类线就失去了原有的作用。装修公司表示他们一直是这样处理的,也没见客户提出异议,由于重新穿这根网线太费周折,反复交涉下,最后他们做出了一些补偿。
你也许会纳闷,这和 BIM 有什么关系?如果我们把 CAD 比作百兆网络,把 BIM 比作千兆网络,现在看起来清楚点了:因为用得久,所以我们对百兆网络太熟悉了,以至于我们升级到千兆网络后对旧有的原理和方法毫不怀疑,自以为这些同样可以使用在新技术上。
有时候让我们犯错的恰恰是我们的经验,当我们迎接新世界时,我们也要重新审视自己。
如果新郎认为新娘是个女人就可以,对红盖头下的新娘没有任何期盼和掀起盖头的冲动,那么这段婚姻很可能只会走个过场,不管新娘有多美,新郎也不会懂。
如果这个故事敲响了你,那么说明你已经做好了准备。
是时候敲响 BIM 世界的大门了!

从 IT 的角度思考 BIM(一):面向对象的更多相关文章

  1. 从IT的角度思考BIM(二):模式与框架

    我们满怀着美好期许,鼓起勇气敲响了 BIM 世界的大门.忽然人群中有人高呼:BIM 已死,大家都散了吧! 这时人群开始骚动起来.“我早就说这玩意是忽悠人的吧,你们不信还偏要来”,“我花了好多钱准备这次 ...

  2. 从IT的角度思考BIM(三):敏捷开发

    人们看到了远处BIM的美丽胜景和阻挡在眼前的宽广河流.有些人自信满满地跳入河中打算孤身游过彼岸,可是却失败了.有些人匆匆忙忙地造了船胡乱地滑向彼岸,可是也失败了. 要如何继续这段探索之旅? 无论是&l ...

  3. 从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化

    从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化 神经网络在训练过程中,为应对过拟合问题,可以采用正则化方法(regularization),一种常用的正则化方法是L2正则化. 神经网络中 ...

  4. 第74讲:从Spark源码的角度思考Scala中的模式匹配

    今天跟随王老师学习了从源码角度去分析scala中的模式匹配的功能.让我们看看源码中的这一段模式匹配: 从代码中我们可以看到,case RegisterWorker(id,workerHost,.... ...

  5. 从数据库、页面加载速度角度思考 id设计 sku asin

    (已对数据进行字符串替换,去身份识别.隐私跟踪) 12-13-14-15-16-18岁20女孩夏装初中高中学生韩版上衣服短袖T恤衫-tmall.com天猫 https://detail.tmall.c ...

  6. 内存角度探寻C++面向对象 之 继承、多态

    一,简单继承: #include <iostream> class TableTennisPlayer { private: int id; public: TableTennisPlay ...

  7. 关于领域驱动设计(DDD)中聚合设计的一些思考

    关于DDD的理论知识总结,可参考这篇文章. DDD社区官网上一篇关于聚合设计的几个原则的简单讨论: 文章地址:http://dddcommunity.org/library/vernon_2011/, ...

  8. 一个简单的、面向对象的javascript基础框架

    如果以后公司再能让我独立做一套新的完整系统,那么我肯定会为这个系统再写一个前端框架,那么我到底该如何写这个框架呢? 在我以前的博客里我给大家展示了一个我自己写的框架,由于当时时间很紧张,做之前几乎没有 ...

  9. 06---Java基础、面向对象

    一.Java基础 1.Java概述 Java语言特点:                     简单性.解释性.面向对象.高性能.分布式处理                     多线程.健壮性.动 ...

随机推荐

  1. java设计模式- &lpar;1&rpar;单例模式

    参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式. 单例模式(Singleton Pattern)是 Java中最简单的设计模式之一.这种类型的设计 ...

  2. Oracle a Parameter with multi value

     备注:此两种方案,都因为oracle内部字符函数的参数长度4000限制.另外,个人测试,性能不如”将数据插入物理表再JOIN查询“或”每1000次ID做一次IN查询“的总的运行速度. 即ID的个数越 ...

  3. js-JavaScript高级程序设计学习笔记1

    第一章 1.一个完整的JavaScript实现应该由三个不同的部分组成:核心(ECMAScript).文档对象模型(DOM,提供访问和操作网页内容的方法和接口),浏览器对象模型(BOM,提供与浏览器交 ...

  4. 编写JS代码的&OpenCurlyDoubleQuote;use strict”严格模式及代码压缩知识

    Javascript的语法比较松散,大家对该门语言的印象可能是“简单”,我认为这恰恰相反.使用严格模式能防止你写出粗制滥造的语法代码来.应用了严格模式后尽管控制台报告的某些错误需要很大精力排除,但是从 ...

  5. Android 数据库读取数据显示优化 Application &lbrack;6&rsqb;

    Application和Activity,Service一样是android框架的一个系统组件, 当android程序启动时系统会创建一个application对象,用来存储系统的一些信息. 通常我们 ...

  6. SVN和GIT的使用

    一.SVN通用流程 1.从服务器仓库的项目上右键拷贝项目地址,然后来到你的电脑桌面上右键“SVN checkout...”,这样就跟服务器建立了关联 2.如果有创建新文件,则右键选择“Tortoise ...

  7. Cordova各个插件使用介绍系列(三)—&dollar;cordovaImagePicker从手机图库选择多张图片

    详情链接地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-3-cordovaimagepicker/ 这是能从手 ...

  8. Python获取区域面积

    import cv2 import numpy as np def get_leave_areas(image): img = cv2.imread(image) GrayImage = cv2.cv ...

  9. CentOS7配置静态IP

    确保是在root用户下进行操作,首先进入network-scripts目录 cd /etc/sysconfig/network-scripts/ 通过ls列出该目录下的所有文件,其中"ifc ...

  10. iOS开发中常见bug!(内附解答方法)

    序言 你是否曾经修复了一个 bug ,随后又发现了一个跟刚修复 bug 有关的 bug ,又或是修复 bug 的方式引起了另一个 bug ? 然而这些问题是绝佳的学习机会.所以我们怎样尽可能多地从修复 ...