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/
IFC学习相关资料加强版 致敬黑夜的骑士
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关系图”,这个东西我曾经在知乎上提问过,如下所示:
IFC学习相关资料加强版 致敬黑夜的骑士
这个东西叫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学习资料的一个概述,具体的一些课题,开发,研究还可以进一步交流。致敬黑夜的骑士,也是对他文章的补充。