文章目录

  • 01 EXRESS建模语言
  • 02 EXPRESS-G 图形表达
  • 03 IFC物理文件解析
  • 04 参考文献

01 EXRESS建模语言

IFC标准是参考STEP(Standard for the Exchange of Product Model Data,产品数据交换标准)标准进行开发并逐步完善的,EXPRESS建模语言是STEP格式最重要的产物,它采用了很多面向对象的概念,包括多重继承,所以IFC标准的整体架构同样也是以EXPRESS语言为基础的,并通过STEP物理文件完成对数据信息的描述。

EXPRESS是一种表达产品数据的标准化数据建模语言,它提供了对建筑信息模型和建设工程数据的详细描述,同时也提供了与这些对象有关的信息和约束的描述。原始建筑数据的最大特点是分散,实体构件的属性特征如几何尺寸、材料、颜色、创建日期、名称、编号等依赖于实体构件存在,不成体系,条理混乱。EXPRESS语言将构件以及构件的属性归纳为不同模块下的实体类,类与类之间通过关联关系(约束、指向、引用等)表达一个完整的构件。EXPRESS语言不同于C++Java等面向对象的程序设计语言。与它们相比,EXPRESS语言看重信息描述方式的可读性,重视数据的定义和描述,而不是计算机对代码的可执行程度。EXPRESS语言的设计是为了实现计算机对大规模数据的可读性,其优势包括:

  • 使用机器可读的建模语言—EXPRESS,而不是一般的文件格式;
  • 该语言强调数据声明,且包括规则和约束的程序化功能;
  • 该语言可以实现不同的数据映射,包括文本文件格式,数据库模式定义和XML模式;
  • 参考子模型,它们是较大的标准模型的共享和重复使用的子集,可满足几何,测量,表示分类和其他一般需求。

作为用于数据描述的语言,EXPRESS语言对数据的定义与面向对象中的类的概念对应。在类的定义中,类从声名关键词ENTITY开始,到END_ENTITY结束。属性是类的特征表示(数据和行为关系),需要它们来支持对类的理解和使用。ESPRESS语言在定义IFC标准时使用了超类和子类的概念,这两个概念建立IFC实体之间的继承关系,形成IFC实体之间的层次关系。图1中的文本为EXPRESS定义IFC实体类的实例,该文本中定义3IFC实体,通过超类和子类表明它们之间的继承关系。这三个实体分别为IfcRootIfcRelationshipIfcRelDefines,它们之间的继承关系表达为:IfcRootIfcRelationship的超类,IfcRelDefines则是IfcRelationship的一个子类。

图1 EXPRESS定义IFC实体的示例

02 EXPRESS-G 图形表达

EXPRESS语言非常适合计算机的数据读写和处理,但人工读取存在相当大的困难,如图2所示,为了提高内容的可读性,以关系图表为表达形式的EXPRESS-G视图得到普遍应用。

EXPRESS-G是由STEP开发的图表建模方法。如图3所示,在EXPRESS-G视图中,使用实线矩形框来表示IFC实体,利用多种关系连接线建立实体之间以及实体与属性之间的关系。当属性类型为聚合数据类型时,可直接在属性关系线上标出,使用聚合数据类型的第一个字母(即L/S/B/A)进行表示,例如“S[mn]”表示该属性为一个集合(SET),其中 “m” 代表该集合的索引最小值,“n” 代表该集合的索引最大值,若 “n” 为 “?” 则表示集合中的元素数量是可变的,这里的索引表示实体和属性的基数关系,如果属性没有规定聚合,则基数关系为1。此外,存在部分被称为“抽象类”的实体,该类实体可以作为其他实体的超类,在实体前标注“(ABS)”表示该实体是抽象类。实体间有强制、可选、继承、选择四种关系。

图2 EXPRESS实体建模及其对应的EXPRESS-G图示

图3 EXPRESS-G图例

03 IFC物理文件解析

IFC物理文件可以直接用文本编辑器进行查看,文本内容以“ ISO-10303-21 ;”开头,以“END-ISO-10303-21;”结尾,其文件结构分为两个部分:头段和数据段。头段内容位于标识符“HEADER”和最先出现的标识符“ENDSEC”之间,主要给出关于文件本身的基本信息,包括文件描述、文件名、IFC框架版本;数据段则以关键字“DATA”作为开始标识,同样以“ENDSEC”作为结束标识,该部分是IFC数据模型的主要内容,包含了要交换的工程信息。

图4 IFC物理文件实例

图4中的文本为IFC文件的实例。从头段内容可以看出该文件为IFC4版本文件,数据段的内容通过 “#”+ 整数值 的方式定义标示符,其中整数值并不一定连续,其它实体对象可通过该标识符来进行关联和引用。等号后面的内容由IFC实体类型名称和其属性定义组成,其中实体类型名称均采用大写,而括号内则是该实体的属性定义,不同属性之间以逗号分隔。不同的属性类型表示方法也不尽相同,具体如下:

① 当为单值类型时,可直接在其属性定义位置处给出相应的值;

② 当为枚举类型时,需在给出枚举类型值的同时,前后各加一个“.”,以便区分;

③ 当为聚合类型时,属性值需在半角字符的括号内,数据之间以逗号作为分隔符;

④ 当属性定义为引用对象时,则直接标明被引用对象的标识符即可;

⑤ 当属性定义为空时,以“$”表示。

04 参考文献

[1] 王平,李嘉璠. 一种产品数据的图形表达方法─EXPRESS-G(下)[J]. 计算机辅助设计与制造,1999,(10):40-42+50.

[2] 基于IFC的桥梁施工监控数据集成与可视化研究

以下是我的创建的IFC交流群,有兴趣的可以扫码加入!
抱歉,图片被CSDN认为是违规的,群号为:788206534,麻烦大家手动输入了。

工业基础类IFC—EXPRESS语言相关推荐

  1. 工业基础类IFC—如何阅读物理文件

    文章目录 ==01== 确定IFC标准 ==02== IFC实体快速定位 ==03== 属性查询 ==04== 关于物理文件中 **$** 的解释 ==05== 总结 前两期的内容 : <工业基 ...

  2. 工业基础类IFC—提取模型结构树

    首先,抱歉,很久没有更新文章了,也来不及解释了,我们直接进入正题吧.这篇还是接上之前挖坑的IFC系列,前面的几篇文章我们聊了IFC的一些概念.数据结构和可视化工具等等,有了这些铺垫之后,我们基本就可以 ...

  3. 工业基础类IFC—开源库汇总

    name descrip license Adapy Adapy是一个用于结构分析和设计的python库,致力于IFC与各种有限元格式的交互.同时,它还提供一套CAD模型和FEM网格模型的参数化建模框 ...

  4. 工业基础类IFC—IFC Viewers

    文章目录 1 [BIMvision](https://bimvision.eu/) 2 [Open IFC Viewer](https://openifcviewer.com/) 3 [Open In ...

  5. STEP标准描述方法-EXPRESS语言

    据模型正式定义数据对象和数据之间的关系,对象为感兴趣的领域.数据模型的一些典型应用包括支持数据库的开发和实现数据在感兴趣的特定领域的交流.数据模型在数据建模语言来指定. EXPRESS是在ISO 10 ...

  6. 工业基础类—利用xBIM提取IFC几何数据

    在正式说提取IFC几何信息之前,我想我们应该花点时间了解一下什么是几何,以及IFC标准中是如何描述几何的.生活中的几何无处不在,它是由点.线.面等基本几何图形组合而成,它可以构成一个方方正正的桌子,也 ...

  7. 齐鲁工业大学c语言复试真题,2016年齐鲁工业大学理学院C语言程序设计复试笔试仿真模拟题...

    一.选择题 1. 以下选项中,合法的一组C 语言数值常量是( ). A.12. 0Xa23 4.5e0 B.028 .5e_3 -0xf C..177 4el.5 Oabc D.0x8A 10.000 ...

  8. 齐鲁工业大学c语言程序设计试题及答案,2016年齐鲁工业大学理学院C语言程序设计考研复试题库...

    一.选择题 1. 以下叙述中错误的是( ). A. 书写风格良好的程序执行效率尚 B. 书写风格良好的程序易读性好 C.C 程序可以在一行上写多条语句 D.C 程序允许将一条语句分写在多行上 答:A ...

  9. BIM建筑环境规则和分析(BERA)语言介绍(一)概要

    -------作者:JIN KOOK LEE   指导: Charles M. Eastman 本研究旨在设计和实现特定领域的计算机 编程语言:建筑环境规则和分析(BERA)语言. 由于建筑信息模型( ...

  10. .NET 开源软件开发BIM工具包xBIM

    一.xBIM 简介 BIM(Building Information Modelling)建筑信息模型,xBIM(eXtensible Building Information Modelling)可 ...

最新文章

  1. 条件随机场CRF HMM,MEMM的区别
  2. 梯度下降中的学习率的作用
  3. 导出oracle sequences,CSS_oracle导出序列方法分析,方法一:SELECT ' CREATE SEQUEN - phpStudy...
  4. VSCode 用户自定义片段 snippet 基本语法说明
  5. 使用纯代码进行界面布局
  6. 2020-08-22 每日一句
  7. 氮化镓 服务器电源管理系统报价,氮化镓(GaN)技术推动电源管理不断革新
  8. pd.concat实现数据合并
  9. vue.js django_如何使用Django和Vue.js对Web应用程序进行原型制作
  10. JSP网上二手交易商城
  11. (超详细)大数据Hadoop之MapReduce组件
  12. JavaCV音视频开发宝典:vb8和vp9编码的webm格式视频文件转成mp4文件
  13. 你以为程序员就是敲代码吗?
  14. 浅谈对JIT编译器的理解。
  15. vue附件上传和展示
  16. js实现盒子水平垂直居中
  17. Android WebView 安全漏洞
  18. bt服务器搭建 linux_用树莓派搭建BT下载服务器
  19. 【NOI2015模拟YYT】传送
  20. 光纤宽带接入工程设计降本增效方案集(2)

热门文章

  1. 应用系统适配迁移方案
  2. matlab朦胧的去雾、加雾算法
  3. Code-NFine:NFine介绍
  4. linux之rename命令
  5. python3安装uwsgi(编译的方式)
  6. 如何理解《信号与系统》?
  7. 数据结构——二叉链表创建二叉树(C语言版)
  8. java框架常见面试题_java框架面试题总结
  9. 聊一聊数学中的基本定理(四)——微积分基本定理
  10. 小程序毕设作品之微信小程序点餐系统毕业设计(6)开题答辩PPT