8.9.3.20 IfcCompositeCurve(复合曲线)
8.9.3.20.1 语义定义(Semantic definition)
IfcCompositeCurve 是由曲线段组成的连续曲线。
图1展示了复合曲线的一个示例。

考虑一个包含直线段和圆弧段的 IfcCompositeCurve。直线的参数化应为:
- IfcPolyline,起点= 0.,0.,终点= 0.,1.,SameSense= TRUE,参数长度 = 1。
圆弧的参数化应为:
- IfcTrimmedCurve,起点= 180',终点= 90',SameSense= FALSE,参数长度 = 90。
那么复合曲线的参数化为:
- IfcCompositeCurve,0. ≤ T ≤ 1.(直线段)和 1. ≤ T ≤ 91.(圆弧段),参数长度 = 91。
其中 l~k~ 是第 k^th^ 段基础曲线的参数长度(即最大和最小参数值之间的差)。让 T 表示复合曲线的参数。那么,如果第 i 段不是重新参数化的复合曲线段,T 与第 i 段的参数 t~i~ 相关;t~i0~__≤__t~i~__≤__t~i1~;通过以下方程:
Figure 8.9.3.20.B 如果 Segments[i].SameSense = TRUE; 或通过以下方程:
Figure 8.9.3.20.C 如果 Segments[i].SameSense = FALSE; 如果 segments[i] 是重新参数化的复合曲线段类型,
Figure 8.9.3.20.D 其中 τ 在重新参数化的复合曲线段中定义(参见 IfcReparameterisedCompositeCurveSegment)。
Figure 8.9.3.20.E
非正式命题
- 每个段的 SameSense 属性正确指定了组成曲线的方向。当按照 SameSense 指示的方向遍历时,各段应端到端连接。
8.9.3.20.2 实体继承(Entity inheritance)
-
- IfcCurve
- IfcAnnotationFillArea
- IfcBooleanResult
- IfcBoundingBox
- IfcCartesianPointList
- IfcCartesianTransformationOperator
- IfcCsgPrimitive3D
- IfcDirection
- IfcFaceBasedSurfaceModel
- IfcFillAreaStyleHatching
- IfcFillAreaStyleTiles
- IfcGeometricSet
- IfcHalfSpaceSolid
- IfcLightSource
- IfcPlacement
- IfcPlanarExtent
- IfcPoint
- IfcSectionedSpine
- IfcSegment
- IfcShellBasedSurfaceModel
- IfcSolidModel
- IfcSurface
- IfcTessellatedItem
- IfcTextLiteral
- IfcVector
8.9.3.20.3 特性(Attributes)
| # | 特性(Attributes) | 类型 | 描述 |
|---|---|---|---|
| IfcRepresentationItem (2) | |||
| LayerAssignment | SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems |
将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentation 的 Items 列表中的 LayerAssignments。 |
|
| StyledByItem | SET [0:1] OF IfcStyledItem FOR Item |
引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。 |
|
| IfcCurve (1) | |||
| * | Dim | IfcDimensionCount |
此属性是形式化派生的
此抽象类的空间维度,所有子类(如 IfcLine、IfcConic 和 IfcBoundedCurve)的定义各不相同。 |
| 点击显示 3 个隐藏的继承特性 点击隐藏 3 个继承特性 | |||
| IfcCompositeCurve (4) | |||
| 1 | Segments | LIST [1:?] OF IfcSegment |
组成的有界曲线、它们的过渡和方向。最后一个段的过渡属性定义了最后一个段的结束和第一个段的开始之间的过渡;此过渡属性可以取不连续值,表示开放曲线。
|
| 2 | SelfIntersect | IfcLogical |
指示曲线是否自相交;这仅为信息用途。 |
| * | NSegments | IfcInteger |
此属性是形式化派生的
组成曲线的数量。 |
| * | ClosedCurve | IfcLogical |
此属性是形式化派生的
指示曲线是否闭合;这从最后一个段的过渡代码派生。 |
8.9.3.20.4 形式化命题(Formal propositions)
| 名称 | 描述 |
|---|---|
| CurveContinuous |
除了开放曲线的最后一个代码外,不应有任何过渡代码为不连续。 |
|
|
| SameDim |
确保曲线中使用的所有段具有相同的维度。 |
|
|
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;
其中 l~k~ 是第 k^th^ 段基础曲线的参数长度(即最大和最小参数值之间的差)。让 T 表示复合曲线的参数。那么,如果第 i 段不是重新参数化的复合曲线段,T 与第 i 段的参数 t~i~ 相关;t~i0~__≤__t~i~__≤__t~i1~;通过以下方程:
如果 Segments[i].SameSense = TRUE;
或通过以下方程:
如果 Segments[i].SameSense = FALSE;
如果 segments[i] 是重新参数化的复合曲线段类型,
其中 τ 在重新参数化的复合曲线段中定义(参见 IfcReparameterisedCompositeCurveSegment)。