(3) IFC文件几何模型 (Industry Foundation Class)

IFC文件几何模型_万里归来少年心-CSDN博客_ifc文件https://blog.csdn.net/liyazhen2011/article/details/80562497

一、简单IFC文件的基本结构包括:

1. 项目的基本内容,主要由IfcProject提供。

  • IfcOwnerHistory: 创建的人员,应用程序及创建时间等。
  • IfcGeometricRepresentationContext:类型,维度,坐标系统,精度等。 
  • IfcUnitAssignment: 度量单位。

2. 项目的基本空间结构,主要由IfcBuilding提供

  • IfcLocalPlacement: 描述构件的相对空间位置。(Placement
    放置)
  • IfcRelAggregates: 描述空间隶属关系

3. 几何表示,主要有IfcBuildingElement提供。 

  • IfcLocalPlacement: 描述构件的相对空间位置。 
  • IfcProductDefinitionShape: 在局部坐标系中定义几何形状

  下图是长1度m,宽度1m,高度2m的长方体,物体所在的局部坐标系位于建筑物坐标系的(10,0,0)处。可以用不同的3D几何模型表示相同的物体,IFC示例文件介绍了扫描实体模型,曲面模型,边界表示模型,构造实体几何模型和细分曲面模型。

图E1 块的基本形状

 1、构造实体几何(CSG primitive)

       用构造实体几何模型表示三维形体。构造实体建模法(CSG)是指一个物体被表示为一系列简单的基本物体(如立方体、圆柱体、圆锥体等)的布尔操作的结果。

    CSG的优点是:方法简洁,生成速度快,数据结构比较简单,数据量较小,修改比较容易。

    CSG缺点是:信息简单,不记录边界、顶点的信息等。受基本体素的种类和对体素操作的种类的限制,表示形体的覆盖域有较大的局限性,而且对形体的局部操作(例如,倒角等等)不易实现。显示CSG表示的结果形体时需要的间也比较长。

图 E2 CSG图元表示

1.1  IFC文件定义

#1000= IFCBUILDINGELEMENTPROXY ('1kTvXnbbzCWw8lcMd1dR4o',$,'P-1','sample CSG',$,#1001,#1010,$,$);
#1001= IFCLOCALPLACEMENT (#511,#1002);
#1002= IFCAXIS2PLACEMENT3D (#1003,$,$);
#1003= IFCCARTESIANPOINT ((1000.,0.,0.));
#1010= IFCPRODUCTDEFINITIONSHAPE ($,$,(#1020));
#1020= IFCSHAPEREPRESENTATION (#202,'Body','CSG',(#1021));
 
#1021= IFCCSGSOLID (#1022);
#1022= IFCBLOCK (#1023,1000.,1000.,2000.);
#1023= IFCAXIS2PLACEMENT3D (#1024,$,$);
#1024= IFCCARTESIANPOINT ((-500.,-500.,0.));
 
#10000= IFCRELCONTAINEDINSPATIALSTRUCTURE ('2TnxZkTXT08eDuMuhUUFNy',$,'Physical model',$,(#1000),#500);

// #1000-#1021代表语句的实例号,在IFC 文件之中, 每一条语句被分配一个实例号, 以便被其他实例引用。

// $ 符号代替语句中次要信息,但同样是该语句中需要被赋值的属性。

// #1001是ObjectPlacement 属性值,IFCLOCALPLACEMENT (#511,#1002) 表示了该长方体的几何坐标,这里几何坐标引用了#511父坐标体系,是一种相对坐标体系的表达方法。

// #1020是Representation 的属性值,表示该长方体采用CSG(构造实体几何法) 形成,基本几何体在#1021中。

// #1021表示(-500.,-500.,0.)位置处长宽高分别为1000.,1000.,2000的长方体。

// #10000表达了空间隶属关系,将该长方体与#500定义的建筑物关联起来。

 #1000-#1021代表语句的实例号,在IFC 文件之中, 每一条语句被分配一个实例号, 以便被其他实例引用。

    $ 符号代替语句中次要信息,但同样是该语句中需要被赋值的属性。

    #1001是ObjectPlacement 属性值,IFCLOCALPLACEMENT (#511,#1002) 表示了该长方体的几何坐标,这里几何坐标引用了#511父坐标体系,是一种相对坐标体系的表达方法。

    #1020是Representation 的属性值,表示该长方体采用CSG(构造实体几何法) 形成,基本几何体在#1021中。

    #1021表示(-500.,-500.,0.)位置处长宽高分别为1000.,1000.,2000的长方体。

    #10000表达了空间隶属关系,将该长方体与#500定义的建筑物关联起来。

2、 扫描表示(Extruded solid)

 扫描表示又称拉伸体表示,在工作平面上绘制的二维轮廓,然后沿着一定方向拉伸该轮廓形成三维物体。

 扫描表示的优点:表示简单直观,适合做图形输入手段。

 扫描表示的缺点:做几何变换困难,且不能直接获取形体的边界信息,表示形体的覆盖域非常有限

图 E3 拉伸体表示

 2.1 IFC文件定义

#1010= IFCPRODUCTDEFINITIONSHAPE ($,$,(#1020));
#1020= IFCSHAPEREPRESENTATION (#202,'Body','SweptSolid',(#1021));
#1021= IFCEXTRUDEDAREASOLID (#1022,$,#1034,2000.);
#1022=IFCRECTANGLEPROFILEDEF(.AREA., '1m x 1m rectangle', $,1000. , 1000.)
#1034= IFCDIRECTION ((0.,0.,1.));

// #1020是Representation 的属性值,表示该长方体采用 SweptSolid 实体拉伸方法,其拉伸的参数在实例#1021中。

// #1021表示底面沿直线拉伸,#1022表示1m*1m矩形,#1034表示沿Z轴拉伸2m。

  #1020是Representation 的属性值,表示该长方体采用 SweptSolid 实体拉伸方法,其拉伸的参数在实例#1021中。

  #1021表示底面沿直线拉伸,#1022表示1m*1m矩形,#1034表示沿Z轴拉伸2m。

3、 面模型(Surface model)

三维形体是通过一系列的二维面连接形成。

图 E4 基于面的模型表示

3.1 IFC文件定义

#1010= IFCPRODUCTDEFINITIONSHAPE ($,$,(#1020));
#1020= IFCSHAPEREPRESENTATION (#202,'Body','SurfaceModel',(#1021));
#1021= IFCFACEBASEDSURFACEMODEL ((#1022));

#1022= IFCCONNECTEDFACESET ((#1110, #1120, #1130, #1140, #1150, #1160));

#1110= IFCFACE ((#1111));
#1111= IFCFACEOUTERBOUND (#1112,.T.);
#1112= IFCPOLYLOOP ((#1201,#1202,#1206,#1205));
#1120= IFCFACE ((#1121));
#1121= IFCFACEOUTERBOUND (#1122,.T.);
#1122= IFCPOLYLOOP ((#1206,#1202,#1203,#1207));
#1130= IFCFACE ((#1131));
#1131= IFCFACEOUTERBOUND (#1132,.T.);
#1132= IFCPOLYLOOP ((#1207,#1203,#1204,#1208));
#1140= IFCFACE ((#1141));
#1141= IFCFACEOUTERBOUND (#1142,.T.);
#1142= IFCPOLYLOOP ((#1208,#1204,#1201,#1205));
#1150= IFCFACE ((#1151));
#1151= IFCFACEOUTERBOUND (#1152,.T.);
#1152= IFCPOLYLOOP ((#1201,#1204,#1203,#1202));
#1160= IFCFACE ((#1161));
#1161= IFCFACEOUTERBOUND (#1162,.T.);
#1162= IFCPOLYLOOP ((#1206,#1207,#1208,#1205));

#1201= IFCCARTESIANPOINT ((-500.,-500.,0.));
#1202= IFCCARTESIANPOINT ((500.,-500.,0.));
#1203= IFCCARTESIANPOINT ((500.,500.,0.));
#1204= IFCCARTESIANPOINT ((-500.,500.,0.));
#1205= IFCCARTESIANPOINT ((-500.,-500.,2000.));
#1206= IFCCARTESIANPOINT ((500.,-500.,2000.));
#1207= IFCCARTESIANPOINT ((500.,500.,2000.));
#1208= IFCCARTESIANPOINT ((-500.,500.,2000.));

// #1020是Representation 的属性值,表示该长方体采用基于面的模型 表示方法(SurfaceModel),面模型定义在#1021中。

// #1022 表示模型由6个面构成,分别为:#1110, #1120, #1130, #1140, #1150, #1160。

// #1110表示面的外边界由通过四个点的多边形组成。

// #1201-#1205表示空间内的6个点。

4、 边界表示(Brep model)

 BREP的一个物体被表示为许多曲面(例如面片,三角形,样条)连接起来形成封闭的空间区域。

 边界表示的优点:有较多的关于面、边、点及其相互关系的信息。 有利于生成和绘制线框图、投影图,易于同二维绘图软件及曲面建模软件相关联。

 边界表示的缺点:由于它的核心信息是面,无法提供关于实体生成过程的信息。描述物体所需信息量较多,边界表达法的表达形式不唯一。

图 E5 B-Rep模型表示

 

4.1 IFC文件定义

#1010= IFCPRODUCTDEFINITIONSHAPE ($,$,(#1020));
#1020= IFCSHAPEREPRESENTATION (#202,'Body','Brep',(#1021));
#1021= IFCFACETEDBREP (#1022);

#1022= IFCCLOSEDSHELL ((#1110, #1120, #1130, #1140, #1150, #1160));

#1110= IFCFACE ((#1111));
#1111= IFCFACEOUTERBOUND (#1112,.T.);
#1112= IFCPOLYLOOP ((#1201,#1202,#1206,#1205));
#1120= IFCFACE ((#1121));
#1121= IFCFACEOUTERBOUND (#1122,.T.);
#1122= IFCPOLYLOOP ((#1206,#1202,#1203,#1207));
#1130= IFCFACE ((#1131));
#1131= IFCFACEOUTERBOUND (#1132,.T.);
#1132= IFCPOLYLOOP ((#1207,#1203,#1204,#1208));
#1140= IFCFACE ((#1141));
#1141= IFCFACEOUTERBOUND (#1142,.T.);
#1142= IFCPOLYLOOP ((#1208,#1204,#1201,#1205));
#1150= IFCFACE ((#1151));
#1151= IFCFACEOUTERBOUND (#1152,.T.);
#1152= IFCPOLYLOOP ((#1201,#1204,#1203,#1202));
#1160= IFCFACE ((#1161));
#1161= IFCFACEOUTERBOUND (#1162,.T.);
#1162= IFCPOLYLOOP ((#1206,#1207,#1208,#1205));

#1201= IFCCARTESIANPOINT ((-500.,-500.,0.));
#1202= IFCCARTESIANPOINT ((500.,-500.,0.));
#1203= IFCCARTESIANPOINT ((500.,500.,0.));
#1204= IFCCARTESIANPOINT ((-500.,500.,0.));
#1205= IFCCARTESIANPOINT ((-500.,-500.,2000.));
#1206= IFCCARTESIANPOINT ((500.,-500.,2000.));
#1207= IFCCARTESIANPOINT ((500.,500.,2000.));
#1208= IFCCARTESIANPOINT ((-500.,500.,2000.));

// #1020是Representation 的属性值,表示该长方体采用边界表示(Brep),边界定义在#1021中。

// #1022 表示的壳(shell)由6个面及它们的边界构成,分别为:#1110, #1120, #1130, #1140, #1150, #1160。

// #1110表示面的外边界由通过四个点的多边形组成。

// #1201-#1205表示空间内的6个点。

    #1020是Representation 的属性值,表示该长方体采用边界表示(Brep),边界定义在#1021中。

    #1022 表示的壳(shell)由6个面及它们的边界构成,分别为:#1110, #1120, #1130, #1140, #1150, #1160。

    #1110表示面的外边界由通过四个点的多边形组成。

    #1201-#1205表示空间内的6个点。

5、 曲面细分(Tessellation)

 三维模型由三角网格组合而成。

 5.1 IFC文件定义

#1010= IFCPRODUCTDEFINITIONSHAPE ($,$,(#1020));
#1020= IFCSHAPEREPRESENTATION (#202,'Body','Tessellation',(#1021));

#1021= IFCTRIANGULATEDFACESET (#1022,$,.T.,((1,6,5),(1,2,6),(6,2,7),(7,2,3),(7,8,6),(6,8,5),(5,8,1),(1,8,4),(4,2,1),(2,4,3),(4,8,7),(7,3,4)),$);
#1022= IFCCARTESIANPOINTLIST3D (((-500.,-500.,0.),(500.,-500.,0.),(500.,500.,0.),(-500.,500.,0.), (-500.,-500.,2000.),(500.,-500.,2000.),(500.,500.,2000.),(-500.,500.,2000.)));

// #1020是Representation 的属性值,表示该长方体采用'Tessellation', 定义在#1021中。

// #1021表示构成模型的三角形网格的集合,每个三角网格由三个坐标点形成的线段构成,坐标点通过索引#1022。

// #1022表示点的有序集合。

 #1020是Representation 的属性值,表示该长方体采用'Tessellation', 定义在#1021中。

 #1021表示构成模型的三角形网格的集合,每个三角网格由三个坐标点形成的线段构成,坐标点通过索引#1022。

 #1022表示点的有序集合。

© 版权声明
THE END
喜欢就支持一下吧
点赞829 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容