公路工程信息模型数据导出方法转让专利

申请号 : CN202310113305.2

文献号 : CN115904552B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王佐张峰刘向阳戈普塔祝兴虎刘国图

申请人 : 中交第一公路勘察设计研究院有限公司

摘要 :

本发明涉及公路工程信息模型数据导出方法。公路BIM建模软件支持C#语言开发,对C++语言开发不支持或支持有限。本方法使用C++语言创建派生出公路工程IFC实体,封装BREP几何实体,封装通用属性集模板;使用C++语言封装形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能;使用托管C++语言封装形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能;使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建导出IFC文件的功能。本方法兼具C++语言的高性能和C#语言的开发便捷性,可适配不同公路BIM建模软件。

权利要求 :

1.基于IFC的公路工程信息模型数据导出方法,其特征在于:所述方法包括:

使用C++语言创建派生出公路工程IFC实体,实现公路工程IFC实体的创建功能,包括:在现有ifcplusplus插件的基础上,使用C++语言从空间结构实体和土木元素实体创建派生出公路工程IFC实体;

根据公路工程信息模型数据存储的用途,实现公路工程IFC实体的创建功能;

使用C++语言封装BREP几何实体,实现BREP几何实体的创建功能,包括:使用C++语言封装BREP几何实体;

封装后的BREP几何实体,具有创建BREP几何实体的参数和函数接口,能实现BREP几何实体的创建功能;

使用C++语言封装通用属性集模板,实现属性集的创建功能,包括:使用C++语言封装通用属性集模板;

封装后的通用属性集模板,具有创建属性集的属性参数和函数接口,能实现属性集的创建功能;

使用C++语言封装形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能,包括:使用C++语言调用BREP几何实体、通用属性集模板,对创建派生出的公路工程IFC实体进行封装,形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能;封装后的空间结构实体具有实体相对位置和属性集、以及明确与上、下级所属空间结构实体的聚合关系的功能;封装后的物理实体具有实体相对位置、属性集、几何实体,以及与所属空间结构实体的包含关系的功能;

使用托管C++语言封装形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能;

使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建导出IFC文件的功能。

2.根据权利要求1所述的方法,其特征在于:

使用托管C++语言封装形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能,包括:使用托管C++语言对公路工程信息模型数据存储类库进行封装,形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能。

3.根据权利要求2所述的方法,其特征在于:

使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建导出IFC文件的功能,包括:使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能,最后导出IFC文件。

说明书 :

公路工程信息模型数据导出方法

技术领域

[0001] 本发明涉及公路工程信息技术领域,具体涉及一种公路工程信息模型数据导出方法。

背景技术

[0002] 随着BIM(Building Information Modeling,建筑信息模型)技术在公路行业的应用越来越广泛,公路工程项目对交付的信息模型也越来越重视,不同的公路BIM建模软件导出的信息模型文件格式有所不同。而基于公路行业标准规定的IFC(Industry Foundation Classes,工业基础类)数据格式,使用扩展的IFC实体表示公路工程对象,使用属性信息表示公路工程对象的特征,使用关联关系表示两个或两个以上公路工程对象之间的关系,具有格式通用、结构清晰、信息量大、对象关联方便等特点,有效的统一了公路工程全生命期信息模型文件的交付格式。
[0003] 目前,现有的公路BIM建模软件大多数只支持C#语言的开发,对C++语言开发不支持或支持有限,为了能够既保留C++语言开发的高性能,又降低开发难度和成本,缩短开发周期,需要提出一种保留C++和C#语言共同特性的公路工程信息模型数据导出方法。

发明内容

[0004] 本发明的目的是提供一种公路工程信息模型数据导出方法,为公路BIM建模软件导出公路工程信息模型数据提供通用的接口,能够适配不同的公路BIM建模软件导出公路工程信息模型文件。
[0005] 为了达到上述目的,本发明所采用的技术方案为:
[0006] 公路工程信息模型数据导出方法,所述方法包括:
[0007] 使用C++语言创建派生出公路工程IFC实体,实现公路工程IFC实体的创建功能;
[0008] 使用C++语言封装BREP几何实体,实现BREP几何实体的创建功能;
[0009] 使用C++语言封装通用属性集模板,实现属性集的创建功能;
[0010] 使用C++语言封装形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能;
[0011] 使用托管C++语言封装形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能;
[0012] 使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建导出IFC文件的功能。
[0013] 进一步地,使用C++语言创建派生出公路工程IFC实体,实现公路工程IFC实体的创建功能,包括:
[0014] 在现有ifcplusplus插件的基础上,使用C++语言从空间结构实体和土木元素实体创建派生出公路工程IFC实体;
[0015] 根据公路工程信息模型数据存储的用途,实现公路工程IFC实体的创建功能。
[0016] 进一步地,使用C++语言封装BREP几何实体,实现BREP几何实体的创建功能,包括:
[0017] 使用C++语言封装BREP几何实体;
[0018] 封装后的BREP几何实体,具有创建BREP几何实体的参数和函数接口,能实现BREP几何实体的创建功能。
[0019] 进一步地,使用C++语言封装通用属性集模板,实现属性集的创建功能,包括:
[0020] 使用C++语言封装通用属性集模板;
[0021] 封装后的通用属性集模板,具有创建属性集的属性参数和函数接口,能实现属性集的创建功能。
[0022] 进一步地,使用C++语言封装形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能,包括:
[0023] 使用C++语言调用公路工程IFC实体、BREP几何实体和通用属性集模板,封装形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能。
[0024] 进一步地,使用托管C++语言封装形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能,包括:
[0025] 使用托管C++语言对公路工程信息模型数据存储类库进行封装,形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能。
[0026] 进一步地,使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建导出IFC文件的功能,包括:
[0027] 使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能,最后导出IFC文件。
[0028] 与现有技术相比,本发明的有益效果如下:
[0029] 本发明对现有ifcplusplus插件进行扩展,使用C++语言创建派生出公路工程IFC实体,使用C++语言封装BREP几何实体、通用属性集模板、公路工程IFC实体,形成公路工程信息模型数据存储类库,使用托管C++语言封装公路工程信息模型数据存储类库,形成公路工程信息模型数据存储接口库,支持C#语言调用公路工程信息模型数据存储接口库,实现公路工程信息模型数据导出IFC文件的功能。
[0030] 本发明提供的公路工程信息模型数据导出方法,既保留C++语言开发的高性能,又保留C#语言开发的便捷性,降低了开发难度和成本,缩短了开发周期,可以有效适配不同公路BIM建模软件,为不同公路BIM建模软件导出公路工程信息模型数据提供了通用的接口,实现基于IFC的公路工程信息模型数据导出。

附图说明

[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他实施例的附图。
[0032] 图1是本发明实施例中的方法流程图。
[0033] 图2是本发明实施例的方法导出的公路工程信息模型三维图。

具体实施方式

[0034] 为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施方式。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本发明的公开内容理解的更加透彻全面。
[0035] 应注意到,相似的标号和字母表示类似项,因此,一旦某一项在一个实施例中被定义,则在随后的实施例中不需要对其进行进一步定义和解释。此外,术语“包括”等以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
[0036] 另外,本发明实施例中涉及的步骤“S1”、“S2”等仅为了方便技术方案的描述,便于理解实施例的具体步骤和内容,不应被理解为对步骤顺序的限制,任何仅对步骤顺序的变化都应在本发明的保护范围之内。
[0037] 本发明提供了一种公路工程信息模型数据导出方法,为公路BIM建模软件导出公路工程信息模型数据提供了通用的接口,能够有效适配不同的公路BIM建模软件导出公路工程信息模型文件。如图1,所述方法包括:
[0038] S1:使用C++语言创建派生出公路工程IFC实体,实现公路工程IFC实体的创建功能,具体包括:
[0039] 现有的ifcplusplus插件只包括建筑工程相关的IFC实体,不包括《公路工程信息模型应用统一标准》(JTGT 2420‑2021)中定义的公路工程相关的IFC实体。
[0040] S101:  在现有ifcplusplus插件的基础上,使用C++语言从空间结构实体(IfcSpatialStructureElement)创建派生出设施实体(IfcFacility),从设施实体(IfcFacility)创建派生出公路实体(IfcRoad)、桥梁实体(IfcBridge)、隧道实体(IfcTunnel)等。从空间结构实体(IfcSpatialStructureElement)创建派生出子设施实体(IfcFacilityPart),从子设施实体(IfcFacilityPart)创建派生出路基路面实体(IfcRoadPart)、桥梁结构实体(IfcBridgePart)、隧道段实体(IfcTunnelPart)等。
[0041] S102:  在现有ifcplusplus插件的基础上,使用C++语言从土木元素实体(IfcCivilElement)创建派生出路基元素实体(IfcSubgradeElement)、路面元素实体(IfcPavementElement)、边坡元素实体(IfcSlope)、拱元素实体(IfcArch)、隧道元素实体(IfcTunnelElement)等。场地实体(IfcSite)、管沟元素实体(IfcPipeSegment)、池元素实体(IfcTank)、梁元素实体(IfcBeam)、墙元素实体(IfcWall)、板元素实体(IfcSlab)、柱元素实体(IfcColumn)、基础元素实体(IfcFooting)、桩元素实体(IfcPile)、护栏元素实体(IfcRailing)、伸缩装置元素实体(IfcFastener)、牛腿元素实体(IfcMember)等在现有ifcplusplus插件中存在,本方法沿用上述实体。
[0042] 综上,步骤S101和步骤S102创建派生出的公路工程IFC实体包括:公路实体(IfcRoad)、桥梁实体(IfcBridge)、隧道实体(IfcTunnel)、路基路面实体(IfcRoadPart)、桥梁结构实体(IfcBridgePart)、隧道段实体(IfcTunnelPart)、路基元素实体(IfcSubgradeElement)、路面元素实体(IfcPavementElement)、边坡元素实体(IfcSlope)、拱元素实体(IfcArch)、隧道元素实体(IfcTunnelElement)等。其中,公路实体(IfcRoad)、桥梁实体(IfcBridge)、隧道实体(IfcTunnel)、路基路面实体(IfcRoadPart)、桥梁结构实体(IfcBridgePart)、隧道段实体(IfcTunnelPart)为空间结构实体,路基元素实体(IfcSubgradeElement)、路面元素实体(IfcPavementElement)、边坡元素实体(IfcSlope)、拱元素实体(IfcArch)、隧道元素实体(IfcTunnelElement)为物理实体。
[0043] S103:根据公路工程信息模型数据存储的用途,实现公路、桥梁、隧道等公路工程IFC实体的创建功能,包括位置、属性、几何、关联关系等创建功能。
[0044] 位置是公路工程IFC实体实例化对象在所属空间结构实体对象中的相对位置,用于该实例化对象所在局部坐标系的创建和定位。
[0045] 属性源于《公路工程设计信息模型应用标准》(JTGT 2421‑2021)、《公路工程施工信息模型应用标准》(JTGT 2422‑2021)或项目自定义的属性内容。
[0046] 几何源于《公路工程信息模型应用统一标准》(JTGT 2420‑2021),本方法仅适用于BREP(Boundary Representation,边界表面模型)几何实体的创建。
[0047] 关联关系源于《公路工程信息模型应用统一标准》(JTGT 2420‑2021),主要包括包含关系和聚合关系。场地实体(IfcSite)具有聚合公路实体(IfcRoad)、桥梁实体(IfcBridge)、隧道实体(IfcTunnel)等空间结构实体的功能,场地实体(IfcSite)与被聚合的公路实体(IfcRoad)、桥梁实体(IfcBridge)、隧道实体(IfcTunnel)等存在聚合关系。公路实体(IfcRoad)具有聚合路基路面实体(IfcRoadPart)的功能,公路实体(IfcRoad)与被聚合的路基路面实体(IfcRoadPart)存在聚合关系。桥梁实体(IfcBridge)具有聚合桥梁结构实体(IfcBridgePart)的功能,桥梁实体(IfcBridge)与被聚合的桥梁结构实体(IfcBridgePart)存在聚合关系。隧道实体(IfcTunnel)具有聚合隧道段实体(IfcTunnelPart)的功能,隧道实体(IfcTunnel)与被聚合的隧道段实体(IfcTunnelPart)存在聚合关系。路基路面实体(IfcRoadPart)具有包含路基元素实体(IfcSubgradeElement)、路面元素实体(IfcPavementElement)、边坡元素实体(IfcSlope)、管沟元素实体(IfcPipeSegment)、池元素实体(IfcTank)等功能,路基路面实体(IfcRoadPart)与被包含的路基元素实体(IfcSubgradeElement)、路面元素实体(IfcPavementElement)、边坡元素实体(IfcSlope)、管沟元素实体(IfcPipeSegment)、池元素实体(IfcTank)等存在包含关系。桥梁结构实体(IfcBridgePart)具有包含拱元素实体(IfcArch)、梁元素实体(IfcBeam)、墙元素实体(IfcWall)、板元素实体(IfcSlab)、柱元素实体(IfcColumn)、基础元素实体(IfcFooting)、桩元素实体(IfcPile)、护栏元素实体(IfcRailing)、伸缩装置元素实体(IfcFastener)、牛腿元素实体(IfcMember)等的功能,桥梁结构实体(IfcBridgePart)与被包含的拱元素实体(IfcArch)、梁元素实体(IfcBeam)、墙元素实体(IfcWall)、板元素实体(IfcSlab)、柱元素实体(IfcColumn)、基础元素实体(IfcFooting)、桩元素实体(IfcPile)、护栏元素实体(IfcRailing)、伸缩装置元素实体(IfcFastener)、牛腿元素实体(IfcMember)等存在包含关系。隧道段实体(IfcTunnelPart)具有包含隧道元素实体(IfcTunnelElement)、墙元素实体(IfcWall)、拱元素实体(IfcArch)、边坡元素实体(IfcSlope)、基础元素实体(IfcFooting)、管沟元素实体(IfcPipeSegment)等的功能,隧道段实体(IfcTunnelPart)与被包含的隧道元素实体(IfcTunnelElement)、墙元素实体(IfcWall)、拱元素实体(IfcArch)、边坡元素实体(IfcSlope)、基础元素实体(IfcFooting)、管沟元素实体(IfcPipeSegment)等存在包含关系。
[0048] S2:使用C++语言封装BREP几何实体,实现BREP几何实体的创建功能,具体包括:
[0049] S201:使用C++语言封装BREP几何实体,封装的BREP几何实体包括面实体(IfcFace)、封闭壳实体(IfcClosedShell)和流形实体 (IfcFacetedBrep)等。
[0050] S202:封装后的BREP几何实体,具有创建BREP几何实体的参数和函数接口,能实现BREP几何实体的创建功能。
[0051] S3:使用C++语言封装通用属性集模板,实现属性集的创建功能,具体包括:
[0052] S301:使用C++语言封装通用属性集模板,通用属性集模板支持自定义属性项(IfcProperty),属性项支持浮点型(IfcReal)、整型(IfcInteger)、标签型(IfcLabel)、文本型(IfcText)、布尔型(IfcBoolean)等数据类型,通过自定义属性项(IfcProperty),自动生成属性集(IfcPropertySet)。
[0053] S302:封装后的通用属性集模板,具有创建属性集的参数和函数接口,能够实现属性集的创建功能。
[0054] S4:使用C++语言封装形成公路工程信息模型数据存储类库,支持C++语言创建公路工程信息模型数据的功能,具体包括:
[0055] S401:使用C++语言调用步骤S2的BREP几何实体、步骤S3的通用属性集模板,对步骤S1创建派生出的公路工程IFC实体进行封装,封装后的空间结构实体具有实体相对位置和属性集,以及明确与上、下级所属空间结构实体的聚合关系等功能。封装后的物理实体具有实体相对位置、属性集、几何实体,以及与所属空间结构实体的包含关系等功能。
[0056] 为了符合《公路工程信息模型应用统一标准》(JTGT 2420‑2021)的规定,封装形成的公路工程信息模型数据存储类库需做如下操作:
[0057] ①公路类(Road)对公路实体(IfcRoad)封装,将公路实体(IfcRoad)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),表示一条公路;路段类(RoadSegment)对公路实体(IfcRoad)封装,将公路实体(IfcRoad)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),表示一段公路;路面类(Pavement)对路基路面实体(IfcRoadPart)封装,将路基路面实体(IfcRoadPart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),对象类型(ObjectType)设置为路面的分类编码,表示一段公路的所有路面;路面段类(PavementSegment)对路基路面实体(IfcRoadPart)封装,将路基路面实体(IfcRoadPart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为路面段的分类编码,表示一段路面;路基类(Subgrade)对路基路面实体(IfcRoadPart)封装,将路基路面实体(IfcRoadPart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),表示一段公路的所有路基;路基土石方类(SubgradeBody)对路基路面实体(IfcRoadPart)封装,将路基路面实体(IfcRoadPart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为路基土石方的分类编码,表示一段路基土石方;路基防护类(SubgradeProtect)对路基路面实体(IfcRoadPart)封装,将路基路面实体(IfcRoadPart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为路基防护的分类编码,表示一段路基防护;路基排水类(SubgradeDrainage)对路基路面实体(IfcRoadPart)封装,将路基路面实体(IfcRoadPart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为路基排水的分类编码,表示一段路基排水。
[0058] 路基元素类(SubgradeElement)对路基元素实体(IfcSubgradeElement)封装,路面元素类(PavementElement)对路面元素实体(IfcPavementElement)封装,边坡类(Slope)对边坡元素实体(IfcSlope)封装,墙类(Wall)对墙元素实体(IfcWall)封装,管沟类(PipeSegment)对管沟元素实体(IfcPipeSegment)封装,池类(Tank)对池元素实体(IfcTank)封装。
[0059] 公路类(Road)具有创建路段类(RoadSegment)的功能,路段类(RoadSegment)具有创建路面类(Pavement)和路基类(Subgrade)的功能,路面类(Pavement)具有创建路面段类(PavementSegment)的功能, 路基类(Subgrade)具有创建路基土石方类(SubgradeBody)、路基防护类(SubgradeProtect)、路基排水类(SubgradeDrainage)的功能。路面段类(PavementSegment)具有创建路面元素类(PavementElement)的功能,路基土石方类(SubgradeBody)具有创建路基元素类(SubgradeElement)的功能,路基防护类(SubgradeProtect)具有创建边坡类(Slope)、墙类(Wall)等功能,路基排水类(SubgradeDrainage)具有创建管沟类(PipeSegment) 、池类(Tank)等功能。
[0060] ②复杂桥梁类(ComplexBridge)对桥梁实体(IfcBridge)封装,将桥梁实体(IfcBridge)的构成类型(CompositionType)设置为复杂枚举项(COMPLEX),表示由多座桥梁组合成的复杂桥梁;单座桥梁类(Bridge)对桥梁实体(IfcBridge)封装,将桥梁实体(IfcBridge)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),表示一座桥梁;上部结构类(SuperStruct)对桥梁结构实体(IfcBridgePart)封装,将桥梁结构实体(IfcBridgePart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),对象类型(ObjectType)设置为上部结构的分类编码,表示桥梁上部结构;下部结构类(SubStruct)对桥梁结构实体(IfcBridgePart)封装,将桥梁结构实体(IfcBridgePart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),对象类型(ObjectType)设置为下部结构的分类编码,表示桥梁下部结构;桥面系及附属工程类(Accessory)对桥梁结构实体(IfcBridgePart)封装,将桥梁结构实体(IfcBridgePart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),对象类型(ObjectType)设置为桥面系及附属工程的分类编码,表示桥面系及附属工程;桥联类(BridgeUnit)对桥梁结构实体(IfcBridgePart)封装,将桥梁结构实体(IfcBridgePart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为桥联的分类编码,表示桥联;桥跨类(BridgeSpan)对桥梁结构实体(IfcBridgePart)封装,将桥梁结构实体(IfcBridgePart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为桥跨的分类编码,表示桥跨。
[0061] 护栏类(Railing)对护栏元素实体(IfcRailing)封装,伸缩装置类(Fastener)对伸缩装置元素实体(IfcFastener)封装、牛腿类(Member)对牛腿元素实体(IfcMember)封装。
[0062] 复杂桥梁类(ComplexBridge)具有创建单座桥梁类(Bridge)的功能,单座桥梁类(Bridge)具有创建上部结构类(SuperStruct)、下部结构类(SubStruct)、桥面系及附属工程类(Accessory)的功能,上部结构类(SuperStruct)具有创建桥联类(BridgeUnit)的功能,桥联类(BridgeUnit)具有创建桥跨类(BridgeSpan)的功能,桥跨类(BridgeSpan)具有创建梁类(Beam)、拱类(Arch)、板类(Slab)等功能,下部结构类(SubStruct)具有创建梁类(Beam)、柱类(Column)、基础类(Footing)、桩类(Pile)等功能,桥面系及附属工程类(Accessory)具有创建护栏类(Railing)、伸缩装置类(Fastener)、牛腿类(Member) 、板类(Slab)等功能。
[0063] ③复杂隧道类(ComplexTunnel)对隧道实体(IfcTunnel)封装,将隧道实体(IfcTunnel)的构成类型(CompositionType)设置为复杂枚举项(COMPLEX),表示双洞等复杂隧道;单洞隧道类(Tunnel)对隧道实体(IfcTunnel)封装,将隧道实体(IfcTunnel)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),表示单洞隧道;洞口类(Tunnel2E)对隧道段实体(IfcTunnelPart)封装,将隧道段实体(IfcTunnelPart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),对象类型(ObjectType)设置为隧道洞口的分类编码,表示隧道洞口;洞身及辅助通道类(TunnelBody)对隧道段实体(IfcTunnelPart)封装,将隧道段实体(IfcTunnelPart)的构成类型(CompositionType)设置为元素枚举项(ELEMENT),对象类型(ObjectType)设置为洞身及辅助通道的分类编码,表示隧道洞身及辅助通道;隧道段类(TunnelSegment)对隧道段实体(IfcTunnelPart)封装,将隧道段实体(IfcTunnelPart)的构成类型(CompositionType)设置为部分枚举项(PARTIAL),对象类型(ObjectType)设置为隧道段的分类编码,表示隧道洞身及辅助通道的隧道段。
[0064] 复杂隧道类(ComplexTunnel)具有创建单洞隧道类(Tunnel)的功能,单洞隧道类(Tunnel)具有创建隧道洞口类(Tunnel2E)、洞身及辅助通道类(TunnelBody)的功能,洞身及辅助通道类(TunnelBody)具有创建隧道段类(TunnelSegment)的功能。隧道洞口类(Tunnel2E)具有创建墙类(Wall)、边坡类(Slope)、管沟类(PipeSegment)等功能。隧道段类(TunnelSegment)具有创建拱类(Arch)、基础类(Footing)、管沟类(PipeSegment)等功能。
[0065] S5:使用托管C++语言封装形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能,具体包括:
[0066] 使用托管C++语言对步骤S4的公路工程信息模型数据存储类库封装,实现公路工程信息模型数据存储类库的所有功能,形成公路工程信息模型数据存储接口库,支持C#语言创建公路工程信息模型数据的功能。
[0067] S6:使用托管C++语言调用公路工程信息模型数据存储接口库,支持C#语言创建导出IFC文件的功能,包括:
[0068] 使用托管C++语言对步骤S5的公路工程信息模型数据存储接口库进行调用,生成公路工程信息模型数据,并实现IFC文件的导出功能,最后导出IFC文件。可以使用C#语言基于Revit、OpenRoads、Dassault等BIM建模软件进行二次开发,为其提供公路工程信息模型数据的导出接口。
[0069] 本发明使用C++语言对ifcplusplus插件进行扩展和封装,形成公路工程信息模型数据存储类库,使用托管C++语言对公路工程信息模型数据存储类库进行封装,形成公路工程信息模型数据存储接口库,实现了公路工程信息模型数据导出功能,为不同公路BIM建模软件导出公路工程信息模型数据提供了通用的接口,提供了一种可使用C#语言进行开发,通用、便捷、符合我国专业习惯的公路工程信息模型数据导出接口,为不同公路BIM建模软件导出公路工程信息模型文件提供了便利。
[0070] 以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。