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
#AttributeTypeCardinalityDescription A
1SegmentsIfcCompositeCurveSegmentL[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
2SelfIntersectLOGICAL[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
RuleDescription
WR41No transition code should be Discontinuous, except for the last code of an open curve.
WR42Ensures, that all segments used in the curve have the same dimensionality.
Inherited definitions from supertypes
Entity inheritance IfcBoundedCurve IfcCurve IfcGeometricRepresentationItem IfcRepresentationItem
Attribute inheritance
#AttributeTypeCardinalityDescriptionA
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
1SegmentsIfcCompositeCurveSegmentL[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
2SelfIntersectLOGICAL[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;

Link to EXPRESS-G diagram EXPRESS-G diagram

Link to this page  Link to this page