8.9.3.35 IfcIndexedPolyCurve
8.9.3.35.1 Semantic definition
The IfcIndexedPolyCurve is a bounded curve with only linear and circular arc segments defined by a Cartesian point list and an optional list of segments, providing indices into the Cartesian point list. In the case that the list of Segments is not provided, all points in the IfcCartesianPointList are connected by straight line segments in the order they appear in the IfcCartesianPointList.
In the case that the list of Segments is provided, it is interpreted as such:
 Segment of type IfcLineIndex: The first index is the start point of the poly line segment, the last index is the end point of the poly line segment. If more than two indices are included, then all intermediate indices define intermediate points of the polyline connected in the order of appearance of the indices;
 Segment of type IfcArcIndex: The first index is the start point of the circular arc, the second index is a point on arc, the third index is the end point of the circular arc. The three points shall not be colinear. In case that this informal proposition is not maintained, the arc segment shall be treated as a polyline segment.
The IfcIndexedPolyCurve represents an open or a closed curve depending on the following condition:
 In the case that the list of Segments is provided: If the last index of the last Segment and the first index of the first Segment are identical, then the poly curve is a closed curve, otherwise it is an open curve.
 In the case that the list of Segments is not provided: If the first and the last Cartesian point in the Cartesian point list are identical, then the poly curve is a closed curve, otherwise it is an open curve.
Informal Propositions
 Any two consecutive points of the IfcIndexedPolyCurve shall not be coincident after taking the Precision factor into account, given by the applicable IfcGeometricRepresentationContext.
 The three points of any IfcArcIndex segment of the IfcIndexedPolyCurve shall not be colinear after taking the Precision factor into account, given by the applicable IfcGeometricRepresentationContext.
8.9.3.35.2 Entity inheritance

 IfcCurve
 IfcAnnotationFillArea
 IfcBooleanResult
 IfcBoundingBox
 IfcCartesianPointList
 IfcCartesianTransformationOperator
 IfcCsgPrimitive3D
 IfcDirection
 IfcFaceBasedSurfaceModel
 IfcFillAreaStyleHatching
 IfcFillAreaStyleTiles
 IfcGeometricSet
 IfcHalfSpaceSolid
 IfcLightSource
 IfcPlacement
 IfcPlanarExtent
 IfcPoint
 IfcSectionedSpine
 IfcSegment
 IfcShellBasedSurfaceModel
 IfcSolidModel
 IfcSurface
 IfcTessellatedItem
 IfcTextLiteral
 IfcVector
8.9.3.35.3 Attributes
#  Attribute  Type  Description 

IfcRepresentationItem (2)  
LayerAssignment  SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems 
Assignment of the representation item to a single or multiple layer(s). The LayerAssignments can override a LayerAssignments of the IfcRepresentation it is used within the list of Items. 

StyledByItem  SET [0:1] OF IfcStyledItem FOR Item 
Reference to the IfcStyledItem that provides presentation information to the representation, e.g. a curve style, including colour and thickness to a geometric curve. 

IfcCurve (1)  
*  Dim  IfcDimensionCount 
This attribute is formally derived.
The space dimensionality of this abstract class, defined differently for all subtypes, i.e. for IfcLine, IfcConic and IfcBoundedCurve. 
Click to show 3 hidden inherited attributes Click to hide 3 inherited attributes  
IfcIndexedPolyCurve (3)  
1  Points  IfcCartesianPointList 
A list of points, provided by a point list of either two, or three dimensions, that is used to define the poly curve. If the attribute Segments is not provided, the poly curve is generated as a poly line by connecting the points in the order of their appearance in the point list. If the attribute Segments is provided, the segments determine, how the points are to be used to create straight and circular arc segments. 
2  Segments  OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect 
List of straight line and circular arc segments, each providing a list of indices into the Cartesian point list. Indices should preserve consecutive connectivity between the segments, the start index of the next segment shall be identical with the end index of the previous segment. 
3  SelfIntersect  OPTIONAL IfcBoolean 
Indication of whether the curve intersects itself or not; this is for information only. 
8.9.3.35.4 Formal propositions
Name  Description 

Consecutive 
If a list of indexed segments is provided, they need to be consecutive, meaning that the last index of all, but the last, segments shall be identical with the first index of the next segment. 

8.9.3.35.5 Examples
8.9.3.35.6 Formal representation
ENTITY IfcIndexedPolyCurve
SUBTYPE OF (IfcBoundedCurve);
Points : IfcCartesianPointList;
Segments : OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect;
SelfIntersect : OPTIONAL IfcBoolean;
WHERE
Consecutive : NOT(EXISTS(Segments)) OR IfcConsecutiveSegments(Segments);
END_ENTITY;