IFC学习相关资料加强版 致敬黑夜的骑士
我的Revit二次开发跟着黑夜的骑士学习了一遍,感觉很受启发。因此也订阅了他的博客。无意间翻到了骑士关于IFC的一个文章,我在去年5月到今年4月一直从事IFC的压缩 优化工作,对IFC还是比较了解的,因此我想在骑士基础上,给大家更完整的介绍一下IFC。
1、什么是IFC
industry foundation classes(IFC)数据模型旨在描述建筑,建筑行业的数据。它是不受平台限制的开放文件格式规范,不受单个供应商或供应商组控制。它是一种基于对象的文件格式,带有由buildingSMART(以前为国际互操作性联盟,IAI)开发的数据模型,以促进建筑,工程和建筑(AEC)行业的互操作性,并且是建筑信息中常用的协作格式基于建模(BIM)的项目。
简单说,IFC是一种数据规范。
2、IFC有哪些“官方”的格式?
IFC-SPF 以.ifc为后缀,算是最通用的一种格式方案。STEP物理格式(SPF或IFC-SPF)是IFC在实践中使用最广泛的格式,它是列出的格式中最紧凑的格式,可以作为文本阅读。 IFC-SPF基于ISO标准,用于EXPRESS数据模型ISO 10303-21的明文表示。
IFCXML,以.ifcxml为后缀,可扩展标记语言(XML)提供了增强的可读性,并从各种软件工具中受益。 ifcXML基于ISO标准,以XML格式ISO 10303-28表示STEP数据。
IFCZIP,以.ifczip为后缀,内存非常小,但是revit目前打不开这个格式。只能打开.ifc .ifcxml格式。
TTL和RDF,这两种属于“语义”格式(需要引入另一个概念叫IFCOWL,然后OWL又要引入新概念ontology 本体,这就多了先不解释了)
以上几种属于官方认证现存的,其中前两个revit能打开直接读取。
目前还有ifcjson、HDF、sqllite等几种格式正在开发中,尚未得到官方认证。
3、怎么学习IFC
首先用户要会自行导出IFC文件,无论是.ifc 还是 .ifcxml都可以,这个自己操作下吧不多说了,不算很难。
然后打开之后就会蒙,这都是啥玩意?一堆字母密密麻麻的。
好的这就用上了骑士之前的一些资料。他给的有:
1.IFC Wiki,这个网站描述了IFC的各个方面
http://www.ifcwiki.org/index.php?title=IFC_Wiki
2.IFC 4 结构描述
https://standards.buildingsmart.org/MVD/RELEASE/IFC4/ADD2_TC1/RV1_2/HTML/
3.IFC 开源软件集合
http://www.ifcwiki.org/index.php?title=Open_Source
4.IFC免费软件集合(可视化,编辑,解析)
http://www.ifcwiki.org/index.php?title=Freeware
5.IFC商业软件集合(可视化,编辑,解析)
https://technical.buildingsmart.org/community/software-implementations/
但是说实话我觉得最根本的一些东西没给出来。这个我来补充。
3-1 IFC官方文档(在线)
https://standards.buildingsmart.org/IFC/RELEASE/IFC4/FINAL/HTML/
1234属于介绍,大家可以随便看看,个人觉得不是很重要。
5678四大schema,这四个是最重要的,其中6是最重要的,建筑中的关键东西梁板柱之类的都在这个里面。其次是8,各种几何资源都在8当中。
在线文档的编辑格式类似于revit API,对每一个实体都有详细的介绍和实例、继承关系的解说。我自己是先IFC后API,所以我觉得看API很顺利,那么反过来也一样,二次开发搞得多了,直接去看IFC的doc也没问题。
API学习可以看这篇文章:Revit数据库学习-完整数据库调试-分类整理_shanmama2434的博客-****博客_revit数据库学习 https://blog.****.net/shanmama2434/article/details/107973802
3-2 土建领域软件大集合:
AEC领域(可理解为土建类)开源软件总结_shanmama2434的博客-****博客_speedx aec https://blog.****.net/shanmama2434/article/details/105324777
这个基本上大于等于骑士给出的资料。
3-3 IFC文档桌面版
这个软件叫IFC doc,直接在桌面上能阅读IFC的实体解说和EXPRESS关系图。
GitHub - buildingSMART/IfcDoc: IFC Documentation and Toolkit https://github.com/buildingSMART/IfcDoc
3-4 EXPRESS语言
2中提到了: IFC-SPF基于ISO标准,用于EXPRESS数据模型ISO 10303-21的明文表示。
那么EXPRESS语言是很关键的一个学习工具,必须要具备面向对象的思维模式才能理解IFC的实体关系之所在。3-3提到了“EXPRESS关系图”,这个东西我曾经在知乎上提问过,如下所示:
这个东西叫EXPRESS-G,就是用图来表示EXPRESS语言中各个实体的关系,那么IFC的实体之间关系也是这么表示的。在IFC在线的doc和ifcdoc软件中都有大量的这种图,所以先了解一下express语言是很有必要的。
4、我的一些工作。
在今年3-6月份我开发 完善了两款针对IFCXML格式的压缩器,旨在去掉IFCXML文件中的重复引用问题,减小文件的格式。经过测试可以达到20%-60%的轻量化,比如一个30M的ifcxml经过我的软件压缩后,能减少到20M左右。而且压缩后的文件,在REVIT中还能正常显示,没丢东西。
https://blog.****.net/shanmama2434/article/details/105079113
https://blog.****.net/shanmama2434/article/details/105590559
以上就是我目前对IFC学习资料的一个概述,具体的一些课题,开发,研究还可以进一步交流。致敬黑夜的骑士,也是对他文章的补充。