IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.9.3.35 IfcIndexedPolyCurve(索引多段线)

RV ⓘ
AbV ⓘ

8.9.3.35.1 语义定义(Semantic definition)

IfcIndexedPolyCurve 是一种有界曲线,仅包含直线段和圆弧段,通过笛卡尔点列表和可选的线段列表定义,线段列表提供指向笛卡尔点列表的索引。如果未提供 Segments 列表,则 IfcCartesianPointList 中的所有点按照它们在 IfcCartesianPointList 中出现的顺序通过直线段连接。

如果提供了 Segments 列表,则按以下方式解释:

  • IfcLineIndex 类型的线段:第一个索引是多段线段的起点,最后一个索引是多段线段的终点。如果包含两个以上的索引,则所有中间索引按照索引出现的顺序定义多段线的中间点;
  • IfcArcIndex 类型的线段:第一个索引是圆弧的起点,第二个索引是圆弧上的点,第三个索引是圆弧的终点。这三个点不应共线。如果未满足此非正式命题,则圆弧段应被视为多段线段。
带圆弧的多段线示例
图2 — 具有直线段和圆弧段的有界开放 _IfcIndexedPolyCurve_
多段线示例
图2 — 仅包含直线段的有界开放 _IfcIndexedPolyCurve_

IfcIndexedPolyCurve 表示开放或闭合曲线,具体取决于以下条件:

  • 如果提供了 Segments 列表:如果最后一个 Segment 的最后一个索引与第一个 Segment 的第一个索引相同,则多段线为闭合曲线,否则为开放曲线。
  • 如果未提供 Segments 列表:如果笛卡尔点列表中的第一个和最后一个笛卡尔点相同,则多段线为闭合曲线,否则为开放曲线。

非正式命题

  1. 在考虑适用的 IfcGeometricRepresentationContext 给出的 Precision 因子后,IfcIndexedPolyCurve 的任何两个连续点不应重合。
  2. 在考虑适用的 IfcGeometricRepresentationContext 给出的 Precision 因子后,IfcIndexedPolyCurve 的任何 IfcArcIndex 线段的三个点不应共线。

8.9.3.35.2 实体继承(Entity inheritance)

8.9.3.35.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,例如,为几何曲线提供曲线样式,包括颜色和厚度。

IfcCurve (1)
* Dim IfcDimensionCount

此属性是形式化派生的

IfcCurveDim(SELF)

此抽象类的空间维度,所有子类(如 IfcLineIfcConicIfcBoundedCurve)的定义各不相同。

点击显示 3 个隐藏的继承特性 点击隐藏 3 个继承特性
IfcIndexedPolyCurve (3)
1 Points IfcCartesianPointList

由二维或三维点列表提供的点列表,用于定义多段线。如果未提供属性 Segments,则通过按点列表中出现的顺序连接点来生成多段线。如果提供了属性 Segments,则线段确定如何使用点创建直线段和圆弧段。

2 Segments OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect

直线段和圆弧段的列表,每个段提供指向笛卡尔点列表的索引列表。索引应保持线段之间的连续连接性,下一个线段的起始索引应与前一个线段的结束索引相同。

3 SelfIntersect OPTIONAL IfcBoolean

指示曲线是否自相交;这仅用于提供信息。

表 8.9.3.35.A

8.9.3.35.4 形式化命题(Formal propositions)

名称 描述
Consecutive

如果提供了索引线段列表,它们需要是连续的,这意味着除最后一个线段外的所有线段的最后一个索引应与下一个线段的第一个索引相同。

NOT(EXISTS(Segments)) OR IfcConsecutiveSegments(Segments)
表 8.9.3.35.C

8.9.3.35.5 形式化表示(Formal representation)

ENTITY IfcIndexedPolyCurve
 SUBTYPE OF (IfcBoundedCurve);
	Points : IfcCartesianPointList;
	Segments : OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect;
	SelfIntersect : OPTIONAL IfcBoolean;
 WHERE
	Consecutive : NOT(EXISTS(Segments)) OR IfcConsecutiveSegments(Segments);
END_ENTITY;

8.9.3.35.6 参考文献