首页 / 一种IFC子模型融合方法

一种IFC子模型融合方法有效专利 发明

技术领域

[0001] 本发明涉及建筑信息领域,具体涉及一种IFC子模型融合方法。

相关背景技术

[0002] IFC(Industry foundation Classes)标准是对建筑信息模型(BIM)的开放式、标准化数据存储格式,BIM建模软件创建的模型均可导出为IFC格式文件进行存储。IFC标准包含了各种类型的IFC实体ci,IFC标准以各种类型的IFC实体的实例存储各个建筑构件及其关系。每个IFC实体有很多属性,用于存储建筑的信息。一个IFC完整模型可以由一个IFC实体的实例列表表示Lc={ek,{okj}},okj是实体ek的实例。
[0003] 如图1所示,IFC实体可分为可独立交换实体和非独立交换实体(又称资源实体)。可独立交换实体,包括全局唯一标识Global ID,可被单独检索、提取和共享;非独立交换实体只有临时ID,不可被独立提取,不能在不同软件之间交换共享。
[0004] 可独立交换实体又分为基本实体和关系实体。基本实体又分为主体实体、属性集实体、类型实体和项目实体。
[0005] 主体实体又分为产品实体、过程实体、生产资料实体、组织实体、控制实体以及分组实体,构成IFC模型主要组成部分。其中产品实体用于描述建筑中物理构件,譬如梁、柱、墙等,包括几何属性和非几何属性。过程实体用于描述物理构件的设计、施工或安装的过程。生产资料实体用于描述物理构件或施工过程使用的人材机等生产资料,组织实体用于描述物理构件或施工过程的相关组织或人员,控制实体用于描述物理构件或施工过程的成本等外部约束,分组实体用于描述描述物理构件或施工过程的分区和组合等信息。
[0006] 类型实体用于定义同类型主体实体实例的共性特征,是对产品、过程和生产资料实体的信息的必要补充描述。属性集实体用于扩展描述主体实体的相关属性。项目实体是一个特殊的实体,每个IFC模型只有一个项目实体,定义模型的项目名称、地址等基础信息。
[0007] 关系实体用于描述两个或多个基本实体之间的关系,基本实体之间一般不通过直接的相互引用建立关系。关系实体分为关联关系、聚合关系、定义关系、分配关系和外部关联关系五种。如图2所示,IFC的关系实体均为1:n型关系,即描述实体实例A与实体实例集合Bs之间的关系。为方便描述,关系实体中定义A的属性为主要实体属性pa,定义Bs的属性为次要实体属性pb。如图2所示,只有基本实体有反向属性,基本实体的反向属性的值是关系实体,用于查询与基本实体实例相关的关系实体实例,从而进一步查询与基本实体实例相关的其他基本实体实例。
[0008] 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整体模型,用于后续的机电专业设计。
[0009] 同时为了避免重复创建模型,各个过程会从已有的IFC整体模型中提取所需的信息,然后在已有IFC模型基础上通过增加、删除或修改数据形成新的IFC子模型;因此IFC子模型中各个IFC实例的修改状态可能是新增、删除、修改或未变化。正规的IFC模型,每个可独立交换实体的Owner History属性会记录IFC实体的修改状态。但对当前过程中删除的IFC实例,一般在IFC子模型中不存在,目前的IFC模型集成方法中难以处理。
[0010] 另外,由于由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模型融合方法未考虑这些问题,实际应用难度大。

具体实施方式

[0059] 下面结合具体实施方式对本发明的技术方案进行进一步描述:
[0060] 一种IFC子模型融合方法,如图3所示,该方法包括以下步骤:
[0061] 1.一种IFC子模型融合方法,其特征在于,该方法包括以下步骤:
[0062] 步骤1、记录本过程提取的IFC子模型实例列表L0,从IFC完整模型Mc中提取IFC子模型,并提取IFC子模型的实例列表L0,L0={et,{otj}},其中et是IFC实体名称,0={otj}是实体类型为et的IFC实例的集合;
[0063] 步骤2、读取需要融合的IFC子模型M1,建立IFC实例列表L1,L1={ei,{oij}},同时读入描该过程数据融合需求的MVD,计做V,V={em},V包括所有需要融合数据的IFC实例em;
[0064] 步骤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的子集;
[0065] 步骤4、分析IFC子模型M1中所有IFC实例的修改状态,遍历L2中的所有元素,将L2中的所有元素逐一与L0中元素比对,判断L2中的元素相比L0中元素是未修改、更新或新增;遍历L0中所有元素,将L0中所有元素逐一与L2中的元素比对,判断L0中的元素相比与L2中的元素是否被删除。
[0066] 如果L0中存在与L2中元素实体名称不同或者实体名称相同但Global ID不同的元素,则L2中含有该元素的实例修改状态为新增;
[0067] 如果L0中存在与L2中元素实体名称相同且Global ID相同的元素,则L2中含有该元素的实例修改状态为更新;
[0068] 如果L0中存在与L2中元素实体名称相同且Global ID相同且实体属性相同的元素,则L2中含有该元素的实例修改状态为未修改;
[0069] 如果L2中存在与L0中元素实体名称相同但Global ID不同的元素,则L0中含有该元素的实例的修改状态为删除,将L0中标记为删除的实例加入L2中。
[0070] 具体地,如图4所示,步骤4包括以下步骤:
[0071] 4.1、遍历L2中的所有元素(ei,{oij}),在L0中找到IFC实体类型为ei的元素(et,{otj});若存在et=ei,则进入步骤4.2;若找不到IFC实体类型为ei的元素(et,{otj})则进入步骤4.6;遍历L2后进入步骤4.7;
[0072] 4.2、遍历{oij}中每个IFC实例oij;如果{otj}中所有元素otj与oij的Global ID不一致,则进入步骤4.5:若存在otj与oij的Global ID一致,则进入步骤4.3;遍历完成后,返回步骤4.1;
[0073] 4.3、分析oij与okj的变更历史Owner History属性是否一致;如果不一致,进入步骤4.4;如果一致,设置oij的状态为未修改;
[0074] 4.4、设置oij的状态为更新;返回步骤4.2;
[0075] 4.5、标记oij元素状态为新增;返回步骤4.2;
[0076] 4.6、标记{oij}中各oij元素状态为新增;返回步骤4.1;
[0077] 4.7、L2遍历完成后,遍历L0中各个元素(et,{otj}),若在L2找到IFC实体类型为et的元素(ei,{oij}),其中et=ei,进入步骤4.8;若找不到,说明MVD中不包括et,则继续遍历L0直到遍历结束;
[0078] 4.8、遍历{otj}中每个IFC实例otj;如果{oij}中元素oij与otj的Global ID不一致,则标记otj的状态为删除,并加入到L2的(ei,{oij});反馈步骤4.7。
[0079] 步骤5、根据完整IFC模型修正L2中IFC实例信息,具体的为修正IFC子模型M2中修改状态的基本实体的IFC实例的反向属性和关系实例的次要实体属性;如图5所示,具体包括以下步骤:
[0080] 5.1、遍历L2中各元素(ei,{oij}),如果ei是基本实体,进入步骤5.2;如果ei是关系实体,进入步骤5.6;其他情况,继续遍历L2,直到L2中元素遍历完成后,步骤5流程结束;
[0081] 5.2、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.3;否则继续遍历{oij},直到遍历结束后,返回步骤5.1;
[0082] 5.3、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的各个反向属性fi的值Rv={(fi,rij)},rij是关系实体的实例;
[0083] 5.4、遍历RV中每个IFC实例rij,如果提取的子模型L0中不包括rij,进入步骤5.5;反之,继续遍历Rv,直到遍历完成后,返回步骤5.2;
[0084] 5.5、在oij的反向属性fi的值中加入rij,返回步骤5.4;
[0085] 5.6、遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.7;否则继续遍历{oij},直到结束后,返回步骤5.1;
[0086] 5.7、从IFC完整模型Mc中提取Global ID等于IFC实例oij的Global ID的IFC实例ocij,记录ocij的次要实体属性包括的IFC实例集Bs={ei},ei是基本实体实例;
[0087] 5.8、遍历Bs中每个IFC实例ei,如果提取的子模型L0中不包括ei,则进入步骤5.9;反之,继续遍历Bs,直到结束后,返回步骤5.6;
[0088] 5.9、将ei加入oij的次要实体属性;返回步骤5.8。
[0089] 步骤6、将修正后的IFC子模型M2存入IFC完整模型Mc中,也即将IFC子模型M2的实例列表L2中的实例融入IFC完整模型Mc的实例列表Lc中,形成新的Lc={ek,{okj}},如图6所示,具体包括以下步骤:
[0090] 6.1、遍历L2中各个元素(ei,{oij}),在Lc中找到ek=ei的元素(ek,{okj}),进入步骤6.2;如果未找到,进入步骤6.6;遍历完L2后,步骤6流程结束;
[0091] 6.2、遍历{oij}中每个IFC实例oij;如果oij的状态是新增,进入骤6.3;如果oij的状态是更新,进入步骤6.4;如果oij的状态是删除,进入步骤步骤6.5;如是未修改状态,继续步骤6.2,直到{oij}遍历完成,返回步骤6.1
[0092] 6.3、将oij添加到{okj}中,返回步骤6.2;
[0093] 6.4、在{okj}中找到Global ID与oij的Global ID相同的实例okj,用oij代替okj;,返回步骤6.2;
[0094] 6.5、在{okj}中找到Global ID与oij的Global ID相同的实例okj,设置okj的状态为删除,返回步骤6.2;
[0095] 6.6、将(ei,{oij})加入Lc;返回步骤6.1。
[0096] 下面以施工BIM应用过程进行说明:
[0097] 步骤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如以下实例:
[0098] {(IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱)}),
[0099] (IfcDuctSegment,{IfcDuctSegment1#(吊顶电缆桥架),IfcDuctSegment2#(地面线槽)}),
[0100] (IfcRelAggregates,{IfcRelAggregates56#,IfcRelAggregates7#}),[0101] (IfcRelAssignsToTask,{IfcRelAssignsToTask34#,IfcRelAssignsToTask7#,}),
[0102] (IfcRelSequence,{IfcRelSequence7#,IfcRelSequence8#})}
[0103] 步骤2、读入需要融合的IFC子模型M1,建立IFC实例列表L1={ei,{oij}};同时读入描述该过程数据融合需求的MVD,V={em},V包括L1所有需要融合数据的IFC实例em;具体修改内容如下表所示:
[0104]
[0105]
[0106]
[0107] 步骤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=
[0108] {(IfcTask,{IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#,IfcTask12#,IfcTask34#,IfcTask56#})
[0109] (IfcRelAggregates,{IfcRelAggregates1#,IfcRelAggregates3#,IfcRelAggregates7#,IfcRelAggregates56#}),
[0110] (IfcRelAssignsToTask,{IfcRelAssignsToTask3#,IfcRelAssignsToTask4#,IfcRelAssignsToTask34#})}
[0111] 步骤4、分析IFC子模型M1中所有IFC实例的修改状态,包括新增、更新、删除和未修改四类,具体包括以下步骤:
[0112] 步骤4.1:遍历L2中各元素(ei,{oij}),在L0中找到其中IFC实体类型为ei的元素(et,{otj}),即et=ei,进入步骤4.2;如果找不到(et,{otj}),进入步骤4.6;遍历L2结束后进入步骤4.7;
[0113] 以ei=IfcTask为例,{oij}={IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#,IfcTask12#,IfcTask34#,IfcTask56#};
[0114] 步骤4.2:遍历{oij}中每个IFC实例oij;如果{otj}不包含元素otj与oij的GlobalID一致,则进入步骤4.6:否则进入步骤4.3;遍历完成后,返回步骤4.1;
[0115] 以IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#为例,L0的{otj}中不含与其GlobalID一致的实例,进入步骤4.6,设置为新增状态;以IfcTask12#,IfcTask34#,IfcTask56#为例,L0的{otj}中含与其GlobalID一致的实例,进入步骤4.3;
[0116] 步骤4.3:如果{otj}包含元素otj与oij的GlobalID一致,则进一步分析oij与okj的变更历史Owner History属性是否一致;如果不一致,进入步骤4.4;如果一致,进入步骤4.5;
[0117] 如表2所示,IfcTask12#,IfcTask34#,IfcTask56#均修改了,进入步骤4.4,状态设置为更新;
[0118] 步骤4.4:设置oij的状态为更新;返回步骤4.2;
[0119] 步骤4.5:设置oij的状态为未修改;返回步骤4.2;
[0120] 步骤4.6:则标记{oij}或oij元素状态为新增;返回步骤4.2;
[0121] 步骤4.7:遍历L0中各个元素(et,{otj}),在L2中找到IFC实体类型为et的元素(ei,{oij}),其中et=ei,进入步骤4.8;若找不到(ei,{oij}),则继续遍历L0,直到遍历结束,结束步骤4;
[0122] 以et=IfcTask为例,{otj}={{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱)},进入步骤4.8;
[0123] 步骤4.8:遍历{otj}中每个IFC实例otj;如果{oij}不包含元素oij与otj的GlobalID一致,则标记otj的状态为删除,并加入到L2的{oij};反馈步骤4.7。
[0124] 以otj=IfcTask7#(消火栓箱)为例,{oij}不包含元素oij与otj的GlobalID一致,则标记otj的状态为删除,并加入到L2的{oij};L2=
[0125] {(IfcTask,{IfcTask 1#(新增),IfcTask 2#(新增),IfcTask3#(新增),IfcTask 4#(新增),IfcTask 5#(新增),IfcTask12#(更新),IfcTask34#(更新),IfcTask56#(更新),IfcTask7#(删除)})
[0126] (IfcRelAggregates,{IfcRelAggregates1#(新增),IfcRelAggregates3#(新增),IfcRelAggregates56#(更新),IfcRelAggregates7#(更新)}),
[0127] (IfcRelAssignsToTask,{IfcRelAssignsToTask3#(新增),IfcRelAssignsToTask4#(新增),IfcRelAssignsToTask34#(更新),
IfcRelAssignsToTask7#(删除)}),
[0128] (IfcRelSequence,{IfcRelSequence7#(删除),IfcRelSequence8#(删除)})}[0129] 步骤5、修正IFC子模型M2中修改状态的基本实体IFC实例的反向属性和关系实例的次要实体属性,避免融合过程中造成已有信息的遗失,具体包括以下步骤:
[0130] 步骤5.1:遍历L2中各元素(ei,{oij}),如果ei是基本实体,进入步骤5.2;如果ei是关系实体,进入步骤5.6;其他情况,继续遍历L2,直到L2中元素遍历完成后,步骤5流程结束;
[0131] 若ei=IfcTask,为基本实体,进入步骤5.2;若ei=IfcRelAggregates,为关系实体,则进入步骤5.6;
[0132] 步骤5.2:遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.3;否则继续遍历{oij},直到结束后,返回步骤5.1;
[0133] 以ei=IfcTask为例,{oij}={IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask 5#,IfcTask12#,IfcTask34#,IfcTask56#};对于新建状态的IfcTask 1#,IfcTask 2#,IfcTask 3#,IfcTask 4#,IfcTask5#实体,原来的IFC完整模型中实体与这些实体无引用关系,不用处理;对于删除状态的IfcTask7#,所有信息将被忽略,也无需修复;对于对于更新状态的IfcTask12#,IfcTask34#,IfcTask56#,原来的IFC完整模型中可能存在L0中未提取的关系实体与其关联,需要修复IfcTask12#,IfcTask34#,IfcTask56#的反向属性;
[0134] 步骤5.3:从IFC完整模型Mc中提取GlobalId等于IFC实例oij的GlobalId的IFC实例ocij,记录ocij的各个反向属性fi的值Rv={(fi,rij)},rij是关系实体的实例;
[0135] 以IfcTask12#实例为例,IFC完整模型中的IfcTask12#的反向属性的值Rv包括{(HasAssignments,IfcRelAssignToControl3#),HasAssignments,IfcRelAssignToAcotr3#),(Nests,IfcRelNests1#)};
[0136] 步骤5.4:遍历RV中每个IFC实例rij,如果提取的子模型L0中不包括rij,进入步骤5.5;反之,继续遍历Rv,直到遍历完成后,返回步骤5.2;
[0137] 以IfcTask12#实例为例,提取的子模型L0中不包括IfcRelAssignToControl3#,IfcRelAssignToAcotr3#,IfcRelNests1#,进入步骤5.5;
[0138] 步骤5.5:则在oij的反向属性fi的值中加入rij,返回步骤5.4;
[0139] 以IfcTask12#实例为例,将IfcRelAssignToControl3#,IfcRelAssignToAcotr3#添加到IfcTask12#实例的反向属性HasAssignments,将IfcRelNests1#添加到反向属性Nests
[0140] 步骤5.6:遍历{oij}中各个IFC实例oij,如果oij修改状态是更新,进入步骤5.7;否则继续遍历{oij},直到结束后,返回步骤5.1;
[0141] 以ei=IfcRelAssignsToTask为例,{oij}={IfcRelAssignsToTask3#,IfcRelAssignsToTask4#,IfcRelAssignsToTask34#,IfcRelAssignsToTask7#};其中IfcRelAssignsToTask3#,IfcRelAssignsToTask4#是新增关系实体,必然不会关联M1中不存在的实例;IfcRelAssignsToTask7#是删除状态的实体,相关信息后续将忽略,无需修正;对于更新状态的IfcRelAssignsToTask34#,可能关联了提取的子模型M0未提取的实例,譬如IfcSlab1#实例等,需要修正IfcRelAssignsToTask34#的次要实体属性;
[0142] 步骤5.7:从IFC完整模型Mc中提取GlobalId等于IFC实例oij的GlobalId的IFC实例ocij,记录ocij的次要实体属性包括的IFC实例集Bs={ei},ei是基本实体实例;
[0143] 以ei=IfcRelAssignsToTask34#为例,从Mc中找到原来的IfcRelAssignsToTask34#,记录其次要实体属性Bs={IfcDuctSegment1#,
IfcDuctSegment2#,IfcSlab1#}
[0144] 步骤5.8:遍历Bs中每个IFC实例ei,如果提取的子模型L0中不包括ei,则进入步骤5.9;反之,继续遍历Bs,直到结束后,返回步骤5.6;
[0145] 以ei=IfcRelAssignsToTask34#,Bs={IfcDuctSegment1#,IfcDuctSegment2#,IfcSlab1#}
[0146] 为例,L0包含IfcDuctSegment1#,IfcDuctSegment2#,不做修正;L0不包含IfcSlab1#,需要修正,进入步骤5.9;
[0147] 步骤5.9:将ei加入oij的次要实体属性;返回步骤5.8;
[0148] 以ei=IfcRelAssignsToTask34#,IfcSlab1#为例,将IfcSlab1#加入到IfcRelAssignsToTask34#的次要实体属性,完成对IfcRelAssignsToTask34#的修正;返回步骤5.8。
[0149] 步骤6、步骤6:将本阶段修改的IFC子模型M2存入IFC完整模型Mc
[0150] 需根据IFC实例的状态,将M2的实例列表L2={ei,{oij}}中实例,融入IFC完整模型Mc的实例列表Lc中,形成新的Lc={ei,{oij}};具体包括以下步骤:
[0151] 步骤6.1:遍历L2中各个元素(ei,{oij}),在Lc中找到ek=ei的元素(ek,{okj}),进入步骤6.2;如果未找到,进入步骤6.6;遍历完L2后,步骤6流程结束;
[0152] 遍历到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#(消火栓箱)});
[0153] 步骤6.2:遍历{oij}中每个IFC实例oij;如果oij的状态是新增,进入骤6.3;如果oij的状态是更新,进入步骤6.4;如果oij的状态是删除,进入步骤步骤6.5;如是未修改状态,继续步骤6.2,直到{oij}遍历完成,返回步骤6.1;
[0154] 遍历{oij}中每个IFC实例oij;对于IfcTask 1#、IfcTask2#、IfcTask3#、IfcTask 4#、IfcTask5#等新增实例,进入步骤6.3;对于删除状态的IfcTask7#,进入步骤6.5;对于更新状态的IfcTask12#,IfcTask34#,IfcTask56#更新状态实例,进入步骤6.4;
[0155] 步骤6.3:将oij添加到{okj}中,返回步骤6.2;以ei=IfcTask,{okj}={IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱),IfcTask 1#(左侧罗盘箱风管)、IfcTask2#(右侧罗盘箱风管)、IfcTask 3#(地下线槽)、IfcTask4#(吊顶电缆桥架)、IfcTask5#(配电柜安装)}
[0156] 步骤6.4:在{okj}中找到与oij的GlobalId相同的IFC实例okj,用oij代替okj;,返回步骤6.2;
[0157] 以IfcTask56#(配电柜),替换后,变为IfcTask56#(配电柜及其线路安装),{okj}={IfcTask,{IfcTask12#(罗盘箱风管),IfcTask34#(电缆桥架),IfcTask56#(配电柜),IfcTask7#(消火栓箱),IfcTask1#(左侧罗盘箱风管)、IfcTask2#(右侧罗盘箱风管)、IfcTask 3#(地下线槽)、IfcTask 4#(吊顶电缆桥架)、IfcTask5#(配电柜及其线路安装)};
[0158] 步骤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#(配电柜及其线路安装)},删除状态的实例不显示;
[0159] 步骤6.6:将(ei,{oij})加入Lc;返回步骤6.1。
[0160] 本实施例只是对本发明的进一步解释,并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性的修改,但是只要在本发明的权利要求范围内都受到专利法的保护。

当前第1页 第1页 第2页 第3页
相关技术
模型融合相关技术
融合方法相关技术
余芳强发明人的其他相关专利技术