前言
我之前2020年写了一个IfcOpenShell - Python的安装教程,相信不少对IFC感兴趣的朋友已经看过。两年多以后发生了很多事情,我的工作重心也不再是IFC IFCXML。目前我对IFC的理解就是“底层数据库”,以他为数据库我可以做很多尝试,但是单纯让我研究这个数据库,说真的确实有难度。
时至今日,我对Revit等建筑类信息软件导出的IFC的文本,也只是敢保证“我应该能看懂”,很多实体的具体含义以及各种用法还是有些糊涂。这个就好比大家本科学高数的时候,【懂原理】和【会做题】的感觉。我目前大概属于【会做题】,还达不到【懂原理】。但是我觉得比较新人菜鸟而言,我的学习经验以及成长之路还是足够用了的。有想一起学习了解ifc ifcxml的朋友可以私信我,我把你们都整合到一起。
前期准备
Python编译器就随便了,老版安装指南那个时候,我用的是pycharm,现在我用的是VSCODE,反正都一样,我就默认大家已经安装好了。
这个是重点:需要自行安装anaconda并且配置好环境变量。我安装的最新版,对应的是Python3.9.13。地址如下:
https://www.anaconda.com/
安装的时候要注意这里,环境变量这里一定一定要选上,会节省很多不必要的麻烦。另外说一下这个截图是网上找的,版本应该是2020年末,2021年初的版本,因此对应的Python是3.8。如果安装最新版就是3.9了,我只是拿出来做个例子,大家不要恐慌。
然后就安装好了!接下来就是安装ifcopenshell。
IfcOpenShell 安装
看过老版的都应该有点印象,安装过程非常复杂且繁琐。
大家现在可以喘口气了,新版会非常简单。
打开anaconda prompt,建议管理员身份,如下图所示。
打开后熟悉的黑漆漆一片,然后输入语句:
conda install -c ifcopenshell -c conda-forge ifcopenshell
语句的作用是安装最新版ifcopenshell,目前是0.7.0版本。来源在这里:
https://blenderbim.org/docs-python/ifcopenshell-python/installation.html
两年之后,ifcopenshell已经有了专属于他的documentation,创作者我没猜错的话,应该是BlenderBIM Add-on的开发者,也是OSArch社区的创始人(之一)Dion Moult 小哥。他也是我目前认为BIM IFC 领域做插件 做二次开发最顶尖的几个人之一。当时在2020年年初写ifc系列文章的时候,Moult小哥也给了我一些指导和鼓励,让我(至少在2020年)坚持下来做内容输出分享。
哈哈有点陷入回忆了,我们继续。
在黑乎乎的页面输入语句后系统自动检查并匹配环境,一段时间后(我是半个小时多点)会列出需要安装的软件列表,需要我们手动点击y。然后就是安装过程。我在境外,安装网速也比较给力,安装过程3~5分钟就解决了。
截图中最上面的两行是指ifcopenshell安装完毕。剩下的就是TensorFlow的安装(机器学习深度学习的东西,和建筑信息化基本无关)。由于版本比较高,我没有安装成功TensorFlow,但是pytorch我安装好了,所以不耽误干活。又扯远了哈哈,关注ifcopenshell即可。
安装步骤就结束了,一次成功。
检验是否成功
最后检验一下是否成功。
我有一个用VSCODE运行顺利的Gamma函数图像程序,上文提到了我还安装了pytorch,于是乎我一起检验一下,不报错就说明都成功了。如下图所示。
一次成功!这次一共用了(加上我写这篇文章)一个小时,比两年前那篇文章好太多了。
结尾1-漫谈IFC的价值和缺陷
最后随便说说ifc吧。
对我的研究生涯 学习生涯而言,ifc起到了非常重大的作用。我靠着研究ifcxml的数据结构发了top 期刊(JCR Q1; 中科院Q2但是今年有希望升级),没有他我肯定毕不了业更不可能找到目前到手的工作。
但是ifc对于建筑行业呢?真的有很大意义吗?我始终觉得ifc有点过于面面俱到。对于general的内容,ifc(实际上是背后的母公司buildsmart)恨不得把所有的内容全解释清楚,全都想到。于是乎IFC搞出了那么多个实体,单单是IFC的documentation就足以让小白 初学者望而却步。实际上如果是专注于工民建的同学,真的耐着性子“啃”几个ifc建筑模型,说真的doc中给出的实体,能用上20%就不错了,搞不好只有5%到10%。而且IFC对于特定领域还没啥用,对于A领域要做拓展,B领域要做拓展。。。简单说IFC基本盘“太满”,特定林谷又“不足”,初学者上手困难,文本语句不好理解,documentation也是一知半解。
结尾2-漫谈IFC的学习方法
初学者往往会陷入“先泛读后精读”的思维定式,因此很多初学者一开始接触ifc,看了我的或者其他博主的一些文章,知道了ifc的那个online doc,就直接跑去看doc了。说实在话那玩意“狗都不看”。初学者几乎完全看不懂,一腔热情喂了狗,要不是为了毕业/挣钱,早他妈换方向了。。。
我的理解是,documentation实际上相当于字典。而初学者小白们相当于三岁小孩学写字。我印象中好像没有哪个教育学家或者补习机构,是让小孩看着字典一页一页翻,来学习写字的。一般而言,教学都是依据教材来进行的,这个工序是越低年级越依赖教材,越高年级越不依赖教材。比如高中语文除了文言文默写,其他的课文基本上对高考没什么意义,阅读理解题 作文 这些反而更依赖学生的课外阅读量和逻辑思维能力等等。而小学一年级语文必须跟着教材走,从拼音到简单独体字到偏旁部首。所欲对于ifc而言,初学者小白也一样,你们需要教材,而不是字典。而且还不止ifc一本教材,编程什么的也得现学(如果之前没基础,是纯土建的话)。
偏偏buildingsmart不是什么教育家,他们以极其富有程序员思维的面向对象方式编辑出了一套文本格式ifc以及对应的documentation。再加上ifc比编程语言小众的多得多,导致市面上也没什么教材。因此初学者确确实实很难上手,更别提感兴趣了。
我的观点是,没有教材,要自己创造教材。我们可以通过目前现有的主流信息化软件如Revit,Civil3D,Blender BIM,自己设计一些建筑构件,比如一个一层框架,四根梁 四根柱子 四面墙 两个楼板。然后输出ifc ifcxml格式。从头到尾仔仔细细阅读一下这两份文件。ifc文件看着不适应可以从ifcxml入手,用xml的标签化文本加深对实体 属性 属性集等语法概念的理解(如下2图,对比一下)。之后逐渐加深难度,一个平房,一栋大楼,一个真实建筑模型等等。当一个同学能把简单框架,平房,大楼,真实模型这四个建筑模型对应的ifc ifcxml通读下来且能达到一半以上的理解,基本上就算“识字量3000”,不再是“文盲”了。
至于之后是想要做某一领域拓展,还是格式转换,数据轻量化,做其他研究的数据库等等,只要基本理解了ifc的语句含义,再做一些其他工作也好办一些。
总之,希望各位能够在ifc的世界中尽快上手,初学过程实在是太过于痛苦了。我现在回想一下2019下半年和2020上半年,还是心有余悸。。。过来了,就好了很多。想一起学习的别忘了私信我哦,我来做整合,大家一起加油吧!