前言

我之前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和IFCXML完全不是一个风格:

#418= IFCCARTESIANTRANSFORMATIONOPERATOR3D($,$,#6,1.,$);
#419= IFCMAPPEDITEM(#398,#418);
#421= IFCSHAPEREPRESENTATION(#102,'Body','MappedRepresentation',(#419));
#423= IFCPRODUCTDEFINITIONSHAPE($,$,(#421));
#427= IFCCARTESIANPOINT((-12502.8686011416,9028.41606591032,0.));
#429= IFCAXIS2PLACEMENT3D(#427,$,$);
#430= IFCLOCALPLACEMENT(#122,#429);
#432= IFCCOLUMN('0SxatZTarACPgizhCG4JI4',#41,'\X2\77E95F6267F1\X0\:475 x 610mm:314634',$,'475 x 610mm',#430,#423,'314634');
#441= IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('475 x 610mm'),$);
#442= IFCPROPERTYSINGLEVALUE('LoadBearing',$,IFCBOOLEAN(.F.),$);
#443= IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.F.),$);
#444= IFCPROPERTYSET('05PNohEsD3Rv_4ph6XtmWm',#41,'Pset_ColumnCommon',$,(#441,#442,#443));
#449= IFCRELDEFINESBYPROPERTIES('15kRsx1rjC$BbM1rYo93oK',#41,$,$,(#432),#444);
     <IfcAxis2Placement3D id="i7394"><Location><IfcCartesianPoint xsi:nil="true" ref="i1642"/></Location></IfcAxis2Placement3D><IfcRepresentationMap id="i7395"><MappingOrigin><IfcAxis2Placement3D xsi:nil="true" ref="i7394"/></MappingOrigin><MappedRepresentation><IfcShapeRepresentation xsi:nil="true" ref="i7390"/></MappedRepresentation></IfcRepresentationMap><IfcColumnType id="i7396"><GlobalId>0SxatZTarACPgi$hCG4JPI</GlobalId><OwnerHistory><IfcOwnerHistory xsi:nil="true" ref="i1677"/></OwnerHistory><Name>475 x 610mm</Name><RepresentationMaps exp:cType="list-unique"><IfcRepresentationMap exp:pos="0" xsi:nil="true" ref="i7395"/></RepresentationMaps><Tag>52557</Tag><ElementType>475 x 610mm</ElementType><PredefinedType>column</PredefinedType></IfcColumnType><IfcMappedItem id="i7398"><MappingSource><IfcRepresentationMap xsi:nil="true" ref="i7395"/></MappingSource><MappingTarget><IfcCartesianTransformationOperator3D xsi:nil="true" ref="i2054"/></MappingTarget></IfcMappedItem><IfcShapeRepresentation id="i7400"><ContextOfItems><IfcGeometricRepresentationSubContext xsi:nil="true" ref="i1738"/></ContextOfItems><RepresentationIdentifier>Body</RepresentationIdentifier><RepresentationType>MappedRepresentation</RepresentationType><Items exp:cType="set"><IfcMappedItem xsi:nil="true" ref="i7398"/></Items></IfcShapeRepresentation><IfcProductDefinitionShape id="i7402"><Representations exp:cType="list"><IfcShapeRepresentation exp:pos="0" xsi:nil="true" ref="i7400"/></Representations></IfcProductDefinitionShape><IfcCartesianPoint id="i7404"><Coordinates exp:cType="list"><IfcLengthMeasure exp:pos="0">12097.1314</IfcLengthMeasure><IfcLengthMeasure exp:pos="1">-7771.583934</IfcLengthMeasure><IfcLengthMeasure exp:pos="2">0.</IfcLengthMeasure></Coordinates></IfcCartesianPoint><IfcAxis2Placement3D id="i7406"><Location><IfcCartesianPoint xsi:nil="true" ref="i7404"/></Location></IfcAxis2Placement3D><IfcLocalPlacement id="i7407"><PlacementRelTo><IfcLocalPlacement xsi:nil="true" ref="i1758"/></PlacementRelTo><RelativePlacement><IfcAxis2Placement3D xsi:nil="true" ref="i7406"/></RelativePlacement></IfcLocalPlacement><IfcColumn id="i7408"><GlobalId>0SxatZTarACPgizhCG4JPI</GlobalId><OwnerHistory><IfcOwnerHistory xsi:nil="true" ref="i1677"/></OwnerHistory><Name>矩形柱:475 x 610mm:315356</Name><ObjectType>475 x 610mm</ObjectType><ObjectPlacement><IfcLocalPlacement xsi:nil="true" ref="i7407"/></ObjectPlacement><Representation><IfcProductDefinitionShape xsi:nil="true" ref="i7402"/></Representation><Tag>315356</Tag></IfcColumn><IfcPropertySet id="i7411"><GlobalId>1e4Rp$oOz5K9gpH1Lh5URA</GlobalId><OwnerHistory><IfcOwnerHistory xsi:nil="true" ref="i1677"/></OwnerHistory><Name>Pset_ColumnCommon</Name><HasProperties exp:cType="set"><IfcPropertySingleValue xsi:nil="true" ref="i2077"/><IfcPropertySingleValue xsi:nil="true" ref="i2078"/><IfcPropertySingleValue xsi:nil="true" ref="i2079"/></HasProperties></IfcPropertySet>

至于之后是想要做某一领域拓展,还是格式转换,数据轻量化,做其他研究的数据库等等,只要基本理解了ifc的语句含义,再做一些其他工作也好办一些。

总之,希望各位能够在ifc的世界中尽快上手,初学过程实在是太过于痛苦了。我现在回想一下2019下半年和2020上半年,还是心有余悸。。。过来了,就好了很多。想一起学习的别忘了私信我哦,我来做整合,大家一起加油吧!

IfcOpenShell - Python 2022最新安装步骤 兼谈IFC的理解与认识相关推荐

  1. Python+Pycharm+Anaconda安装步骤详解

    Python+Pycharm+Anaconda安装步骤详解 概念介绍:Python是什么?为什么要安装Python+Pycharm+Anaconda? 想要达到Python+Pycharm+Anaco ...

  2. python软件下载安装步骤,python软件下载安装教程

    python下载安装教程 python下载安装教程:自定义安装目录,点击install进行安装,打开cmd窗口,输入python,显示python的版本,安装成功. Python语言更适合初学者,Py ...

  3. python详细安装步骤-Python的详细安装步骤

    这是一篇关于如何安装Python的详细教程,经过下面的解读,然后跟着以下步骤,你也可以在自己的电脑安装Python了! 一. Python简介: Python在Linux.windows.Mac os ...

  4. python官网安装步骤-Python解释器的安装步骤

    Python是一门强大的语言,目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,在Windows10系统上需要安装一下,超简单 2. 下载完毕后打开进行安装,勾选( ...

  5. python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项

    新手如何下载安装Python以及配置环境变量呢?初学者选择Python2还是Python3呢?Windows下安装简单,初学者建议直接选择Python3- 首先分享Python下载方式 到Python ...

  6. python软件安装步骤-Linux中Python 环境软件包安装步骤

    简介: 记录一下关于 Python 环境软件包的一些安装步骤 1.升级 Python 到 2.7.10( 默认 2.6.6 ) shell > yum -y install epel-relea ...

  7. python解释器的安装步骤-Python本地及虚拟解释器配置过程解析

    1.准备工作 安装好Pycharm2017版本 电脑上安装好Python解释器 2.本地解释器配置 配置本地解释器的步骤相对简洁直观: (1)单击工具栏中的设置按钮. (2)在Settings/Pre ...

  8. 安装完python怎么打开安装步骤-Python安装与运行测试详细教程,带你攻克第一个学习难关...

    人生苦短,我选python. 无论有没有编程基础,无论什么专业,越来越多的大学生选择从python入手学习数据分析.难得有学习的激情,书都买好了,结果却败在了第一步--软件安装上-- 今天小编特意出了 ...

  9. Python——IDLE的安装步骤

    首先,IDLE是一款免费的软件,可以直接去python的官网下载,在官网找到相应自己电脑的配置的一类之后选择"Download Windows x86-64 executable insta ...

最新文章

  1. PLM在企业中的实际价值与意义
  2. 十六进制字符转二进制字符
  3. 禄露禄露碌脛脥炉脛锚,学者批时下宫廷戏“就是一堆文化垃圾”
  4. 装饰者模式和适配器模式对比
  5. 双向广搜 8数码问题
  6. 一进庙会freeeim
  7. php怎么引入外部css文件,js如何引入css外部文件
  8. 偏置方差分解Bias-variance Decomposition
  9. 说点你们不知道的大趋势
  10. java解析多层嵌套json字符串_Redis使用字符串和hash存储JSON,哪个更高效?
  11. 新版白话空间统计(11):ArcGIS中的PZ值标尺
  12. 网页右下角3秒自动弹出悬浮在线客服代码
  13. 全外显子测序(WES)由入门到精通记录
  14. excel使用教程_Excel筛选和高级筛选怎么使用?筛选最全教程
  15. python工作技巧_能让你工作事半功倍的python小技巧大合集
  16. Vue项目安装XLSX成功后,生成项目报错:“export ‘default‘ (imported as ‘XLSX‘) was not found in ‘xlsx‘
  17. [硬件]导热垫(Thermal Pad)和导热过孔(Via for thermal pad)
  18. java/php/net/python西石大快递代取系统设计
  19. 利用预测分析改进欠款催收策略,控制欺诈风险和信贷风险
  20. vue2.0基于element ui 上月 本月 下月

热门文章

  1. Codeforces Contest 1092 problem D1 Great Vova Wall (Version 1)
  2. 工作小记——一账通平台设计分析及结果
  3. js实现网页打印分页打印
  4. html5地图图片拖拽,javascript html5 canvas实现可拖动省份的中国地图
  5. 为什么输入动态口令后,不弹出证书,证书已下载。
  6. Aptana 修改代码格式化快捷键
  7. 【VS开发】MFC学习之 解决StretchBlt()图片缩放绘图失真
  8. 今日份安利:音频淡入淡出效果如何制作?
  9. CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue.
  10. [附源码]Nodejs计算机毕业设计绝味鸭脖连锁店信息系统Express(程序+LW)