IfcOpenShell - Python 2022最新安装步骤 兼谈IFC的理解与认识
前言
我之前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的理解与认识相关推荐
- Python+Pycharm+Anaconda安装步骤详解
Python+Pycharm+Anaconda安装步骤详解 概念介绍:Python是什么?为什么要安装Python+Pycharm+Anaconda? 想要达到Python+Pycharm+Anaco ...
- python软件下载安装步骤,python软件下载安装教程
python下载安装教程 python下载安装教程:自定义安装目录,点击install进行安装,打开cmd窗口,输入python,显示python的版本,安装成功. Python语言更适合初学者,Py ...
- python详细安装步骤-Python的详细安装步骤
这是一篇关于如何安装Python的详细教程,经过下面的解读,然后跟着以下步骤,你也可以在自己的电脑安装Python了! 一. Python简介: Python在Linux.windows.Mac os ...
- python官网安装步骤-Python解释器的安装步骤
Python是一门强大的语言,目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,在Windows10系统上需要安装一下,超简单 2. 下载完毕后打开进行安装,勾选( ...
- python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项
新手如何下载安装Python以及配置环境变量呢?初学者选择Python2还是Python3呢?Windows下安装简单,初学者建议直接选择Python3- 首先分享Python下载方式 到Python ...
- python软件安装步骤-Linux中Python 环境软件包安装步骤
简介: 记录一下关于 Python 环境软件包的一些安装步骤 1.升级 Python 到 2.7.10( 默认 2.6.6 ) shell > yum -y install epel-relea ...
- python解释器的安装步骤-Python本地及虚拟解释器配置过程解析
1.准备工作 安装好Pycharm2017版本 电脑上安装好Python解释器 2.本地解释器配置 配置本地解释器的步骤相对简洁直观: (1)单击工具栏中的设置按钮. (2)在Settings/Pre ...
- 安装完python怎么打开安装步骤-Python安装与运行测试详细教程,带你攻克第一个学习难关...
人生苦短,我选python. 无论有没有编程基础,无论什么专业,越来越多的大学生选择从python入手学习数据分析.难得有学习的激情,书都买好了,结果却败在了第一步--软件安装上-- 今天小编特意出了 ...
- Python——IDLE的安装步骤
首先,IDLE是一款免费的软件,可以直接去python的官网下载,在官网找到相应自己电脑的配置的一类之后选择"Download Windows x86-64 executable insta ...
最新文章
- PLM在企业中的实际价值与意义
- 十六进制字符转二进制字符
- 禄露禄露碌脛脥炉脛锚,学者批时下宫廷戏“就是一堆文化垃圾”
- 装饰者模式和适配器模式对比
- 双向广搜 8数码问题
- 一进庙会freeeim
- php怎么引入外部css文件,js如何引入css外部文件
- 偏置方差分解Bias-variance Decomposition
- 说点你们不知道的大趋势
- java解析多层嵌套json字符串_Redis使用字符串和hash存储JSON,哪个更高效?
- 新版白话空间统计(11):ArcGIS中的PZ值标尺
- 网页右下角3秒自动弹出悬浮在线客服代码
- 全外显子测序(WES)由入门到精通记录
- excel使用教程_Excel筛选和高级筛选怎么使用?筛选最全教程
- python工作技巧_能让你工作事半功倍的python小技巧大合集
- Vue项目安装XLSX成功后,生成项目报错:“export ‘default‘ (imported as ‘XLSX‘) was not found in ‘xlsx‘
- [硬件]导热垫(Thermal Pad)和导热过孔(Via for thermal pad)
- java/php/net/python西石大快递代取系统设计
- 利用预测分析改进欠款催收策略,控制欺诈风险和信贷风险
- vue2.0基于element ui 上月 本月 下月
热门文章
- Codeforces Contest 1092 problem D1 Great Vova Wall (Version 1)
- 工作小记——一账通平台设计分析及结果
- js实现网页打印分页打印
- html5地图图片拖拽,javascript html5 canvas实现可拖动省份的中国地图
- 为什么输入动态口令后,不弹出证书,证书已下载。
- Aptana 修改代码格式化快捷键
- 【VS开发】MFC学习之 解决StretchBlt()图片缩放绘图失真
- 今日份安利:音频淡入淡出效果如何制作?
- CondaSSLError: Encountered an SSL error. Most likely a certificate verification issue.
- [附源码]Nodejs计算机毕业设计绝味鸭脖连锁店信息系统Express(程序+LW)