# 8.9.3.20 IfcCompositeCurve

## 8.9.3.20.1 Semantic definition

An IfcCompositeCurve is a continuous curve composed of curve segments.

Figure 8.9.3.20.A illustrates an example of a composite curve.

Consider an IfcCompositeCurve having line segment and an arc segment. The line should be parameterized:

• IfcPolyline with start= 0.,0. end= 0.,1., SameSense= TRUE, parametric length = 1.

The arch should be parameterized:

• IfcTrimmedCurve with start= 180', end= 90', SameSense= FALSE, parametric length = 90.

Then the parameterization of the composite curve is:

• IfcCompositeCurve with 0. ≤ T ≤ 1. (line segment) and 1. ≤ T ≤ 91. (arc segment), parametric length = 91.

Informal Propositions

1. The SameSense attribute of each segment correctly specifies the senses of the component curves. When traversed in the direction indicated by SameSense, the segments shall join end-to-end.

## 8.9.3.20.5 Examples

Curve Parameters In Degrees

Linear Placement Of Signal

Fixed Reference Swept Area Solid

Sectioned Solid Horizontal

## 8.9.3.20.6 Formal representation

ENTITY IfcCompositeCurve
SUPERTYPE OF (ONEOF
(IfcCompositeCurveOnSurface
,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.Dim)) = 0;
END_ENTITY;