#### IfcCompositeCurve

Natural language names

##### Semantic definitions at the entity

Entity definition

Definition from ISO/CD 10303-42:1992: A composite curve (IfcCompositeCurve) is a collection of curves joined end-to-end. The individual segments of the curve are themselves defined as composite curve segments. The parameterization of the composite curve is an accumulation of the parametric ranges of the referenced bounded curves. The first segment is parameterized from 0 to l1, and, for i ³ 2, the ith segment is parameterized from

where lk is the parametric length (i.e., difference between maximum and minimum parameter values) of the curve underlying the kth segment.

> NOTE Corresponding STEP entity: composite_curve, please refer to ISO/IS 10303-42:1994, p. 56 for the final definition of the formal standard. The WR2 is added to ensure consistent Dim at all segments.

> HISTORY New class in IFC Release 1.0

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.

Attribute definitions

# | Attribute | Type | Cardinality | Description | A
--- | --- | --- | --- | --- | ---
1 | Segments | IfcCompositeCurveSegment | L[1:?] | The component bounded curves, their transitions and senses. The transition attribute for the last segment defines the transition between the end of the last segment and the start of the first; this transition attribute may take the value discontinuous, which indicates an open curve. | X
2 | SelfIntersect | LOGICAL | [1:1] | Indication of whether the curve intersects itself or not; this is for information only. | X
| NSegments :=SIZEOF(Segments) | INTEGER | [1:1] | The number of component curves. | X
| ClosedCurve :=Segments[NSegments].Transition <> Discontinuous | LOGICAL | [1:1] | Indication whether the curve is closed or not; this is derived from the transition code of the last segment. | X

Formal Propositions

Rule | Description
--- | ---
WR41 | No transition code should be Discontinuous, except for the last code of an open curve.
WR42 | Ensures, that all segments used in the curve have the same dimensionality.

##### Inherited definitions from supertypes

Entity inheritance
Attribute inheritance

# | Attribute | Type | Cardinality | Description | A
--- | --- | --- | --- | --- | ---
IfcRepresentationItem
IfcGeometricRepresentationItem
IfcCurve
| Dim :=IfcCurveDim(SELF) | IfcDimensionCount | [1:1] | The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. | X
IfcBoundedCurve
IfcCompositeCurve
1 | Segments | IfcCompositeCurveSegment | L[1:?] | The component bounded curves, their transitions and senses. The transition attribute for the last segment defines the transition between the end of the last segment and the start of the first; this transition attribute may take the value discontinuous, which indicates an open curve. | X
2 | SelfIntersect | LOGICAL | [1:1] | Indication of whether the curve intersects itself or not; this is for information only. | X
| NSegments :=SIZEOF(Segments) | INTEGER | [1:1] | The number of component curves. | X
| ClosedCurve :=Segments[NSegments].Transition <> Discontinuous | LOGICAL | [1:1] | Indication whether the curve is closed or not; this is derived from the transition code of the last segment. | X

##### Formal representations

XSD Specification
`<xs:element name="IfcCompositeCurve" type="ifc:IfcCompositeCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcCompositeCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="Segments">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCompositeCurveSegment" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCompositeCurveSegment"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SelfIntersect" type="ifc:logical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
`
EXPRESS Specification
`ENTITY IfcCompositeCurve
SUBTYPE OF (IfcBoundedCurve);
Segments : LIST [1:?] OF IfcCompositeCurveSegment;
SelfIntersect : LOGICAL;
DERIVE
NSegments : INTEGER := SIZEOF(Segments);
ClosedCurve : LOGICAL := Segments[NSegments].Transition <> Discontinuous;
WHERE
WR41 : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0));
WR42 : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0;
END_ENTITY;

EXPRESS-G diagram

`

Link to this page