IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.8.3.47 IfcTriangulatedFaceSet(三角化面集)

RV ⓘ
AbV ⓘ

8.8.3.47.1 语义定义(Semantic definition)

IfcTriangulatedFaceSet 是一种三角化面集,其中所有面均由三角形边界构成。这些面通过由三个笛卡尔点定义的隐式折线构建。根据继承属性 Closed 的值,IfcTriangulatedFaceSet 实例表示:

  • 如果为 TRUE,表示边界表示(或 B-rep);
  • 如果为 FALSE,表示基于面的表面表示。

每个点的坐标通过二维列表 CoordIndex 提供的有序笛卡尔点列表的基于1的索引来提供,其中:

  • 二维列表的第一个维度对应三角形面的列表;
  • 二维列表的第二个维度恰好提供三个索引。每个索引指向作为三角形顶点的笛卡尔点。

根据 PnIndex 的提供情况,索引要么直接指向在超类型 IfcTessellatedFaceSet 中定义的 Coordinates 所引用的 IfcCartesianPointList3D,要么指向 PnIndex,其中该位置的整数值提供 IfcCartesianPointList3D 内坐标值的位置。有关点索引的处理,请参见图1。

IfcTriangulatedFaceSet_01
图1 — _PnIndex_ 的使用

有关不使用(默认)和使用 PnIndexIfcTriangulatedFaceSet 的使用,请参见图2。

IfcTriangulatedFaceSet_02
图2 — 三角化面集

可选地,可以提供法线。仅支持每个向量的法线,当三角形对应三个顶点的三个法线不共线于三角形面的法线时,允许视觉上弯曲的三角形。如果它们相同,则应省略法线。

注意 在具有弯曲三角形面的体表示情况下,导出此三角形上下文中所有三个顶点的不同法线,以描述平滑可视化的曲率。在没有曲率的三角形面情况下,三个基于顶点的法线是相同的,并且总是可以从面计算得出。因此,仅应在支持通过三角形曲率进行平滑可视化时导出顶点。在刻面表示情况下,不应导出顶点。

法线由二维列表 Normals 提供,其中:

  • 二维列表的第一个维度对应三角形面的顶点索引列表;
  • 二维列表的第二个维度恰好提供三个实数值,以确定此三角形顶点处法线的方向。

CoordIndex 中的索引指向 Normals 列表。CoordIndex 的索引同时应用于点和法线,要么直接应用,要么通过 PnIndex 应用。有关法线的处理,请参见图3。

IfcTriangulatedFaceSet_02
图3 — 带法线的三角化面集

注意 使用对应的点和法线列表允许仅使用单个索引列表指向两者,但代价是顶点集合不唯一。

图4显示了未带注释的 IfcTriangulatedFaceSet 的使用。IfcTriangulatedFaceSet 的图表表示索引和索引指向的有序列表。索引从1开始(索引为1到N),如果 CoordIndex 中的最大索引为N,则 IfcCartesianPointList 应有N个3:3坐标的列表。

IfcTriangulatedFaceSet_Example-01
图4 — 三角化面集几何

图4显示了一个由以下表示的 IfcTriangulatedFaceSet

CoordIndex:
((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))

IfcCartesianPointList3D:
((0.,0.,0.), (1.,0.,0.), (1.,1.,0.), (0.,1.,0.), (0.,0.,2.), (1.,0.,2.), (1.,1.,2.), (0.,1.,2.))

注意 IfcTriangulatedFaceSet 的定义基于 ISO/IEC 19775-1 中定义的 indexedFaceSetindexedTriangleSetPnIndex 的使用已从 ISO-10303-42 中定义的 triangulated_surface_set 采用。

非正式命题

  1. 如果 Closed = TRUE,应满足与刻面边界表示相同的拓扑约束。特别是:
  2. 每个面应是唯一的;
  3. 每条边应恰好被两个面边界使用;
  4. 三角化面集边界上每个点的拓扑法线应指向实体材料的外部。

8.8.3.47.2 实体继承(Entity inheritance)

8.8.3.47.3 特性(Attributes)

# 特性(Attributes) 类型 描述
IfcRepresentationItem (2)
LayerAssignment SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems

将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentationItems 列表中的 LayerAssignments

StyledByItem SET [0:1] OF IfcStyledItem FOR Item

引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。

IfcTessellatedFaceSet (4)
1 Coordinates IfcCartesianPointList3D

IfcTessellatedFaceSet 的子类型中定义的坐标索引使用的有序笛卡尔点列表。

HasColours SET [0:1] OF IfcIndexedColourMap FOR MappedTo

引用索引颜色映射,为 IfcTessellatedFaceSet 子类型的面提供相应的颜色 RGB 值。

HasTextures SET [0:?] OF IfcIndexedTextureMap FOR MappedTo

引用索引纹理映射,为 IfcTessellatedFaceSet 子类型的面边界顶点提供相应的纹理坐标。

* Dim IfcDimensionCount

此属性是形式化派生的

3

此几何表示项的空间维度,始终为 3。

点击显示 6 个隐藏的继承特性 点击隐藏 6 个继承特性
IfcTriangulatedFaceSet (5)
2 Normals OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcParameterValue

法线的三个方向的有序列表。这是一个由三个参数值提供的方向二维列表。 * 第一个维度对应 Coordindex 的顶点索引 * 第二个维度恰好有三个值,[1] x方向,[2] y方向和[3] z方向

3 Closed OPTIONAL IfcBoolean

指示面集是封闭壳(TRUE)还是开放壳(FALSE)。如果省略,则无法断言此类信息。

4 CoordIndex LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger

基于索引的三角形的二维列表,其中: * 第一个维度表示三角形(从1到N) * 第二个维度恰好有三个值,表示三个顶点点的索引(从1到3)。

注意 顶点的坐标由 SELF\IfcTessellatedFaceSet.Coordinates.CoordList 的索引列表提供。

5 PnIndex OPTIONAL LIST [1:?] OF IfcPositiveInteger

定义 IfcCartesianPointList3D 中位置的整数列表,以获取 CoordIndex 内索引的点坐标。如果未提供 PnIndex,则索引直接指向 IfcCartesianPointList3D

* NumberOfTriangles IfcInteger

此属性是形式化派生的

SIZEOF(CoordIndex)

用于此三角化的三角形数量的派生值。

表 8.8.3.47.A

8.8.3.47.4 形式化表示(Formal representation)

ENTITY IfcTriangulatedFaceSet
 SUPERTYPE OF (ONEOF
	(IfcTriangulatedIrregularNetwork))
 SUBTYPE OF (IfcTessellatedFaceSet);
	Normals : OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcParameterValue;
	Closed : OPTIONAL IfcBoolean;
	CoordIndex : LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger;
	PnIndex : OPTIONAL LIST [1:?] OF IfcPositiveInteger;
 DERIVE
	 NumberOfTriangles : IfcInteger := SIZEOF(CoordIndex);
END_ENTITY;

8.8.3.47.5 参考文献