Navigation

IfcCompositeCurve

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.

EXPRESS specification:

ENTITY IfcCompositeCurve
SUPERTYPE OF (Ifc2DCompositeCurve)
SUBTYPE OF ( IfcBoundedCurve);
Segments  :  LIST [1:?] OF IfcCompositeCurveSegment;
SelfIntersect  :  LOGICAL;
DERIVE
NSegments  :  INTEGER :=  SIZEOF(Segments);
ClosedCurve  :  LOGICAL :=  Segments[NSegments].Transition <> Discontinuous;
WHERE
WR1  :  ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0));
WR2  :  SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0;
END_ENTITY;

Attribute definitions:

Segments  :  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.
SelfIntersect  :  Indication of whether the curve intersects itself or not; this is for information only.
NSegments  :  The number of component curves.
ClosedCurve  :  Indication whether the curve is closed or not; this is derived from the transition code of the last segment.

Formal Propositions:

WR1  :  No transition code should be Discontinuous, except for the last code of an open curve.
WR2  :  Ensures, that all segments used in the curve have the same dimensionality.

References (3):

Name Type Referred through Express-G
Ifc2DCompositeCurve Entity
Supertype
Diagram 6
IfcBoundedCurve Entity
Subtype
Diagram 5
IfcCompositeCurveSegment Entity
Attribute 'UsingCurves'
Diagram 6

Inheritance graph

ENTITY IfcCompositeCurve;
ENTITY IfcRepresentationItem;
ENTITY IfcGeometricRepresentationItem;
ENTITY IfcCurve;
DERIVE
Dim  :  IfcDimensionCount :=  IfcCurveDim(SELF);
ENTITY IfcBoundedCurve;
ENTITY IfcCompositeCurve;
Segments  :  LIST [1:?] OF IfcCompositeCurveSegment;
SelfIntersect  :  LOGICAL;
DERIVE
NSegments  :  INTEGER :=  SIZEOF(Segments);
ClosedCurve  :  LOGICAL :=  Segments[NSegments].Transition <> Discontinuous;
END_ENTITY;