CN113742815A - 一种ifc子模型融合方法 - Google Patents

一种ifc子模型融合方法 Download PDF

Info

Publication number
CN113742815A
CN113742815A CN202110882734.7A CN202110882734A CN113742815A CN 113742815 A CN113742815 A CN 113742815A CN 202110882734 A CN202110882734 A CN 202110882734A CN 113742815 A CN113742815 A CN 113742815A
Authority
CN
China
Prior art keywords
ifc
instance
entity
submodel
returning
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110882734.7A
Other languages
English (en)
Other versions
CN113742815B (zh
Inventor
余芳强
张铭
许璟琳
彭阳
高尚
仇春华
黄轶
高丙博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Construction No 4 Group Co Ltd
Original Assignee
Shanghai Construction No 4 Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Construction No 4 Group Co Ltd filed Critical Shanghai Construction No 4 Group Co Ltd
Priority to CN202110882734.7A priority Critical patent/CN113742815B/zh
Priority claimed from CN202110882734.7A external-priority patent/CN113742815B/zh
Publication of CN113742815A publication Critical patent/CN113742815A/zh
Application granted granted Critical
Publication of CN113742815B publication Critical patent/CN113742815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/13Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Civil Engineering (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Architecture (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Structural Engineering (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种IFC子模型融合方法,该方法包括以下步骤:步骤1、从IFC完整模型Mc中提取IFC子模型,并提取IFC子模型的实例列表L0;步骤2、读取需要融合的IFC子模型M1,建立IFC实例列表L1;步骤3、根据MVD计算需要融合的IFC实例列表L2;步骤4、分析IFC子模型M1中所有IFC实例的修改状态;步骤5、修正IFC子模型M2中修改状态的基本实体的IFC实例的反向属性和关系实例的次要实体属性;步骤6、将修正后的IFC子模型M2存入IFC完整模型Mc中。通过本发明的方法支持将不同建设过程中创建、更新的IFC子模型融合成IFC完整模型,实现信息的融合,维护模型完整性,解决已有方法不能处理删除实例以及IFC关系实体的次要实体属性和IFC基本实体的反向属性信息不完整的问题。

Description

一种IFC子模型融合方法
技术领域
本发明涉及建筑信息领域,具体涉及一种IFC子模型融合方法。
背景技术
IFC(Industry foundation Classes)标准是对建筑信息模型(BIM)的开放式、标准化数据存储格式,BIM建模软件创建的模型均可导出为IFC格式文件进行存储。IFC标准包含了各种类型的IFC实体ci,IFC标准以各种类型的IFC实体的实例存储各个建筑构件及其关系。每个IFC实体有很多属性,用于存储建筑的信息。一个IFC完整模型可以由一个IFC实体的实例列表表示Lc={ek,{okj}},okj是实体ek的实例。
如图1所示,IFC实体可分为可独立交换实体和非独立交换实体(又称资源实体)。可独立交换实体,包括全局唯一标识Global ID,可被单独检索、提取和共享;非独立交换实体只有临时ID,不可被独立提取,不能在不同软件之间交换共享。
可独立交换实体又分为基本实体和关系实体。基本实体又分为主体实体、属性集实体、类型实体和项目实体。
主体实体又分为产品实体、过程实体、生产资料实体、组织实体、控制实体以及分组实体,构成IFC模型主要组成部分。其中产品实体用于描述建筑中物理构件,譬如梁、柱、墙等,包括几何属性和非几何属性。过程实体用于描述物理构件的设计、施工或安装的过程。生产资料实体用于描述物理构件或施工过程使用的人材机等生产资料,组织实体用于描述物理构件或施工过程的相关组织或人员,控制实体用于描述物理构件或施工过程的成本等外部约束,分组实体用于描述描述物理构件或施工过程的分区和组合等信息。
类型实体用于定义同类型主体实体实例的共性特征,是对产品、过程和生产资料实体的信息的必要补充描述。属性集实体用于扩展描述主体实体的相关属性。项目实体是一个特殊的实体,每个IFC模型只有一个项目实体,定义模型的项目名称、地址等基础信息。
关系实体用于描述两个或多个基本实体之间的关系,基本实体之间一般不通过直接的相互引用建立关系。关系实体分为关联关系、聚合关系、定义关系、分配关系和外部关联关系五种。如图2所示,IFC的关系实体均为1:n型关系,即描述实体实例A与实体实例集合Bs之间的关系。为方便描述,关系实体中定义A的属性为主要实体属性pa,定义Bs的属性为次要实体属性pb。如图2所示,只有基本实体有反向属性,基本实体的反向属性的值是关系实体,用于查询与基本实体实例相关的关系实体实例,从而进一步查询与基本实体实例相关的其他基本实体实例。
IFC子模型指某个IFC模型的一个子集,一般用于某个建设过程,或某个建设过程创建的BIM模型。IFC子模型视图(Model View Definition,简称,MVD)是描述一个IFC子模型的包含的IFC实体的方法。MVD包括一个IFC实体集合V={ci}。例如,建筑专业MVD包括{IfcWindow(窗),IfcDoor(门),IfcWall(墙)}等IFC实体,结构专业MVD包括{Ifccolumn(柱),IfcBeam(梁),IfcSlab(板)}等IFC实体。根据IFC子模型视图可以定义一个IFC子模型,即指某个IFC模型的一个子集。不同过程创建了一个建筑的一个IFC子模型,譬如建筑设计过程创建了建筑子模型,结构过程创建了结构子模型。但为了多专业协调和运维管理等应用,需要将不同过程创建的IFC子模型融合为完整的IFC模型,譬如将建筑子模型和结构子模型融合为IFC整体模型,用于后续的机电专业设计。
同时为了避免重复创建模型,各个过程会从已有的IFC整体模型中提取所需的信息,然后在已有IFC模型基础上通过增加、删除或修改数据形成新的IFC子模型;因此IFC子模型中各个IFC实例的修改状态可能是新增、删除、修改或未变化。正规的IFC模型,每个可独立交换实体的Owner History属性会记录IFC实体的修改状态。但对当前过程中删除的IFC实例,一般在IFC子模型中不存在,目前的IFC模型集成方法中难以处理。
另外,由于由IFC子模型提取时,如果子模型M1中包含关系IFC实例r,则肯定包含其关联的主要实体IFC实例A,但可能只包括次要实体集合Bs的部分IFC实例。因此修改后的IFC子模型M1中修改状态的关系IFC实例r,可能与IFC完整模型Mc中已有但M1中没有的IFC实例存在引用关系,即r的次要实体属性只包括M2中的IFC实例,信息不完备。并且,在提取子模型M1时,其中基本实体实例o的反向属性信息也不完整,存在部分与o关联的关系实体未提取到M1。因此,若直接将M1融入Mc中,会导致Mc中信息错误。目前的IFC模型融合方法未考虑这些问题,实际应用难度大。
发明内容
为了解决上述技术问题,本发明提供了一种IFC子模型融合方法,结合IFC实体语义特点,支持不同过程、不同用户创建的IFC子模型融合为完整的IFC模型,解决数据不一致的问题。
本发明的技术目的是通过以下技术方案实现的:
一种IFC子模型融合方法,该方法包括以下步骤:
步骤1、从IFC完整模型Mc中提取IFC子模型,并提取IFC子模型的实例列表L0,L0={et,{otj}},其中et是IFC实体名称,O={otj}是实体类型为et的IFC实例的集合;
步骤2、读取需要融合的IFC子模型M1,建立IFC实例列表L1,L1={ei,{oij}},同时读入描该过程数据融合需求的MVD,计做V,V={em},V包括所有需要融合数据的IFC实例em
步骤3、遍历V中的所有IFC实体em,从IFC子模型M1的实例类表L1中提取IFC实体为em的元素,并加入实例列表L2中,L2={ei,{oij}};若L1中不包含IFC实体为em的元素,将元素{em,{}}加入到L2,形成需要融入IFC完整模型的IFC子模型M2,M2是M1的子集;
步骤4、分析IFC子模型M1中所有IFC实例的修改状态,遍历L2中的所有元素,将L2中的所有元素逐一与L0中元素比对,判断L2中的元素相比L0中元素是未修改、更新或新增;遍历L0中所有元素,将L0中所有元素逐一与L2中的元素比对,判断L0中的元素相比与L2中的元素是否被删除;
步骤5、修正IFC子模型M2中修改状态的基本实体的IFC实例的反向属性和关系实例的次要实体属性;
步骤6、将修正后的IFC子模型M2存入IFC完整模型Mc中。
进一步地,在步骤4中:
如果L0中存在与L2中元素实体名称不同或者实体名称相同但Global ID不同的元素,则L2中含有该元素的实例修改状态为新增;
如果L0中存在与L2中元素实体名称相同且Global ID相同的元素,则L2中含有该元素的实例修改状态为更新;
如果L0中存在与L2中元素实体名称相同且Global ID相同且实体属性相同的元素,则L2中含有该元素的实例修改状态为未修改;
如果L2中存在与L0中元素实体名称相同但Global ID不同的元素,则L0中含有该元素的实例的修改状态为删除,将L0中标记为删除的实例加入L2中。
进一步地,步骤4包括以下步骤:
4.1、遍历L2中的所有元素(ei,{oij}),在L0中找到IFC实体类型为ei的元素(et,{otj});若存在et=ei,则进入步骤4.2;若找不到IFC实体类型为ei的元素(et,{otj})则进入步骤4.6;遍历L2后进入步骤4.7;
4.2、遍历{oij}中每个IFC实例oij;如果{otj}中所有元素otj与oij的Global ID不一致,则进入步骤4.5:若存在otj与oij的Global ID一致,则进入步骤4.3;遍历完成后,返回步骤4.1;
4.3、分析oij与okj的变更历史Owner History属性是否一致;如果不一致,进入步骤4.4;如果一致,设置oij的状态为未修改;
4.4、设置oij的状态为更新;返回步骤4.2;
4.5、标记oij元素状态为新增;返回步骤4.2;
4.6、标记{oij}中各oij元素状态为新增;返回步骤4.1;
4.7、L2遍历完成后,遍历L0中各个元素(et,{otj}),若在L2找到IFC实体类型为et的元素(ei,{oij}),其中et=ei,进入步骤4.8;若找不到,说明MVD中不包括et,则继续遍历L0直到遍历结束;
4.8、遍历{otj}中每个IFC实例otj;如果{oij}中元素oij与otj的Global ID不一致,则标记otj的状态为删除,并加入到L2的(ei,{oij});反馈步骤4.7。
进一步地,步骤5包括以下步骤:
5.1、遍历L2中各元素(ei,{oij}),如果ei是基本实体,进入步骤5.2;如果ei是关系实体,进入步骤5.6;其他情况,继续遍历L2,直到L2中元素遍历完成后,步骤5流程结束;
5.2、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.3;否则继续遍历{oij},直到遍历结束后,返回步骤5.1;
5.3、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的各个反向属性fi的值Rv={(fi,rij)},rij是关系实体的实例;
5.4、遍历RV中每个IFC实例rij,如果提取的子模型L0中不包括rij,进入步骤5.5;反之,继续遍历Rv,直到遍历完成后,返回步骤5.2;
5.5、在oij的反向属性fi的值中加入rij,返回步骤5.4;
5.6、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.7;否则继续遍历{oij},直到结束后,返回步骤5.1;
5.7、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的次要实体属性包括的IFC实例集Bs={ei},ei是基本实体实例;
5.8、遍历Bs中每个IFC实例ei,如果提取的子模型L0中不包括ei,则进入步骤5.9;反之,继续遍历Bs,直到结束后,返回步骤5.6;
5.9、将ei加入oij的次要实体属性;返回步骤5.8。
进一步地,在步骤6中,将IFC子模型M2的实例列表L2中的实例融入IFC完整模型Mc的实例列表Lc中,形成新的Lc={ek,{okj}}。
进一步地,步骤6包括以下步骤:
6.1、遍历L2中各个元素(ei,{oij}),在Lc中找到ek=ei的元素(ek,{okj}),进入步骤6.2;如果未找到,进入步骤6.6;遍历完L2后,步骤6流程结束;
6.2、遍历{oij}中每个IFC实例oij;如果oij的状态是新增,进入骤6.3;如果oij的状态是更新,进入步骤6.4;如果oij的状态是删除,进入步骤步骤6.5;如是未修改状态,继续步骤6.2,直到{oij}遍历完成,返回步骤6.1
6.3、将oij添加到{okj}中,返回步骤6.2;
6.4、在{okj}中找到Global ID与oij的Global ID相同的实例okj,用oij代替okj;,返回步骤6.2;
6.5、在{okj}中找到Global ID与oij的Global ID相同的实例okj,设置okj的状态为删除,返回步骤6.2;
6.6、将(ei,{oij})加入Lc;返回步骤6.1。
相比现有技术,本发明的有益效果在于,通过本发明的IFC子模型融合方法,支持各参与方将不同建设过程中创建或更新的IFC子模型融合成IFC完整模型,实现新增信息与已有信息的融合,并维护模型完整性,为数字化建造和运维提供数据基础;本方法解决了已有方法不能处理删除实例的问题,以及IFC关系实体的次要实体属性和IFC基本实体的反向属性信息不完整的问题。
附图说明
图1是现有技术中IFC模型的实体分类示意图。
图2是现有技术中关系实体的关系示意图。
图3是本发明的IFC子模型融合方法流程示意图。
图4是本发明中步骤4流程示意图。
图5是本发明中步骤5流程示意图。
图6是本发明中步骤6流程示意图。
具体实施方式
下面结合具体实施方式对本发明的技术方案进行进一步描述:
一种IFC子模型融合方法,如图3所示,该方法包括以下步骤:
1.一种IFC子模型融合方法,其特征在于,该方法包括以下步骤:
步骤1、记录本过程提取的IFC子模型实例列表L0,从IFC完整模型Mc中提取IFC子模型,并提取IFC子模型的实例列表L0,L0={et,{otj}},其中et是IFC实体名称,0={otj}是实体类型为et的IFC实例的集合;
步骤2、读取需要融合的IFC子模型M1,建立IFC实例列表L1,L1={ei,{oij}},同时读入描该过程数据融合需求的MVD,计做V,V={em},V包括所有需要融合数据的IFC实例em
步骤3、根据MVD计算需要融合的IFC实例列表L2,遍历V中的所有IFC实体em,从IFC子模型M1的实例类表L1中提取IFC实体为em的元素,并加入实例列表L2中,L2={ei,{oij}};若L1中不包含IFC实体为em的元素,将元素{em,{}}加入到L2,形成需要融入IFC完整模型的IFC子模型M2,M2是M1的子集;
步骤4、分析IFC子模型M1中所有IFC实例的修改状态,遍历L2中的所有元素,将L2中的所有元素逐一与L0中元素比对,判断L2中的元素相比L0中元素是未修改、更新或新增;遍历L0中所有元素,将L0中所有元素逐一与L2中的元素比对,判断L0中的元素相比与L2中的元素是否被删除。
如果L0中存在与L2中元素实体名称不同或者实体名称相同但Global ID不同的元素,则L2中含有该元素的实例修改状态为新增;
如果L0中存在与L2中元素实体名称相同且Global ID相同的元素,则L2中含有该元素的实例修改状态为更新;
如果L0中存在与L2中元素实体名称相同且Global ID相同且实体属性相同的元素,则L2中含有该元素的实例修改状态为未修改;
如果L2中存在与L0中元素实体名称相同但Global ID不同的元素,则L0中含有该元素的实例的修改状态为删除,将L0中标记为删除的实例加入L2中。
具体地,如图4所示,步骤4包括以下步骤:
4.1、遍历L2中的所有元素(ei,{oij}),在L0中找到IFC实体类型为ei的元素(et,{otj});若存在et=ei,则进入步骤4.2;若找不到IFC实体类型为ei的元素(et,{otj})则进入步骤4.6;遍历L2后进入步骤4.7;
4.2、遍历{oij}中每个IFC实例oij;如果{otj}中所有元素otj与oij的Global ID不一致,则进入步骤4.5:若存在otj与oij的Global ID一致,则进入步骤4.3;遍历完成后,返回步骤4.1;
4.3、分析oij与okj的变更历史Owner History属性是否一致;如果不一致,进入步骤4.4;如果一致,设置oij的状态为未修改;
4.4、设置oij的状态为更新;返回步骤4.2;
4.5、标记oij元素状态为新增;返回步骤4.2;
4.6、标记{oij}中各oij元素状态为新增;返回步骤4.1;
4.7、L2遍历完成后,遍历L0中各个元素(et,{otj}),若在L2找到IFC实体类型为et的元素(ei,{oij}),其中et=ei,进入步骤4.8;若找不到,说明MVD中不包括et,则继续遍历L0直到遍历结束;
4.8、遍历{otj}中每个IFC实例otj;如果{oij}中元素oij与otj的Global ID不一致,则标记otj的状态为删除,并加入到L2的(ei,{oij});反馈步骤4.7。
步骤5、根据完整IFC模型修正L2中IFC实例信息,具体的为修正IFC子模型M2中修改状态的基本实体的IFC实例的反向属性和关系实例的次要实体属性;如图5所示,具体包括以下步骤:
5.1、遍历L2中各元素(ei,{oij}),如果ei是基本实体,进入步骤5.2;如果ei是关系实体,进入步骤5.6;其他情况,继续遍历L2,直到L2中元素遍历完成后,步骤5流程结束;
5.2、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.3;否则继续遍历{oij},直到遍历结束后,返回步骤5.1;
5.3、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的各个反向属性fi的值Rv={(fi,rij)},rij是关系实体的实例;
5.4、遍历RV中每个IFC实例rij,如果提取的子模型L0中不包括rij,进入步骤5.5;反之,继续遍历Rv,直到遍历完成后,返回步骤5.2;
5.5、在oij的反向属性fi的值中加入rij,返回步骤5.4;
5.6、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.7;否则继续遍历{oij},直到结束后,返回步骤5.1;
5.7、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的次要实体属性包括的IFC实例集Bs={ei},ei是基本实体实例;
5.8、遍历Bs中每个IFC实例ei,如果提取的子模型L0中不包括ei,则进入步骤5.9;反之,继续遍历Bs,直到结束后,返回步骤5.6;
5.9、将ei加入oij的次要实体属性;返回步骤5.8。
步骤6、将修正后的IFC子模型M2存入IFC完整模型Mc中,也即将IFC子模型M2的实例列表L2中的实例融入IFC完整模型Mc的实例列表Lc中,形成新的Lc={ek,{okj}},如图6所示,具体包括以下步骤:
6.1、遍历L2中各个元素(ei,{oij}),在Lc中找到ek=ei的元素(ek,{okj}),进入步骤6.2;如果未找到,进入步骤6.6;遍历完L2后,步骤6流程结束;
6.2、遍历{oij}中每个IFC实例oij;如果oij的状态是新增,进入骤6.3;如果oij的状态是更新,进入步骤6.4;如果oij的状态是删除,进入步骤步骤6.5;如是未修改状态,继续步骤6.2,直到{oij}遍历完成,返回步骤6.1
6.3、将oij添加到{okj}中,返回步骤6.2;
6.4、在{okj}中找到Global ID与oij的Global ID相同的实例okj,用oij代替okj;,返回步骤6.2;
6.5、在{okj}中找到Global ID与oij的Global ID相同的实例okj,设置okj的状态为删除,返回步骤6.2;
6.6、将(ei,{oij})加入Lc;返回步骤6.1。
下面以施工BIM应用过程进行说明:
步骤1、在每个修改模型的过程之前,从IFC完整模型中提取所需的IFC子模型M0,包括IFC实例列表L0={et,{otj}},其中et是IFC实体名称,O={otj}是实体类型为et的IFC实例的集合。提取的IFC子模型包括21个IfcTask实例、374个IfcProduc及其子实体的实例、42个IfcTask实例以及关联关系IfcRelationship及其子实体的实例;其中IfcTask实例包括“罗盘箱风管”、“电缆桥架”、“消火栓箱安装”等。对应的MVD包括{IfcTask,IfcDuctSegment,IfcRelAggregates,IfcRelSequence,IfcRelAssignsToTask}等,提取的实例列表L0如以下实例:
{(IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱)}),
(IfcDuctSegment,{IfcDuctSegment1#(吊顶电缆桥架),IfcDuctSegment2#(地面线槽)}),
(IfcRelAggregates,{IfcRelAggregates56#,IfcRelAggregates7#}),
(IfcRelAssignsToTask,{IfcRelAssignsToTask34#,IfcRelAssignsToTask7#,}),
(IfcRelSequence,{IfcRelSequence7#,IfcRelSequence8#})}
步骤2、读入需要融合的IFC子模型M1,建立IFC实例列表L1={ei,{oij}};同时读入描述该过程数据融合需求的MVD,V={em},V包括L1所有需要融合数据的IFC实例em;具体修改内容如下表所示:
Figure BDA0003192650610000101
Figure BDA0003192650610000111
Figure BDA0003192650610000121
步骤3、遍历V中各个IFC实体em,从IFC子模型M1的实例列表L1中提取IFC实体为em的元素(em,{omj}),加入实例列表L2={ei,{oij}};若L1中不包含IFC实体为em的元素,将元素(em,{})加入到L2,形成需要融入IFC完整模型的IFC子模型M2,M2是M1的子集。假设融合的MVD={IfcTask,IfcRelAggregates,IfcRelSequence,IfcRelAssignsToTask},不包括IfcDuctSegment实体,则L2
{(IfcTask,{IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#,IfcTask12#,IfcTask34#,IfcTask56#})
(IfcRelAggregates,{IfcRelAggregates1#,IfcRelAggregates3#,IfcRelAggregates7#,IfcRelAggregates56#}),
(IfcRelAssignsToTask,{IfcRelAssignsToTask3#,IfcRelAssignsToTask4#,IfcRelAssignsToTask34#})}
步骤4、分析IFC子模型M1中所有IFC实例的修改状态,包括新增、更新、删除和未修改四类,具体包括以下步骤:
步骤4.1:遍历L2中各元素(ei,{oij}),在L0中找到其中IFC实体类型为ei的元素(et,{otj}),即et=ei,进入步骤4.2;如果找不到(et,{otj}),进入步骤4.6;遍历L2结束后进入步骤4.7;
以ei=IfcTask为例,{oij}={IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#,IfcTask12#,IfcTask34#,IfcTask56#};
步骤4.2:遍历{oij}中每个IFC实例oij;如果{otj}不包含元素otj与oij的GlobalID一致,则进入步骤4.6:否则进入步骤4.3;遍历完成后,返回步骤4.1;
以IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#为例,L0的{otj}中不含与其GlobalID一致的实例,进入步骤4.6,设置为新增状态;以IfcTask12#,IfcTask34#,IfcTask56#为例,L0的{otj}中含与其GlobalID一致的实例,进入步骤4.3;
步骤4.3:如果{otj}包含元素otj与oij的GlobalID一致,则进一步分析oij与okj的变更历史Owner History属性是否一致;如果不一致,进入步骤4.4;如果一致,进入步骤4.5;
如表2所示,IfcTask12#,IfcTask34#,IfcTask56#均修改了,进入步骤4.4,状态设置为更新;
步骤4.4:设置oij的状态为更新;返回步骤4.2;
步骤4.5:设置oij的状态为未修改;返回步骤4.2;
步骤4.6:则标记{oij}或oij元素状态为新增;返回步骤4.2;
步骤4.7:遍历L0中各个元素(et,{otj}),在L2中找到IFC实体类型为et的元素(ei,{oij}),其中et=ei,进入步骤4.8;若找不到(ei,{oij}),则继续遍历L0,直到遍历结束,结束步骤4;
以et=IfcTask为例,{otj}={{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱)},进入步骤4.8;
步骤4.8:遍历{otj}中每个IFC实例otj;如果{oij}不包含元素oij与otj的GlobalID一致,则标记otj的状态为删除,并加入到L2的{oij};反馈步骤4.7。
以otj=IfcTask7#(消火栓箱)为例,{oij}不包含元素oij与otj的GlobalID一致,则标记otj的状态为删除,并加入到L2的{oij};L2
{(IfcTask,{IfcTask 1#(新增),IfcTask 2#(新增),IfcTask3#(新增),IfcTask4#(新增),IfcTask 5#(新增),IfcTask12#(更新),IfcTask34#(更新),IfcTask56#(更新),IfcTask7#(删除)})
(IfcRelAggregates,{IfcRelAggregates1#(新增),IfcRelAggregates3#(新增),IfcRelAggregates56#(更新),IfcRelAggregates7#(更新)}),
(IfcRelAssignsToTask,{IfcRelAssignsToTask3#(新增),IfcRelAssignsToTask4#(新增),IfcRelAssignsToTask34#(更新),IfcRelAssignsToTask7#(删除)}),
(IfcRelSequence,{IfcRelSequence7#(删除),IfcRelSequence8#(删除)})}
步骤5、修正IFC子模型M2中修改状态的基本实体IFC实例的反向属性和关系实例的次要实体属性,避免融合过程中造成已有信息的遗失,具体包括以下步骤:
步骤5.1:遍历L2中各元素(ei,{oij}),如果ei是基本实体,进入步骤5.2;如果ei是关系实体,进入步骤5.6;其他情况,继续遍历L2,直到L2中元素遍历完成后,步骤5流程结束;
若ei=IfcTask,为基本实体,进入步骤5.2;若ei=IfcRelAggregates,为关系实体,则进入步骤5.6;
步骤5.2:遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.3;否则继续遍历{oij},直到结束后,返回步骤5.1;
以ei=IfcTask为例,{oij}={IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#,IfcTask12#,IfcTask34#,IfcTask56#};对于新建状态的IfcTask 1#,IfcTask2#,IfcTask 3#,IfcTask 4#,IfcTask5#实体,原来的IFC完整模型中实体与这些实体无引用关系,不用处理;对于删除状态的IfcTask7#,所有信息将被忽略,也无需修复;对于对于更新状态的IfcTask12#,IfcTask34#,IfcTask56#,原来的IFC完整模型中可能存在L0中未提取的关系实体与其关联,需要修复IfcTask12#,IfcTask34#,IfcTask56#的反向属性;
步骤5.3:从IFC完整模型Mc中提取GlobalId等于IFC实例oij的GlobalId的IFC实例ocij,记录ocij的各个反向属性fi的值Rv={(fi,rij)},rij是关系实体的实例;
以IfcTask12#实例为例,IFC完整模型中的IfcTask12#的反向属性的值Rv包括{(HasAssignments,IfcRelAssignToControl3#),HasAssignments,IfcRelAssignToAcotr3#),(Nests,IfcRelNests1#)};
步骤5.4:遍历RV中每个IFC实例rij,如果提取的子模型L0中不包括rij,进入步骤5.5;反之,继续遍历Rv,直到遍历完成后,返回步骤5.2;
以IfcTask12#实例为例,提取的子模型L0中不包括IfcRelAssignToControl3#,IfcRelAssignToAcotr3#,IfcRelNests1#,进入步骤5.5;
步骤5.5:则在oij的反向属性fi的值中加入rij,返回步骤5.4;
以IfcTask12#实例为例,将IfcRelAssignToControl3#,IfcRelAssignToAcotr3#添加到IfcTask12#实例的反向属性HasAssignments,将IfcRelNests1#添加到反向属性Nests
步骤5.6:遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.7;否则继续遍历{oij},直到结束后,返回步骤5.1;
以ei=IfcRelAssignsToTask为例,{oij}={IfcRelAssignsToTask3#,IfcRelAssignsToTask4#,IfcRelAssignsToTask34#,IfcRelAssignsToTask7#};其中IfcRelAssignsToTask3#,IfcRelAssignsToTask4#是新增关系实体,必然不会关联M1中不存在的实例;IfcRelAssignsToTask7#是删除状态的实体,相关信息后续将忽略,无需修正;对于更新状态的IfcRelAssignsToTask34#,可能关联了提取的子模型M0未提取的实例,譬如IfcSlab1#实例等,需要修正IfcRelAssignsToTask34#的次要实体属性;
步骤5.7:从IFC完整模型Mc中提取GlobalId等于IFC实例oij的GlobalId的IFC实例ocij,记录ocij的次要实体属性包括的IFC实例集Bs={ei},ei是基本实体实例;
以ei=IfcRelAssignsToTask34#为例,从Mc中找到原来的IfcRelAssignsToTask34#,记录其次要实体属性Bs={IfcDuctSegment1#,IfcDuctSegment2#,IfcSlab1#}
步骤5.8:遍历Bs中每个IFC实例ei,如果提取的子模型L0中不包括ei,则进入步骤5.9;反之,继续遍历Bs,直到结束后,返回步骤5.6;
以ei=IfcRelAssignsToTask34#,Bs={IfcDuctSegment1#,IfcDuctSegment2#,IfcSlab1#}
为例,L0包含IfcDuctSegment1#,IfcDuctSegment2#,不做修正;L0不包含IfcSlab1#,需要修正,进入步骤5.9;
步骤5.9:将ei加入oij的次要实体属性;返回步骤5.8;
以ei=IfcRelAssignsToTask34#,IfcSlab1#为例,将IfcSlab1#加入到IfcRelAssignsToTask34#的次要实体属性,完成对IfcRelAssignsToTask34#的修正;返回步骤5.8。
步骤6、步骤6:将本阶段修改的IFC子模型M2存入IFC完整模型Mc
需根据IFC实例的状态,将M2的实例列表L2={ei,{oij}}中实例,融入IFC完整模型Mc的实例列表Lc中,形成新的Lc={ei,{oij}};具体包括以下步骤:
步骤6.1:遍历L2中各个元素(ei,{oij}),在Lc中找到ek=ei的元素(ek,{okj}),进入步骤6.2;如果未找到,进入步骤6.6;遍历完L2后,步骤6流程结束;
遍历到ei=IfcTask,L2中{oij}={IfcTask 1#(新增),IfcTask 2#(新增),IfcTask 3#(新增),IfcTask 4#(新增),IfcTask 5#(新增),IfcTask12#(更新),IfcTask34#(更新),IfcTask56#(更新),IfcTask7#(删除)}};在Lc中找到{okj}=(IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱)});
步骤6.2:遍历{oij}中每个IFC实例oij;如果oij的状态是新增,进入骤6.3;如果oij的状态是更新,进入步骤6.4;如果oij的状态是删除,进入步骤步骤6.5;如是未修改状态,继续步骤6.2,直到{oij}遍历完成,返回步骤6.1;
遍历{oij}中每个IFC实例oij;对于IfcTask 1#、IfcTask2#、IfcTask3#、IfcTask4#、IfcTask5#等新增实例,进入步骤6.3;对于删除状态的IfcTask7#,进入步骤6.5;对于更新状态的IfcTask12#,IfcTask34#,IfcTask56#更新状态实例,进入步骤6.4;
步骤6.3:将oij添加到{okj}中,返回步骤6.2;以ei=IfcTask,{okj}={IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱),IfcTask 1#(左侧罗盘箱风管)、IfcTask2#(右侧罗盘箱风管)、IfcTask 3#(地下线槽)、IfcTask4#(吊顶电缆桥架)、IfcTask5#(配电柜安装)}
步骤6.4:在{okj}中找到与oij的GlobalId相同的IFC实例okj,用oij代替okj;,返回步骤6.2;
以IfcTask56#(配电柜),替换后,变为IfcTask56#(配电柜及其线路安装),{okj}={IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱),IfcTask1#(左侧罗盘箱风管)、IfcTask2#(右侧罗盘箱风管)、IfcTask 3#(地下线槽)、IfcTask 4#(吊顶电缆桥架)、IfcTask5#(配电柜及其线路安装)};
步骤6.5:在{okj}中找到与oij的GlobalId相同的IFC实例okj,设置okj的状态为删除,返回步骤6.2。以ei=IfcTask为例,IfcTask7#(消火栓箱)的状态改为删除;常规应用中,{okj}={IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask 1#(左侧罗盘箱风管)、IfcTask2#(右侧罗盘箱风管)、IfcTask 3#(地下线槽)、IfcTask 4#(吊顶电缆桥架)、IfcTask5#(配电柜及其线路安装)},删除状态的实例不显示;
步骤6.6:将(ei,{oij})加入Lc;返回步骤6.1。
本实施例只是对本发明的进一步解释,并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性的修改,但是只要在本发明的权利要求范围内都受到专利法的保护。

Claims (6)

1.一种IFC子模型融合方法,其特征在于,该方法包括以下步骤:
步骤1、从IFC完整模型Mc中提取IFC子模型,并提取IFC子模型的实例列表L0,L0={et,{otj}},其中et是IFC实体名称,O={otj}是实体类型为et的IFC实例的集合;
步骤2、读取需要融合的IFC子模型M1,建立IFC实例列表L1,L1={ei,{oij}},同时读入描该过程数据融合需求的MVD,计做V,V={em},V包括所有需要融合数据的IFC实例em
步骤3、遍历V中的所有IFC实体em,从IFC子模型M1的实例类表L1中提取IFC实体为em的元素,并加入实例列表L2中,L2={ei,{oij}};若L1中不包含IFC实体为em的元素,将元素{em,{}}加入到L2,形成需要融入IFC完整模型的IFC子模型M2,M2是M1的子集;
步骤4、分析IFC子模型M1中所有IFC实例的修改状态,遍历L2中的所有元素,将L2中的所有元素逐一与L0中元素比对,判断L2中的元素相比L0中元素是未修改、更新或新增;遍历L0中所有元素,将L0中所有元素逐一与L2中的元素比对,判断L0中的元素相比与L2中的元素是否被删除;
步骤5、修正IFC子模型M2中修改状态的基本实体的IFC实例的反向属性和关系实例的次要实体属性;
步骤6、将修正后的IFC子模型M2存入IFC完整模型Mc中。
2.根据权利要求1所述的一种IFC子模型融合方法,其特征在于,所述步骤4中,
如果L0中存在与L2中元素实体名称不同或者实体名称相同但Global ID不同的元素,则L2中含有该元素的实例修改状态为新增;
如果L0中存在与L2中元素实体名称相同且Global ID相同的元素,则L2中含有该元素的实例修改状态为更新;
如果L0中存在与L2中元素实体名称相同且Global ID相同且实体属性相同的元素,则L2中含有该元素的实例修改状态为未修改;
如果L2中存在与L0中元素实体名称相同但Global ID不同的元素,则L0中含有该元素的实例的修改状态为删除,将L0中标记为删除的实例加入L2中。
3.根据权利要求2所述的一种IFC子模型融合方法,其特征在于,所述步骤4包括以下步骤:
4.1、遍历L2中的所有元素(ei,{oij}),在L0中找到IFC实体类型为ei的元素(et,{otj});若存在et=ei,则进入步骤4.2;若找不到IFC实体类型为ei的元素(et,{otj})则进入步骤4.6;遍历L2后进入步骤4.7;
4.2、遍历{oij}中每个IFC实例oij;如果{otj}中所有元素otj与oij的Global ID不一致,则进入步骤4.5:若存在otj与oij的Global ID一致,则进入步骤4.3;遍历完成后,返回步骤4.1;
4.3、分析oij与okj的变更历史Owner History属性是否一致;如果不一致,进入步骤4.4;如果一致,设置oij的状态为未修改;
4.4、设置oij的状态为更新;返回步骤4.2;
4.5、标记oij元素状态为新增;返回步骤4.2;
4.6、标记{oij}中各oij元素状态为新增;返回步骤4.1;
4.7、L2遍历完成后,遍历L0中各个元素(et,{otj}),若在L2找到IFC实体类型为et的元素(ei,{oij}),其中et=ei,进入步骤4.8;若找不到,则继续遍历L0直到遍历结束;
4.8、遍历{otj}中每个IFC实例otj;如果{oij}中元素oij与otj的Global ID不一致,则标记otj的状态为删除,并加入到L2的(ei,{oij});反馈步骤4.7。
4.根据权利要求1所述的一种IFC子模型融合方法,其特征在于,所述步骤5包括以下步骤:
5.1、遍历L2中各元素(ei,{oij}),如果ei是基本实体,进入步骤5.2;如果ei是关系实体,进入步骤5.6;其他情况,继续遍历L2,直到L2中元素遍历完成后,步骤5流程结束;
5.2、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.3;否则继续遍历{oij},直到遍历结束后,返回步骤5.1;
5.3、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的各个反向属性fi的值Rv={(fi,rij)},rij是关系实体的实例;
5.4、遍历RV中每个IFC实例rij,如果提取的子模型L0中不包括rij,进入步骤5.5;反之,继续遍历Rv,直到遍历完成后,返回步骤5.2;
5.5、在oij的反向属性fi的值中加入rij,返回步骤5.4;
5.6、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.7;否则继续遍历{oij},直到结束后,返回步骤5.1;
5.7、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的次要实体属性包括的IFC实例集Bs={ei},ei是基本实体实例;
5.8、遍历Bs中每个IFC实例ei,如果提取的子模型L0中不包括ei,则进入步骤5.9;反之,继续遍历Bs,直到结束后,返回步骤5.6;
5.9、将ei加入oij的次要实体属性;返回步骤5.8。
5.根据权利要求1所述的一种IFC子模型融合方法,其特征在于,所述步骤6中,将IFC子模型M2的实例列表L2中的实例融入IFC完整模型Mc的实例列表Lc中,形成新的Lc={ek,{okj}}。
6.根据权利要求5所述的一种IFC子模型融合方法,其特征在于,所述步骤6包括以下步骤:
6.1、遍历L2中各个元素(ei,{oij}),在Lc中找到ek=ei的元素(ek,{okj}),进入步骤6.2;如果未找到,进入步骤6.6;遍历完L2后,步骤6流程结束;
6.2、遍历{oij}中每个IFC实例oij;如果oij的状态是新增,进入骤6.3;如果oij的状态是更新,进入步骤6.4;如果oij的状态是删除,进入步骤步骤6.5;如是未修改状态,继续步骤6.2,直到{oij} 遍历完成,返回步骤6.1
6.3、将oij添加到{okj}中,返回步骤6.2;
6.4、在{okj}中找到Global ID与oij的Global ID相同的实例okj,用oij代替okj;,返回步骤6.2;
6.5、在{okj}中找到Global ID与oij的Global ID相同的实例okj,设置okj的状态为删除,返回步骤6.2;
6.6、将(ei,{oij})加入Lc;返回步骤6.1。
CN202110882734.7A 2021-08-02 一种ifc子模型融合方法 Active CN113742815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110882734.7A CN113742815B (zh) 2021-08-02 一种ifc子模型融合方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110882734.7A CN113742815B (zh) 2021-08-02 一种ifc子模型融合方法

Publications (2)

Publication Number Publication Date
CN113742815A true CN113742815A (zh) 2021-12-03
CN113742815B CN113742815B (zh) 2024-06-04

Family

ID=

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140094053A (ko) * 2013-01-15 2014-07-30 주식회사 석영시스템즈 Ifc 기반 bim 모델 버전 관리 방법
CN104794327A (zh) * 2015-05-06 2015-07-22 西安科技大学 基于决策融合的多模型矿井顶板安全预警模型
CN108108580A (zh) * 2018-02-06 2018-06-01 上海建工四建集团有限公司 一种机电系统逻辑关系的生成方法、装置及建筑信息模型
WO2018138290A1 (en) * 2017-01-30 2018-08-02 3D Repo Ltd Method and computer programs for identifying differences between 3-dimensional scenes
CN108595594A (zh) * 2018-04-19 2018-09-28 中航建设集团有限公司 一种基于bim的装配式建筑数据协同管理方法及系统
US20180365891A1 (en) * 2015-06-30 2018-12-20 Mapillary Ab Method in constructing a model of a scenery and device therefor
US20190042641A1 (en) * 2016-02-01 2019-02-07 Global Software Innovation Pty Ltd. Graph-Based Operations on an Entity-Relationship Database
CN112052244A (zh) * 2020-09-08 2020-12-08 浙江省交通规划设计研究院有限公司 建立模型属性的方法、装置、电子设备及存储介质
CN112100195A (zh) * 2020-11-10 2020-12-18 上海建工四建集团有限公司 一种基于语义分类的ifc模型变更检测方法
US20210174031A1 (en) * 2018-11-23 2021-06-10 Tencent Technology (Shenzhen) Company Limited Method and apparatus for generating natural language description information

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140094053A (ko) * 2013-01-15 2014-07-30 주식회사 석영시스템즈 Ifc 기반 bim 모델 버전 관리 방법
CN104794327A (zh) * 2015-05-06 2015-07-22 西安科技大学 基于决策融合的多模型矿井顶板安全预警模型
US20180365891A1 (en) * 2015-06-30 2018-12-20 Mapillary Ab Method in constructing a model of a scenery and device therefor
US20190042641A1 (en) * 2016-02-01 2019-02-07 Global Software Innovation Pty Ltd. Graph-Based Operations on an Entity-Relationship Database
WO2018138290A1 (en) * 2017-01-30 2018-08-02 3D Repo Ltd Method and computer programs for identifying differences between 3-dimensional scenes
CN108108580A (zh) * 2018-02-06 2018-06-01 上海建工四建集团有限公司 一种机电系统逻辑关系的生成方法、装置及建筑信息模型
CN108595594A (zh) * 2018-04-19 2018-09-28 中航建设集团有限公司 一种基于bim的装配式建筑数据协同管理方法及系统
US20210174031A1 (en) * 2018-11-23 2021-06-10 Tencent Technology (Shenzhen) Company Limited Method and apparatus for generating natural language description information
CN112052244A (zh) * 2020-09-08 2020-12-08 浙江省交通规划设计研究院有限公司 建立模型属性的方法、装置、电子设备及存储介质
CN112100195A (zh) * 2020-11-10 2020-12-18 上海建工四建集团有限公司 一种基于语义分类的ifc模型变更检测方法

Similar Documents

Publication Publication Date Title
US20230274045A1 (en) Building information modeling (bim)-based intelligent drafting method for prefabricated buildings
US11250209B2 (en) Document collaboration and consolidation tools and methods of use
CN109214068B (zh) 基于bim的底层装配式建筑信息提取方法
JP2571660B2 (ja) データ処理システム内で分散異種データを操作するための方法およびシステム
JP5231946B2 (ja) 製造情報管理方法及び製造情報管理システム
US8578262B2 (en) Cad-interfaced, automated system for assisting the architectural process
CN101477549B (zh) 知识库支持下的空间数据库设计系统和方法
JPH04289920A (ja) 技術変更により影響を受けるバージョン化データオブジェクトの制御を実行する方法
CN114140083A (zh) 一种基于建筑信息模型的通用数据环境应用系统
KR20110098802A (ko) 시스템의 모델을 변환하는 방법, 컴퓨터 프로그램 및 시스템 모델 변환 장치
CN105574667A (zh) 核电设计数据集成方法及系统
Thabet et al. Linking life cycle BIM data to a facility management system using Revit Dynamo
CN109740241B (zh) 一种基于bim模型与构件扩展信息映射的方法及应用
EP3425571A1 (de) Digitales gebäudeinformationssystem
CN106779620A (zh) 基于ipd体系的数字化设计平台建设方法
CN108614891A (zh) 航天产品数据包构建与一致性校验方法
CN102097015A (zh) 一种作业指导书处理系统及方法
CN115391610A (zh) 一种bim模型的结构树重构方法
CN113742815A (zh) 一种ifc子模型融合方法
CN112001047B (zh) 一种基于pmi信息的雷达关键零部件工艺设计方法
CN113742815B (zh) 一种ifc子模型融合方法
WO2008023655A1 (en) Production system creating system and production system creating method
TW200419388A (en) System and method for automatically comparing and recoding difference between bills of material (BOM)
CN110176076B (zh) 一种对基于ifc格式的bim模型进行空间操作的方法
CN116821223A (zh) 基于数字孪生的工业可视化控制平台及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant