IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.9.3.20 IfcCompositeCurve(复合曲线)

RV ⓘ
AbV ⓘ

8.9.3.20.1 语义定义(Semantic definition)

IfcCompositeCurve 是由曲线段组成的连续曲线。

图1展示了复合曲线的一个示例。

formula
图1 — 复合曲线

考虑一个包含直线段和圆弧段的 IfcCompositeCurve。直线的参数化应为:

  • IfcPolyline,起点= 0.,0.,终点= 0.,1.,SameSense= TRUE,参数长度 = 1。

圆弧的参数化应为:

  • IfcTrimmedCurve,起点= 180',终点= 90',SameSense= FALSE,参数长度 = 90。

那么复合曲线的参数化为:

  • IfcCompositeCurve,0. ≤ T ≤ 1.(直线段)和 1. ≤ T ≤ 91.(圆弧段),参数长度 = 91。
formula 其中 l~k~ 是第 k^th^ 段基础曲线的参数长度(即最大和最小参数值之间的差)。让 T 表示复合曲线的参数。那么,如果第 i 段不是重新参数化的复合曲线段,T 与第 i 段的参数 t~i~ 相关;t~i0~__≤__t~i~__≤__t~i1~;通过以下方程:
Figure 8.9.3.20.B
formula 如果 Segments[i].SameSense = TRUE; 或通过以下方程:
Figure 8.9.3.20.C
formula 如果 Segments[i].SameSense = FALSE; 如果 segments[i] 是重新参数化的复合曲线段类型,
Figure 8.9.3.20.D
formula 其中 τ 在重新参数化的复合曲线段中定义(参见 IfcReparameterisedCompositeCurveSegment)。
Figure 8.9.3.20.E

非正式命题

  1. 每个段的 SameSense 属性正确指定了组成曲线的方向。当按照 SameSense 指示的方向遍历时,各段应端到端连接。

8.9.3.20.2 实体继承(Entity inheritance)

8.9.3.20.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 个继承特性
IfcCompositeCurve (4)
1 Segments LIST [1:?] OF IfcSegment

组成的有界曲线、它们的过渡和方向。最后一个段的过渡属性定义了最后一个段的结束和第一个段的开始之间的过渡;此过渡属性可以取不连续值,表示开放曲线。

NOTE :对于 IfcGradientCurveIfcSegmentedReferenceCurve,段定义了段开始和段结束之间的插值。

2 SelfIntersect IfcLogical

指示曲线是否自相交;这仅为信息用途。

* NSegments IfcInteger

此属性是形式化派生的

SIZEOF(Segments)

组成曲线的数量。

* ClosedCurve IfcLogical

此属性是形式化派生的

Segments[NSegments].Transition <> Discontinuous

指示曲线是否闭合;这从最后一个段的过渡代码派生。

表 8.9.3.20.F

8.9.3.20.4 形式化命题(Formal propositions)

名称 描述
CurveContinuous

除了开放曲线的最后一个代码外,不应有任何过渡代码为不连续。

((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0))
SameDim

确保曲线中使用的所有段具有相同的维度。

SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0
表 8.9.3.20.G

8.9.3.20.5 形式化表示(Formal representation)

ENTITY IfcCompositeCurve
 SUPERTYPE OF (ONEOF
	(IfcCompositeCurveOnSurface
	,IfcGradientCurve
	,IfcSegmentedReferenceCurve))
 SUBTYPE OF (IfcBoundedCurve);
	Segments : LIST [1:?] OF IfcSegment;
	SelfIntersect : IfcLogical;
 DERIVE
	 NSegments : IfcInteger := SIZEOF(Segments);
	 ClosedCurve : IfcLogical := Segments[NSegments].Transition <> Discontinuous;
 WHERE
	CurveContinuous : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0));
	SameDim : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0;
END_ENTITY;

8.9.3.20.6 参考文献