Definition from ISO/CD 10303-42:1992: An IfcPolyline is a bounded curve of n -1 linear segments, defined by a list of n points, P1, P2 ... Pn. The curve is parameterized as follows:
for 1 £ i £ n - 1, where i -1 £ u £ i and with parametric range of 0 £ u £ n - 1.
NOTE Corresponding STEP entity: polyline. Please refer to ISO/IS 10303-42:1994, p. 45 for the final definition of the formal standard.
HISTORY New class in IFC Release 1.0
| # | Attribute | Type | Cardinality | Description | A | 
|---|---|---|---|---|---|
| 1 | Points | IfcCartesianPoint | L[2:?] | The points defining the polyline. | X | 
| Rule | Description | 
|---|---|
| WR41 | The space dimensionality of all Points shall be the same. | 
| # | 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 | |||||
| IfcPolyline | |||||
| 1 | Points | IfcCartesianPoint | L[2:?] | The points defining the polyline. | X | 
 <xs:element name="IfcPolyline" type="ifc:IfcPolyline" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
 <xs:complexType name="IfcPolyline">
  <xs:complexContent>
   <xs:extension base="ifc:IfcBoundedCurve">
    <xs:sequence>
     <xs:element name="Points">
      <xs:complexType>
       <xs:sequence>
        <xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
       </xs:sequence>
       <xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
       <xs:attribute ref="ifc:cType" fixed="list"/>
       <xs:attribute ref="ifc:arraySize" use="optional"/>
      </xs:complexType>
     </xs:element>
    </xs:sequence>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>
ENTITY IfcPolyline
 SUBTYPE OF (IfcBoundedCurve);
  Points : LIST [2:?] OF IfcCartesianPoint;
 WHERE
  WR41 : SIZEOF(QUERY(Temp <* Points | Temp.Dim <> Points[1].Dim)) = 0;
END_ENTITY;