公开/公告号CN107609268A
专利类型发明专利
公开/公告日2018-01-19
原文格式PDF
申请/专利权人 上海同岩土木工程科技股份有限公司;深圳市地铁集团有限公司;
申请/专利号CN201710815874.6
申请日2017-09-12
分类号G06F17/50(20060101);G06T17/05(20110101);
代理机构31113 上海浦东良风专利代理有限责任公司;
代理人龚英
地址 200092 上海市杨浦区四平路1388号同济联合广场C座408室
入库时间 2023-06-19 04:21:55
法律状态公告日
法律状态信息
法律状态
2020-06-05
授权
授权
2018-02-13
实质审查的生效 IPC(主分类):G06F17/50 申请日:20170912
实质审查的生效
2018-01-19
公开
公开
技术领域
本发明涉及一种模型耦合的方法,特别是公开一种基于TIN的三维地质模型与BIM模型耦合的方法,应用于地下工程领域。
背景技术
由于三维地质模型能直观完整准确地反映复杂的地质构造和边界条件,并可动态显示和查询,这对地学工作者和岩土工程师进行实际的地质分析是极为有用。2016年6月,国家自然科学基金委于《国家自然科学基金十三五发展规划》中将“快速、动态、精细全信息三维地学建模方法,三维地学空间数据结构模型,多维时空大数据组织、管理与动态索引”作为优先发展领域,特别强调了三维地质模型的信息组织管理。
近几年在国内新兴的建筑信息模型(Building Information Modeling,BIM)技术,在政府的引导和各行业的大力推动下,市政、交通、电力等基础工程越来越多地应用BIM技术进行全生命周期的管理,解决“信息孤岛”问题,提升工程质量和降低成本。
由于几何模型数据表达的差异性,BIM技术的应用领域很少涉及三维地质,特别是三维地质模型与BIM模型耦合的方法鲜有文献可查。鉴于三维地质和BIM技术在工程中的广泛应用,如何打破二者之间的隔离,实现几何模型耦合及信息的互联互通,是一个有待解决的关键问题。
因此,研究一种基于TIN的三维地质模型与BIM模型耦合的方法已成为三维地质及BIM技术耦合应用的迫切需求之一。
发明内容
本发明的目的是解决现有技术两种模型没有耦合,导致模型中各构件信息相对独立,不够完整的缺陷,提出一种基于TIN的三维地质模型与BIM模型耦合的方法,将两种模型耦合成三维数字模型展示,使用户在一个模型中即可完整查看相应部件的全部信息,包括其位置、造型、结构、颜色、材质等等,方便用户对工程质量进行直观的管理。
本发明是这样实现的:一种基于TIN的三维地质模型与BIM模型耦合的方法,本发明所述的三维地质模型是基于三角面片(TIN)表达的表面空间模型,其特征在于,所述的耦合方法包括以下步骤:
S1、根据原始的建筑信息模型(BIM模型)的标准数据文件IFC文件,创建所述BIM模型中构件的属性索引数据库,所述的属性索引数据库是通过所述BIM模型中构件的唯一标识符GUID建立的构件的几何数据与非几何数据的索引关系信息数据库。
IFC:工业基础类(Industry Foundation Classes,IFC)是用于交换和共享复杂的BIM建筑信息模型的综合性国际标准;
GUID:是Global Unique ID的缩写,定义了在应用程序或系统中唯一存在的一种独特的标识符,该值在空间上和时间上都具有唯一性,保证同一时间不同地方产生的数字不同。
所述步骤S1的具体操作如下:
(1)通过所述IFC文件中的几何属性方法,包括IfcSite(位置)、IfcDirection(方向)、IfcLocalPlacement(当前位置)、IfcAxis2Placement3D(局部坐标系下的位置)、IfcShapeRepresentation(形状表达)、IfcExtrudeAreaSolid(通过面域拉伸实体)等几何属性方法,提取BIM模型中构件的位置、方向和形状等几何数据。根据提取的BIM模型中所有构件的几何数据,建立构件的几何数据库,并通过GUID分别进行标识;
(2)通过所述IFC文件中的建筑构件对象的类方法,包括IfcColumn(柱)、IfcBeam(梁)、IfcDoor(门)、IfcWindow(窗)等类方法,提取BIM模型中所有构件对象,建立构件对象数据库,并通过GUID分别进行标识;
(3)通过所述IFC文件中的非几何数据属性方法,包括IfcMaterial(材料实体)、IfcMaterialList(材料实体列表)、IfcMaterialLayerSetUsage(材料层设置实体)等方法提取所述BIM模型中所有构件的材质、颜色等非几何数据,建立构件的非几何数据库,并通过GUID与所述构件的几何数据库建立索引关系,存储为索引关系信息数据库。
S2、根据所述的构件的几何数据,提取所述BIM模型中每个构件的包围盒,所述每个构件的包围盒的几何数据采用两对角点的空间坐标来表达。
所述步骤S2的具体操作如下:
(1)利用所述的GUID从构件对象数据库中快速提取构件的包围盒,记为B;
(2)基于整体坐标系,每个构件的包围盒的几何表达为两对角点的空间坐标,两对角点依次为最小值点和最大值点,记为Pmin、Pmax。
S3、对所述BIM模型中所有构件的包围盒按X、Y、Z坐标从小到大依次排序,并对排序后的包围盒进行相互之间的“并”布尔运算,获得BIM模型的几何外轮廓模型,所述的“并”布尔运算为Bi∪Bj,其中B为构件的包围盒,i和j分别为所述依次排序的构件的包围盒的序号,且i小j,即Bi为排列的序号为i的构件的包围盒,Bj为排列的序号为j的构件的包围盒。
所述步骤S3的具体操作如下:
(1)对提取的所有BIM模型中构件的包围盒B按X、Y、Z坐标从小到大依次排序,生成包围盒链表;
(2)连接包围盒的单一对角线,基于TIN将包围盒外表面拆分成12个三角形,并根据右手坐标系法则确保各TIN的法向为朝向包围盒体外,同时采用半边数据结构进行存储;
半边数据结构(The Half-Edge Data Structure)的定义:是以一个边为中心的数据结构,每条边被分解成两个方向相反的半边(half edge),该组织方式能够保存顶点、边和面的关联信息。半边数据结构的特殊设计,最终目的是为了平衡数据存储与信息查找、修改方便,实现信息冗余少,且顶点、边、面的相互快速访问;
(3)对排序后的包围盒进行相互之间的“并”布尔运算Bi∪Bj,记“并”布尔运算的结果为包围盒V′,具体方法为:
a、假如Bi∈V′,则无需进行“并”布尔运算,将Bi从包围盒链表中删除;
b、假如Bi∉V′,则亦无需进行“并”布尔运算,但保留Bi于包围盒链表中;
c、假如Bi与V′相交,则进行TIN的布尔运算,获得新的更大的包围盒V′,并将Bi从包围盒链表中删除;
(4)重复上述第(3)步对排序后的包围盒进行相互之间的“并”布尔运算,直至所有的包围盒处理完毕,得到所述BIM模型的几何外轮廓模型,记为V。
S4、根据上述运算获得的BIM模型的几何外轮廓模型对三维地质模型进行“差”布尔运算,得到新的三维地质模型,并导入原始的BIM模型进行合并,实现三维地质模型与BIM模型的几何外轮廓模型的合并,所述的“差”布尔运算为TIN的布尔运算。
所述步骤S4的具体操作如下:
(1)结合BIM模型的几何外轮廓模型V和三维地质模型G进行“差”布尔运算,得到新的三维地质模型G′,所述的“差”布尔运算为TIN的布尔运算;
(2)将原始BIM模型的几何外轮廓模型导入,与所述的三维地质模型G′进行合并,实现三维地质模型与BIM模型的几何外轮廓模型的合并。
S5、根据每个构件的包围盒的几何数据的空间坐标及BIM模型的属性索引数据库中的索引关系数据信息实现三维地质模型与BIM模型中的非几何数据的耦合。
S6、生成统一的三维地质模型与BIM模型耦合后的三维数字模型。
本发明所述的TIN的布尔运算主要为面面求交和面面缝合,其方法如下:
(1)面面求交:面面求交为三角面片与三角面片的求交,将参考面F的每个三角面片分别于求交面F′的每个三角面片进行求交,求出三角面片对相交的交线,生成的交线应与交线方向一致,然后将所有求出的交线首尾相连得到最终结果;
(2)面面缝合:对于半边结构来说,找到方向相反的半边并将其置为兄弟半边,然后去掉多余点,并将所有三角面片移到一个面中,完成面面缝合操作。
与现有技术相比,本发明具有以下优点:
(1)本发明解决了利用面片模式表达的三维地质模型与BIM模型耦合的问题,可以完整展示模型中构件的详细信息,且方法自动化程度高,用户干预少,实现容易;
(2)本发明采用GUID作为对构件信息快速检索的标记,可提高信息检索的效率,降低错误率;
(3)本发明BIM模型基于数据标准文件IFC进行处理,方法具有较普遍的适应性和可操作性。
附图说明
图1是本发明方法的处理步骤流程示意图。
图2是本发明中所述构件基于TIN的包围盒网格示意图。
图3是本发明基于TIN的网格面面求交示意图。
图4是本发明基于TIN的网格面面缝合示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
实施例:
根据附图1,本发明为一种基于TIN的三维地质模型与BIM模型耦合的方法,包括以下步骤:
S1、根据原始的建筑信息模型(BIM模型)的标准数据文件IFC文件,创建所述BIM模型中构件的属性索引数据库,所述的属性索引数据库是通过所述BIM模型中构件的唯一标识符GUID建立的构件的几何数据与非几何数据的索引关系信息数据库;
所述步骤S1的具体操作如下:
(1)在所述的IFC文件中,通过IfcSite(位置)、IfcDirection(方向)、IfcLocalPlacement(当前位置)、IfcAxis2Placement3D(局部坐标系下的位置)、IfcShapeRepresentation(形状表达)、IfcExtrudeAreaSolid(通过面域拉伸实体)等几何属性方法,提取BIM模型中构件的位置、方向和形状等几何数据。根据提取的BIM模型中所有构件的几何数据,建立构件的几何数据库,并通过GUID分别进行标识;
(2)在所述的IFC文件中,通过IfcColumn(柱)、IfcBeam(梁)、IfcDoor(门)、IfcWindow(窗)等建筑构件对象的类方法,提取BIM模型中所有构件对象,建立构件对象数据库,并通过GUID分别进行标识;
(3)在所述的IFC文件中,通过IfcMaterial(材料实体)、IfcMaterialList(材料实体列表)、IfcMaterialLayerSetUsage(材料层设置实体)等方法提取所述BIM模型中所有构件的非几何数据,包括材质、颜色等,建立构件的非几何数据库,并通过GUID与所述构件的几何数据库建立索引关系,存储为索引关系信息数据库。
例如在IFC标准中,梁属性定义如下:
ENTITY IfcBeam;
GlobalId: IfcGloballyUniqueId; //GUID,唯一标识符
OwnerHistory: IfcOwnerHistory;
Name: OPTIONAL IfcLable;
Description: OPTIONAL IfcText;
ObjectType: OPTIONAL IfcObjectPlacement;
Representation: OPTIONAL IfcProductRepresentation;
Tag: OPTIONAL IfcDentifier;
END_ENTITY;
梁实例:
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(...);
FILE_NAME(...);
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
#41= IFCOWNERHISTORY(#38,#5,$,.NOCHANGE.,$,$,$,0);
#148= IFCLOCALPLACEMENT(#136,#147);
#177= IFCPRODUCTDEFINITIONSHAPE($,$,(#174,#167));
#181=IFCBEAM('2X0hTkdrn3SeXHOr_421p9',#41,$,$,$,#148,#177,'192553');
ENDSEC;
END-ISO-10303-21;
S2、根据所述的构件的几何数据,提取所述BIM模型中每个构件的包围盒,所述每个构件的包围盒的几何数据采用两对角点的空间坐标来表达;
所述步骤S2的具体操作如下:
(1)利用所述的GUID从构件对象数据库中快速提取构件的包围盒,记为B;
(2)基于整体坐标系,每个构件的包围盒的几何表达为两对角点的空间坐标,两对角点依次为最小值点和最大值点,记为Pmin、Pmax。
struct HE_Box
{
XYZ Pmin; //坐标最小角点
XYZ Pmax;//坐标最大角点
bool operator < (const HE_Box & rhs)const
{
//按X、Y、Z坐标从小到大排序
return (Pmin.x < rhs.Pmin.x)
|| (fabs(Pmin.x - rhs.Pmin.x)<1e-10 && Pmin.y < rhs.Pmin.y)
|| (fabs(Pmin.x - rhs.Pmin.x)<1e-10 &&(fabs(Pmin.y - rhs.Pmin.y)<1e-10 &&Pmin.z < rhs.Pmin.z);
}
};
S3、对所述BIM模型中所有构件的包围盒按X、Y、Z坐标从小到大依次排序,并对排序后的包围盒进行相互之间的“并”布尔运算,获得BIM模型的几何外轮廓模型,所述的“并”布尔运算为Bi∪Bj(i<j),其中B为构件的包围盒,i和j分别为所述依次排序的构件的包围盒的序号,即Bi为排列的序号为i的构件的包围盒,Bj为排列的序号为j的构件的包围盒。
所述步骤S3的具体操作如下:
(1)对提取的所有BIM模型中构件的包围盒B按X、Y、Z坐标从小到大依次排序,生成包围盒链表;
(2)根据附图2,包围盒的节点编号依次为0~7,通过连接包围盒的单一对角线,可以将包围盒6个矩形外表面拆分成12个三角形,并根据右手坐标系法则确保各TIN的法向为朝向包围盒体外,同时采用半边数据结构进行存储;
半边数据结构中节点数据结构:
class HE_Vertex
{
public:
XYZm_Coordinate; //点坐标
XYZm_Normal;//点法向
HE_Edge* m_pEdge; //引用当前节点的边的首地址
HE_Vertex*m_pNext; //在Node全局链表中,当前节点之前的节点地址
HE_Vertex*m_pPrev; //在Node全局链表中,当前节点之后的节点地址
};
半边数据结构中半边数据结构:
class HE_Edge
{
public:
HE_Vertex*m_pOriginPnt; //边起点
HE_Edge*m_pPairEdge; //半边(兄弟边),其值可能为NULL
HE_Edge*m_pNextEdge;//下一条边
HE_Face*m_pFace;//引用的Face,一个半边仅且只有一个Face
HE_Edge*m_pNext; //在Edge全局链表中,当前边之前的边地址
HE_Edge*m_pPrev;//在Edge全局链表中,当前边之后的边地址
};
半边数据结构中面数据结构:
class HE_Face
{
public:
HE_Edge*m_pHalfEdge;//面片内首条半边的地址(右手坐标系)
HE_Mesh*m_pMesh;//当前面所在网格的地址
HE_Face*m_pNext;//在Face全局链表中,当前面之前的面地址
HE_Face*m_pPrev;//在Face全局链表中,当前面之后的面地址
};
半边数据结构中网格数据结构:
class HE_Mesh
{
public:
HE_Face* m_listFace; //网格Face链表首地址
HE_Edge* m_listEdge; //网格Edge链表首地址
HE_Vertex*m_listVertex;//网格Vertex链表首地址
HE_Face*m_endFace;//网格Face链表尾地址
HE_Edge*m_endEdge;//网格Edge链表尾地址
HE_Vertex* m_endVertex; //网格Vertex链表尾地址
};
(3)对排序后的包围盒进行相互之间的布尔运算Bi∪Bj(i<j),记“并”布尔运算的结果为包围盒V′,具体方法为:
a、假如Bi∈V′,则无需进行“并”布尔运算,将Bi从包围盒链表中删除;
b、假如Bi∉V′,则亦无需进行“并”布尔运算,但保留Bi于包围盒链表中;
c、假如Bi与V′相交,则进行TIN的布尔运算,获得新的更大的包围盒V′,并将Bi从包围盒链表中删除;
(4)重复上述第(3)步对排序后的包围盒进行相互之间的布尔运算,直至所有的包围盒处理完毕,得到所述BIM模型的几何外轮廓模型,记为V。
S4、根据上述运算获得的BIM模型的几何外轮廓模型结合三维地质模型进行“差”布尔运算,得到新的三维地质模型,并导入原始的BIM模型进行合并,实现三维地质模型与BIM模型的几何外轮廓模型的合并,所述的“差”布尔运算为TIN的布尔运算;
所述步骤S4的具体操作如下:
(1)结合BIM模型的几何外轮廓模型V和三维地质模型G进行“差”布尔运算,得到新的三维地质模型G′,所述的“差”布尔运算为TIN的布尔运算;
(2)将原始BIM模型的几何外轮廓模型导入,与所述的三维地质模型G′进行合并,实现三维地质模型与BIM模型的几何外轮廓模型的合并。
S5、根据每个构件的包围盒的几何数据的空间坐标及BIM模型的属性索引数据库中的索引关系数据信息实现三维地质模型与BIM模型中的非几何数据的耦合;
S6、生成统一的三维地质模型与BIM模型耦合后的三维数字模型。
本发明所述的TIN的布尔运算主要为面面求交和面缝合,其方法如下:
(1)根据附图3,面面求交为三角面片与三角面片的求交,将参考面F2的每个三角面片分别于求交面F1的每个三角面片进行求交,求出三角面片对相交的交线L,生成的交线应与交线方向一致,然后将所有求出的交线首尾相连得到最终结果;
(2)根据附图4,对于半边结构来说,面面缝合即为找到方向相反的半边并将其置为兄弟半边,然后去掉多余点,并将所有三角面片移到一个面中,完成面面缝合操作。
机译: 一种确定Axitinib的药代动力学的方法及其基于Axitinib的药代动力学预测Axitinib的治疗效果的方法
机译: 一种增加h u00e4iri u00f6diversiteetin时间的方法-以及基于taajuusjakokanavointiin的radiopuhelinj u00e4rjestelm u00e4ss u00e4和radiol u00e4hetinvastaanotinj u00e4rjestelm u00e4
机译: 一种增加h u00e4iri u00f6多站点素时间的方法-以及基于taajuusjakokanavointiin的radiopuhelinj u00e4rjestelm u00e4ss u00e4和radiol u00e4hetinvastaanotinj u00e4rjestelm u00e4